-
Notifications
You must be signed in to change notification settings - Fork 464
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Roadmap to Automerge 1.0 #300
Comments
Thx all contributors to this huge effort. We are tracking for the Jupyter RTC initiative the branches with a wasm javascript client (generated from rust) and a python server (also generated from script). It looks like we are happy with having rust the single source of truth and generating binding in various languages (javascript, python...). Looking forward to get this merged with as many features as possible. I would say that you could target a Automerge 1.0alpha0 even without all performance improvement. I guess having aligned repository with the master branches is for now the best improvement we could think to. |
This is fantastic, we're so close! One thing I've been thinking a lot about is interoperability. I think having a formal specification will be an enormous step forward for this but I wonder if it would also be worth having automated compliance tests. This has worked well for other standardisation efforts (e.g the Acid test). I would normally suggest that this could be done after the 1.0 release but here it might actually be convenient to do it as part of the fuzz testing task. If we write the fuzz tests in an implementation independent manner then they can function as compliance tests. |
Yes, I think we can do that. But I do think we will want at least #290, #298 and full Rust-JS interop for a first alpha release, otherwise those will be the first things that people get stuck with.
Yes, this is very important. I made a start with some JS-wasm interop tests in 3fef7e2 but more are needed. The fuzzer should be able to run against both the JS and the wasm backend, so that should help. The process of writing the format spec will probably also suggest test cases. |
Exciting! As someone who has an implementation of a network protocol for Automerge, my question is how soon can I access something to test the hash chaining changes? Is that available in the performance branch already, or should I watch #290 ? |
@skokenes The hash chaining is already implemented on the performance branch and baked into the binary encoding for changes and documents. If you want to see the hashes, you can use |
Okay, I said in January that I hoped to ship a 1.0 preview release in the first quarter of 2021 — which hasn't quite happened, as it's now May. However, we've now completed all the blockers for the preview release and so I'm going to close this issue. There are still a few things to do before we can ship a stable 1.0 release, which are mentioned above on this issue, and which we are tracking in the 1.0 milestone. In particular, we need a data conversion tool from the old to the new data format, we need more and better documentation, and of course we need to find any bugs that are found. |
commit e1f8d769f44b48cdeb03855ac9e2b223fb229187 Author: Orion Henry <[email protected]> Date: Thu Mar 10 08:53:07 2022 -0500 update authors commit 3e5525f1a6541664e5e30ad179b2f217ba7b7422 Merge: f4ba1770 1c21abc5 Author: Orion Henry <[email protected]> Date: Wed Mar 9 14:36:29 2022 -0500 Merge pull request automerge#304 from jkankiewicz/c_api_exp Fix "fmt" workflow step violations commit 1c21abc5a37941ce189ff48d994c1ce3dda4827f Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 9 11:13:01 2022 -0800 Fix CMake and Rust code formatting issues. commit f4ba1770a96c5200ae124706dffbab327a628c23 Merge: bf1ae609 f41b30d1 Author: Orion Henry <[email protected]> Date: Wed Mar 9 12:05:58 2022 -0500 Merge pull request automerge#300 from jkankiewicz/c_api_exp Add unit test suites for the `AMlistSet*` and `AMmapSet*` functions commit f41b30d118ef60965239a02afddbbfb14dc4392f Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 22:08:36 2022 -0800 Added a brief description of the `AmObjType` enum. Added the `AmStatus` enum to the enum docs page. commit af7386a482d2cb9cee2d188ef443498ddab40ddb Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 21:50:52 2022 -0800 Added a unit test suite for the `AMlistSet*` functions. commit 1eb70c6eee846b912806d058a43c6e04a9184a62 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 21:42:42 2022 -0800 Added the rest of the `AMlistSet*` functions. Started the enum tags at `1` so they won't be inherently false. Alphabetized enum tags for the docs. Improved the docs. commit 6489cba13b49656aa0704d329a90c6e7e4a809e1 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 18:01:46 2022 -0800 Alphabetize functions in the docs. commit 74c245b82d49971094d731ef4442b9af14e53c15 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 07:54:25 2022 -0800 Fix a typo in `AMmapSetObject()`'s documentation. commit b2a879ba4e23c884f2bf43d77e950c1ad8a34c7e Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 06:24:22 2022 -0800 Append missing EOF linefeed. commit fbf0f29b66ad9109081490754872d149d5575ac6 Merge: c56d54b5 bf1ae609 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:08:12 2022 -0800 Merge branch 'c_api_exp' of https://github.com/automerge/automerge-rs into c_api_exp commit c56d54b565451c0fe65e86b658e094178579fd25 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:07:11 2022 -0800 Added unit test cases for the new `AMmapSet*` functions by @orionz. Moved the unit test cases for the `AMmapSet*` functions into their own unit test suite. commit 7e59b5576034bc0404fe793758088fea2eae6330 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:01:47 2022 -0800 Edited the Doxygen documentation. commit bf1ae6091318d005c49407e10a20f4822e41adc1 Author: Orion Henry <[email protected]> Date: Mon Mar 7 11:59:22 2022 -0500 fmt commit e82a7cc78e166cc05e90138df040cdcdb4d83c13 Merge: a44e69d2 965c2d56 Author: Orion Henry <[email protected]> Date: Mon Mar 7 11:55:32 2022 -0500 Merge pull request automerge#299 from jkankiewicz/c_api_exp Enable unit testing of the C API commit 965c2d56c32068d3af07705aff7d0a4386393004 Author: Jason Kankiewicz <[email protected]> Date: Mon Mar 7 06:37:36 2022 -0800 Enable unit testing of the C API. commit a44e69d2c72ff3e712c1109e3cf2f0d00f2af0c0 Author: Orion Henry <[email protected]> Date: Sun Mar 6 14:00:46 2022 -0500 remove datatype mapset commit 88153c44e767b47fa1bb0bdd0d4bc5d43f2b6a7a Merge: 41512e9c c6194e97 Author: Orion Henry <[email protected]> Date: Sun Mar 6 10:32:39 2022 -0500 Merge pull request automerge#298 from jkankiewicz/rebase_c_api_exp Rebase the "c_api_exp" branch on the "experiment" branch commit c6194e973235ac43bcdf97b19b0274653b2e6b99 Merge: a2d745c8 41512e9c Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 6 01:09:56 2022 -0800 Merge branch 'c_api_exp' into rebase_c_api_exp commit a2d745c8d9c649d444339dc5e1df733af0a5bfec Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 6 00:44:37 2022 -0800 Replace the `utils::import_value` function with the `utils::import_scalar` function. Exclude `# Safety` comments from the documentation. commit 0681e28b4063988fada6d632366b471996d6d66a Author: Orion Henry <[email protected]> Date: Thu Mar 3 16:04:17 2022 -0500 support new as_ref api commit 916e23fcc20aae9a27f17e9b98f267fac364d5bb Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:56:27 2022 -0500 fmt commit 71cd6a1f18796ab8f502d07d1d80784d1e3b9cd2 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:54:38 2022 -0500 lock data at 64 bit - no c_long commit e00bd4c20191e86b9f1bd11be2bab31e3a23fc97 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:27:55 2022 -0500 verbose commit 39d157c554a71e00978b1d9244e1c1cfbe7c24f3 Author: Orion Henry <[email protected]> Date: Thu Mar 3 14:56:23 2022 -0500 clippy cleanup commit 7f650fb8e0e7173c72d192c60506e46abb41f92f Author: Jason Kankiewicz <[email protected]> Date: Wed Feb 23 02:14:06 2022 -0800 Added Doxygen documentation generation. Renamed `AMDatatype` to `AmDataType`. Reorganized the `AmDataType` tags. Renamed `AMfree()` to `AMdestroy()`. Renamed `AMclone()` to `AMdup()`. commit b0b803eef8d07b5171b9ab736eae3e2f13d6158b Author: Orion Henry <[email protected]> Date: Tue Feb 22 11:30:42 2022 -0500 get simple test passing commit cab9017ffa369365afb73c37275063a0c174b12e Author: Orion Henry <[email protected]> Date: Wed Feb 9 15:50:44 2022 -0500 rework to return a queriable result commit a557e848f39d21b69d4b6c56434c1600b1cf6d94 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:38:00 2022 -0800 Add a CI step to run the CMake build of the C bindings for @alexjg. commit c8c0c72f3bfced414cc443255b6a912c56b9ecfc Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:09:58 2022 -0800 Add CMake instructions for @orionz. commit fb62c4b02a0971bf814272a58c500dd5a31e694a Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 23:28:54 2022 -0800 Add CMake support. commit 7bc3bb6850de84eff9ad5a66eed2363c12ad7738 Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 22:49:53 2022 -0800 Replace *intptr_t in C function signatures. commit 60395a2db04d37d549cd9b0e5178af5f52ceb5f3 Author: Orion Henry <[email protected]> Date: Sun Feb 6 18:59:19 2022 -0500 am_pop and am_pop_value commit b1e88047d22c4382aa58fc3fc337eb3d8a36140a Author: Orion Henry <[email protected]> Date: Thu Feb 3 19:43:36 2022 -0500 break the ground commit 41512e9c78a649186646bcaa5d78632724bd8403 Author: Orion Henry <[email protected]> Date: Thu Mar 3 16:04:17 2022 -0500 support new as_ref api commit bcee6a9623c0ce1289271df180368a81d50508d6 Merge: cf98f78d 9a89db3 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:58:19 2022 -0500 Merge remote-tracking branch 'origin/experiment' into c_api_exp commit cf98f78dd172f214d3f417913470956ff998d9d5 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:56:27 2022 -0500 fmt commit 3c1f449c5c024892658b37abbc74e19b746413e2 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:54:38 2022 -0500 lock data at 64 bit - no c_long commit 2c2ec0b0c5d74bbe950f629a701ea1209f8ad4b6 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:27:55 2022 -0500 verbose commit b72b9c989a60ca4bbcd7c47e1e6bf89356346a2f Author: Orion Henry <[email protected]> Date: Thu Mar 3 14:56:23 2022 -0500 clippy cleanup commit 3ba28f91ccb5a7499a5442804ffa91001b01a3ef Author: Jason Kankiewicz <[email protected]> Date: Wed Feb 23 02:14:06 2022 -0800 Added Doxygen documentation generation. Renamed `AMDatatype` to `AmDataType`. Reorganized the `AmDataType` tags. Renamed `AMfree()` to `AMdestroy()`. Renamed `AMclone()` to `AMdup()`. commit 8564e5b7531fb4e5194cf845b3d48e52a16827bd Author: Orion Henry <[email protected]> Date: Tue Feb 22 11:30:42 2022 -0500 get simple test passing commit 60835e6ae7361199e03225dd33a8aa9c4614a20e Author: Orion Henry <[email protected]> Date: Wed Feb 9 15:50:44 2022 -0500 rework to return a queriable result commit 89466d9e8c77b67b3526d56beb5f263aadb7fca0 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:38:00 2022 -0800 Add a CI step to run the CMake build of the C bindings for @alexjg. commit e2485bd5fda8b0e290038c579b2080faadbc5026 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:09:58 2022 -0800 Add CMake instructions for @orionz. commit b5cc7dd63dd76c816be1f23a0b91ba1f7327a32c Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 23:28:54 2022 -0800 Add CMake support. commit 685536f0cf9808b10af5efc9341f85acc2490fdf Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 22:49:53 2022 -0800 Replace *intptr_t in C function signatures. commit c1c6e7bb6615d168bcdad41f1621b17ff8ea7725 Author: Orion Henry <[email protected]> Date: Sun Feb 6 18:59:19 2022 -0500 am_pop and am_pop_value commit e68c8d347e5e45451b6b2193542b9f2bdaf283ce Author: Orion Henry <[email protected]> Date: Thu Feb 3 19:43:36 2022 -0500 break the ground
commit 97a36e728e43c9adbe21fd942a73472d0daa2e05 Author: Jason Kankiewicz <[email protected]> Date: Fri Apr 8 03:24:46 2022 -0600 Updated the unit test suites. commit 56e2beb946e61d3262f58953d4f2e27cfd4c13b0 Author: Jason Kankiewicz <[email protected]> Date: Fri Apr 8 03:22:30 2022 -0600 Tied the lifetime of an `AMobjId` struct to its owning `AMdoc` struct. commit e16c980b2eea39459b1b47045e2fbff69ad2965e Author: Jason Kankiewicz <[email protected]> Date: Fri Apr 8 03:21:26 2022 -0600 Reverted the `AMobjId` struct to being an opaque type. Added `AMobjId::new()`to fix a compilation error. Tied the lifetime of an `AMobjId` struct to its owning `AMdoc` struct. Added the `AMvalue::ChangeHash` variant. commit 7c769b2cfe041747565c95aeffef311b45a5a19e Author: Jason Kankiewicz <[email protected]> Date: Fri Apr 8 03:12:15 2022 -0600 Renamed the `AMobj` struct to `AMobjId` for clarity. Reverted the `AMobjId` struct to being an opaque type. Tied the lifetime of an `AMobjId` struct to its owning `AMdoc` struct. Renamed `AMcreate()` to `AMallocDoc()` for consistency with C's standard library functions. Renamed `AMdestroy()` to `AMfreeDoc()` for consistency with C's standard library functions. Renamed the `obj` function arguments to `obj_id` for clarity. Replaced the "set" verb in function names with the "put" verb for consistency iwth recent API changes. Renamed `AMclear()` to `AMfreeResult()` for consistency with C's standard library functions. Added `AMfreeObjId()` to enable dropping a persisted `AMojbId` struct. commit 8d1b3bfcf21485be833e66473ec04e5e12282934 Author: Jason Kankiewicz <[email protected]> Date: Fri Apr 8 02:52:52 2022 -0600 Added a field for persisting `AMobjId` structs to the `AMdoc` struct. Renamed `AMdoc::create()` to `AMdoc::new()` to be more idiomatic. Added `AMdoc::insert_object()` and `AMdoc::set_object()` for persisting `AMobjId` structs. Added `AMdoc::drop_obj_id()` to enable dropping a persisted `AMobjId` struct. commit b9b0f96357275b522b5f5494dc8bbbee86bf9735 Author: Jason Kankiewicz <[email protected]> Date: Thu Mar 17 15:17:08 2022 -0700 Ensure CMake targets can be built after a clean. commit d565db1ea8ada9246f6a0ece35968980da90eff9 Author: Jason Kankiewicz <[email protected]> Date: Thu Mar 17 15:10:09 2022 -0700 Prevent unnecessary updating of the generated header file. commit d3647e75d3f01aa91e337ec0e98c4b3a9f5b57f2 Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 02:50:59 2022 -0700 Documented the `AMObj.ID` struct member. commit cc58cbf4bbbcef7baf074c20c3c22efcd56e668d Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 02:03:37 2022 -0700 Normalize the formatting of the `AMobjType_tag()` function. commit c2954dd2c7ff228509c5a129c93cdf9e47192643 Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 02:02:03 2022 -0700 Remove superfluous backslashes. commit bcb6e759a445c01f9bf5c0cfe53a8f3816311eae Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 02:01:33 2022 -0700 Removed the `AMconfig()` function. Implemented the `AMgetActor()` function. Added the `AMgetActorHex()` function. Added the `AMsetActor()` function. Added the `AMsetActorHex()` function. commit 9b2c566b9efb934cef99622736725abf5779b6af Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 01:50:31 2022 -0700 Added the "hex" and "smol_str" crate dependencies to the C API. commit 99e06e1f730283e9009d7ad5a3f77828b786df6a Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 16 01:06:15 2022 -0700 Corrected a spelling error. commit 629b19c71dcaf0373afeec6f629c8e836db81529 Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 20:30:54 2022 -0700 Align backslashes. commit 09d25a32b716fb10728c67d35f5eeec480a6ce7c Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 20:30:23 2022 -0700 Add EOF linefeed. commit 4ed14ee7481d45f9dbedf08f16f435e5608e49d1 Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 20:05:30 2022 -0700 Fix "fmt" CI job violations. commit f53b40625dc724726bfb739a64cc6913fea8ed99 Merge: 7d5538d8 e1f8d769 Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 16:34:11 2022 -0700 Merge branch 'c_api_exp' of https://github.com/automerge/automerge-rs into c_api_exp commit 7d5538d8a42b79485348fbbf0b40c6f0dadaa59b Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 16:31:22 2022 -0700 Updated the C API's unit test suite. commit 335cd1c85f099c431843bc930dafde1bb1174eaf Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 16:27:39 2022 -0700 Removed superfluous `AMobj` traits. commit 420f8cab64c4614e7fb5c9cfce5cfc59cf7039cb Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 16:25:48 2022 -0700 Moved the `AMobj` struct into the `result` module. Changed the `AMobj` struct into an enum. Added the `AMbyteSpan` struct. Added the `AMvalue` enum. Added the `AMresult::Nothing` variant. commit 4eca88ff01bcf70ee3002775a8b5faa71bca29f5 Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 15:56:06 2022 -0700 Normalized all type name prefixes to "AM". Reduced the `AMstatus` enum's `<type>Ok` tags to a single `Ok` tag. Removed the `to_obj` macro. Added the `to_obj_id` macro. Moved the `AMobj` struct into the `result` module. Added the `AMresult::Nothing` variant. Added the `AMresultSize` function. Added the `AMresultValue` function. Added the `AMlistGet` function. Added the `AMmapGet` function. Removed the `AMgetObj` function. Added the `AMobjSize` function. commit 2f94c6fd906bf31a30a1db578334c2d1a41e16c0 Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 15:29:02 2022 -0700 Compensate for unconfigurable cbindgen behavior. Prevent Doxygen documentation regeneration. commit 5de00b799868339c3fd0f5f1d2c984980989714d Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 13 15:24:45 2022 -0700 Alphabetized the cbindgen settings. commit e1f8d769f44b48cdeb03855ac9e2b223fb229187 Author: Orion Henry <[email protected]> Date: Thu Mar 10 08:53:07 2022 -0500 update authors commit 3e5525f1a6541664e5e30ad179b2f217ba7b7422 Merge: f4ba1770 1c21abc5 Author: Orion Henry <[email protected]> Date: Wed Mar 9 14:36:29 2022 -0500 Merge pull request automerge#304 from jkankiewicz/c_api_exp Fix "fmt" workflow step violations commit 1c21abc5a37941ce189ff48d994c1ce3dda4827f Author: Jason Kankiewicz <[email protected]> Date: Wed Mar 9 11:13:01 2022 -0800 Fix CMake and Rust code formatting issues. commit f4ba1770a96c5200ae124706dffbab327a628c23 Merge: bf1ae609 f41b30d1 Author: Orion Henry <[email protected]> Date: Wed Mar 9 12:05:58 2022 -0500 Merge pull request automerge#300 from jkankiewicz/c_api_exp Add unit test suites for the `AMlistSet*` and `AMmapSet*` functions commit f41b30d118ef60965239a02afddbbfb14dc4392f Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 22:08:36 2022 -0800 Added a brief description of the `AmObjType` enum. Added the `AmStatus` enum to the enum docs page. commit af7386a482d2cb9cee2d188ef443498ddab40ddb Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 21:50:52 2022 -0800 Added a unit test suite for the `AMlistSet*` functions. commit 1eb70c6eee846b912806d058a43c6e04a9184a62 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 21:42:42 2022 -0800 Added the rest of the `AMlistSet*` functions. Started the enum tags at `1` so they won't be inherently false. Alphabetized enum tags for the docs. Improved the docs. commit 6489cba13b49656aa0704d329a90c6e7e4a809e1 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 18:01:46 2022 -0800 Alphabetize functions in the docs. commit 74c245b82d49971094d731ef4442b9af14e53c15 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 07:54:25 2022 -0800 Fix a typo in `AMmapSetObject()`'s documentation. commit b2a879ba4e23c884f2bf43d77e950c1ad8a34c7e Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 06:24:22 2022 -0800 Append missing EOF linefeed. commit fbf0f29b66ad9109081490754872d149d5575ac6 Merge: c56d54b5 bf1ae609 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:08:12 2022 -0800 Merge branch 'c_api_exp' of https://github.com/automerge/automerge-rs into c_api_exp commit c56d54b565451c0fe65e86b658e094178579fd25 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:07:11 2022 -0800 Added unit test cases for the new `AMmapSet*` functions by @orionz. Moved the unit test cases for the `AMmapSet*` functions into their own unit test suite. commit 7e59b5576034bc0404fe793758088fea2eae6330 Author: Jason Kankiewicz <[email protected]> Date: Tue Mar 8 01:01:47 2022 -0800 Edited the Doxygen documentation. commit bf1ae6091318d005c49407e10a20f4822e41adc1 Author: Orion Henry <[email protected]> Date: Mon Mar 7 11:59:22 2022 -0500 fmt commit e82a7cc78e166cc05e90138df040cdcdb4d83c13 Merge: a44e69d2 965c2d56 Author: Orion Henry <[email protected]> Date: Mon Mar 7 11:55:32 2022 -0500 Merge pull request automerge#299 from jkankiewicz/c_api_exp Enable unit testing of the C API commit 965c2d56c32068d3af07705aff7d0a4386393004 Author: Jason Kankiewicz <[email protected]> Date: Mon Mar 7 06:37:36 2022 -0800 Enable unit testing of the C API. commit a44e69d2c72ff3e712c1109e3cf2f0d00f2af0c0 Author: Orion Henry <[email protected]> Date: Sun Mar 6 14:00:46 2022 -0500 remove datatype mapset commit 88153c44e767b47fa1bb0bdd0d4bc5d43f2b6a7a Merge: 41512e9c c6194e97 Author: Orion Henry <[email protected]> Date: Sun Mar 6 10:32:39 2022 -0500 Merge pull request automerge#298 from jkankiewicz/rebase_c_api_exp Rebase the "c_api_exp" branch on the "experiment" branch commit c6194e973235ac43bcdf97b19b0274653b2e6b99 Merge: a2d745c8 41512e9c Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 6 01:09:56 2022 -0800 Merge branch 'c_api_exp' into rebase_c_api_exp commit a2d745c8d9c649d444339dc5e1df733af0a5bfec Author: Jason Kankiewicz <[email protected]> Date: Sun Mar 6 00:44:37 2022 -0800 Replace the `utils::import_value` function with the `utils::import_scalar` function. Exclude `# Safety` comments from the documentation. commit 0681e28b4063988fada6d632366b471996d6d66a Author: Orion Henry <[email protected]> Date: Thu Mar 3 16:04:17 2022 -0500 support new as_ref api commit 916e23fcc20aae9a27f17e9b98f267fac364d5bb Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:56:27 2022 -0500 fmt commit 71cd6a1f18796ab8f502d07d1d80784d1e3b9cd2 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:54:38 2022 -0500 lock data at 64 bit - no c_long commit e00bd4c20191e86b9f1bd11be2bab31e3a23fc97 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:27:55 2022 -0500 verbose commit 39d157c554a71e00978b1d9244e1c1cfbe7c24f3 Author: Orion Henry <[email protected]> Date: Thu Mar 3 14:56:23 2022 -0500 clippy cleanup commit 7f650fb8e0e7173c72d192c60506e46abb41f92f Author: Jason Kankiewicz <[email protected]> Date: Wed Feb 23 02:14:06 2022 -0800 Added Doxygen documentation generation. Renamed `AMDatatype` to `AmDataType`. Reorganized the `AmDataType` tags. Renamed `AMfree()` to `AMdestroy()`. Renamed `AMclone()` to `AMdup()`. commit b0b803eef8d07b5171b9ab736eae3e2f13d6158b Author: Orion Henry <[email protected]> Date: Tue Feb 22 11:30:42 2022 -0500 get simple test passing commit cab9017ffa369365afb73c37275063a0c174b12e Author: Orion Henry <[email protected]> Date: Wed Feb 9 15:50:44 2022 -0500 rework to return a queriable result commit a557e848f39d21b69d4b6c56434c1600b1cf6d94 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:38:00 2022 -0800 Add a CI step to run the CMake build of the C bindings for @alexjg. commit c8c0c72f3bfced414cc443255b6a912c56b9ecfc Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:09:58 2022 -0800 Add CMake instructions for @orionz. commit fb62c4b02a0971bf814272a58c500dd5a31e694a Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 23:28:54 2022 -0800 Add CMake support. commit 7bc3bb6850de84eff9ad5a66eed2363c12ad7738 Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 22:49:53 2022 -0800 Replace *intptr_t in C function signatures. commit 60395a2db04d37d549cd9b0e5178af5f52ceb5f3 Author: Orion Henry <[email protected]> Date: Sun Feb 6 18:59:19 2022 -0500 am_pop and am_pop_value commit b1e88047d22c4382aa58fc3fc337eb3d8a36140a Author: Orion Henry <[email protected]> Date: Thu Feb 3 19:43:36 2022 -0500 break the ground commit 41512e9c78a649186646bcaa5d78632724bd8403 Author: Orion Henry <[email protected]> Date: Thu Mar 3 16:04:17 2022 -0500 support new as_ref api commit bcee6a9623c0ce1289271df180368a81d50508d6 Merge: cf98f78d 9a89db3 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:58:19 2022 -0500 Merge remote-tracking branch 'origin/experiment' into c_api_exp commit cf98f78dd172f214d3f417913470956ff998d9d5 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:56:27 2022 -0500 fmt commit 3c1f449c5c024892658b37abbc74e19b746413e2 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:54:38 2022 -0500 lock data at 64 bit - no c_long commit 2c2ec0b0c5d74bbe950f629a701ea1209f8ad4b6 Author: Orion Henry <[email protected]> Date: Thu Mar 3 15:27:55 2022 -0500 verbose commit b72b9c989a60ca4bbcd7c47e1e6bf89356346a2f Author: Orion Henry <[email protected]> Date: Thu Mar 3 14:56:23 2022 -0500 clippy cleanup commit 3ba28f91ccb5a7499a5442804ffa91001b01a3ef Author: Jason Kankiewicz <[email protected]> Date: Wed Feb 23 02:14:06 2022 -0800 Added Doxygen documentation generation. Renamed `AMDatatype` to `AmDataType`. Reorganized the `AmDataType` tags. Renamed `AMfree()` to `AMdestroy()`. Renamed `AMclone()` to `AMdup()`. commit 8564e5b7531fb4e5194cf845b3d48e52a16827bd Author: Orion Henry <[email protected]> Date: Tue Feb 22 11:30:42 2022 -0500 get simple test passing commit 60835e6ae7361199e03225dd33a8aa9c4614a20e Author: Orion Henry <[email protected]> Date: Wed Feb 9 15:50:44 2022 -0500 rework to return a queriable result commit 89466d9e8c77b67b3526d56beb5f263aadb7fca0 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:38:00 2022 -0800 Add a CI step to run the CMake build of the C bindings for @alexjg. commit e2485bd5fda8b0e290038c579b2080faadbc5026 Author: Jason Kankiewicz <[email protected]> Date: Mon Feb 14 14:09:58 2022 -0800 Add CMake instructions for @orionz. commit b5cc7dd63dd76c816be1f23a0b91ba1f7327a32c Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 23:28:54 2022 -0800 Add CMake support. commit 685536f0cf9808b10af5efc9341f85acc2490fdf Author: Jason Kankiewicz <[email protected]> Date: Thu Feb 10 22:49:53 2022 -0800 Replace *intptr_t in C function signatures. commit c1c6e7bb6615d168bcdad41f1621b17ff8ea7725 Author: Orion Henry <[email protected]> Date: Sun Feb 6 18:59:19 2022 -0500 am_pop and am_pop_value commit e68c8d347e5e45451b6b2193542b9f2bdaf283ce Author: Orion Henry <[email protected]> Date: Thu Feb 3 19:43:36 2022 -0500 break the ground
Hello @ept . I understand that this implementation is already deprecated, but I have a question. You mentioned that the undo & redo feature is a hack. Could you clarify what specific aspects you believe are lacking? Are you referring to the limitation that users can only undo their own actions? |
Hi all! I wanted to give an update and invite discussion on our plans to ship a 1.0 version of Automerge. The
performance
branch has been a work in progress for about a year and a half, and I owe you all some news about getting it merged and released!The performance branch and data format evolution
Despite its name, the performance branch is not only about improving performance, but also about updating the data formats to something that we can support long-term. One of the key parts of this has been a binary encoding format for changes and documents (#253), which is orders of magnitude more compact than the JSON data format used by the currently released version of Automerge. This binary format is now pretty stable: I made a few more tweaks to it in #296, but beyond that I do not expect further changes.
The binary data format is the primary reason why this work has been happening on a topic branch rather than main. Since this data format is used by collaborators to exchange their edits, and different collaborators may be running different versions of the software, it's important that it is forward and backward compatible. We have been storing up all the breaking data format changes on the performance branch so that when it is released, we only need to perform a one-time migration from JSON to the binary format, and thereafter have no more migrations for hopefully a very long time, if ever. That means getting the fundamentals of the format right before releasing it.
The binary format is carefully designed to be extensible while maintaining compatibility, and so it will allow seamless collaboration across different versions of Automerge. That means we can add features to future versions of Automerge without breaking compatibility. If you are collaborating with users running different app versions, including different versions of Automerge, they will still be able to interoperate.
The plan is to ship this binary format in Automerge 1.0. Now that the format is pretty stable, the time has come to discuss the steps towards getting it released.
What's changing and what's remaining the same
The fundamentals of Automerge will remain unchanged in 1.0:
Automerge.change()
will continue working as-is.The biggest changes are:
The Rust and JS implementations
The current JavaScript implementation of Automerge is quite slow and memory-hungry (including the one on the performance branch, despite the name).
The Rust implementation compiled to WebAssembly is a huge improvement; I don't have figures right now, but I expect that switching to wasm will be a good way forward for people who have run into performance problems with the current Automerge. (Update: Orion has posted some benchmark figures comparing the JS and wasm implementations.)
The wasm version is a drop-in replacement on Node.js, and almost a drop-in replacement in web browsers. The only issue is that loading wasm modules on the web is asynchronous (it returns a promise), and so the initialization of Automerge needs to be made async. This will require a small code change for applications. Apart from that, the API remains the same.
For now, our plan is to maintain both the JS and Rust implementations side-by-side as equal partners, and to see how they work out in the wild. If it turns out that Rust+wasm is superior in every way, we may eventually deprecate the JS implementation and move the JS API to be a wrapper around a wasm core. But before doing that we will have to see how they compare in terms of performance, memory use, compatibility, tooling, etc.
On the JS side, I have also been working on performance improvements through new internal data structures for Automerge. This effort is orthogonal to the Rust implementation: in the Rust port, @orionz has been focussing on profiling and optimizing the existing data structures, whereas my experimental new data structures are a more radical rethink, building upon the new binary format. My hope is that, in the same way as the binary format has reduced the storage cost of Automerge documents by orders of magnitude, the new data structures will improve performance by orders of magnitude. In particular, saving and loading large documents to/from disk will become super fast. But the new data structures are not actually working yet! I think I'm getting close, but it's a quite complex research project.
If my new data structures work as well as I hope they will, we will port them over to Rust to gain the additional wasm speed boost. But if they don't work, I don't want this to hold up the release of Automerge 1.0. Hence publishing this roadmap, even though the new data structures remain a point of uncertainty.
What still needs to be done
Here are the main things that I think still need to be done before shipping 1.0:
That list is not terribly long — it feels like 1.0 is finally moving within reach! Feedback welcome on any things you think should be added or removed from that list.
In terms of timescale, I expect that we will be shipping at least a release candidate for 1.0 within the first quarter of 2021. Assuming no major issues are found, a definitive release should follow shortly afterwards.
Thank you to all the people who have contributed and are still contributing to this effort! Especially big thanks to @orionz and @alexjg for the excellent Rust implementation, @lightsprint09 for the Swift wrapper, @HerbCaudill and @pvh for Automerge-related libraries and feedback, and many other contributors and community members!
The text was updated successfully, but these errors were encountered: