![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@automerge/automerge
Advanced tools
Javascript implementation of automerge, backed by @automerge/automerge-wasm
This is a preview of the next major release of automerge. The primary goal has been to reduce the memory footprint of automerge by implementing columnar compression on in memory ops and changes and to do so with as little cost to performance as possible. This is to get the code into the hands of early adopters and start to smoke out problems. PLEASE do not use this with any important data.
The code is not fully optimized but reading and writing to a document should be at worst 2x to 10x of the mainline release's performance.
These are the issues know of at the time of release. Issues will be delbt with in order of criticality.
The test automerge-wasm::sync::should report whether the other end has our changes
fails about one time in 10.
The opset is missing an index related to repeated updates on a single map key or list element. Reading or writing to these elements triggers a sequential scan of all past updates leading to O(N)
performance.
The internal get_object_type()
method needs to be optimized leading to poor performance in documents with many objects or a large number of ops.
Continue to increase performance to be on par with current mainline releases. Implement columnar compress of the change graph.
Currently the only external api change has been that methods that used to return references to changes chached interally (get_change_by_hash
, get_changes
, get_last_local_change
) now return the owned changes.
All benchmarks were done on an apple M1 processor in native rust using orionz/automerge-battery
Reads and writes are not fully optimized and will be improved before release.
------------------------------------------------------------------+
| test | op_set2 | main | ratio |
------------------------------------------------------------------+
| edit_trace_many_tx | 10.4 s | 965.1 ms | 10.77 |
| edit_trace_single_tx | 4.9 s | 323 ms | 15.17 |
------------------------------------------------------------------+
Save and load is alraedy benefiting from the new memory footprint.
------------------------------------------------------------------+
| document | op_set2 | main | ratio |
------------------------------------------------------------------+
| load_big_paste | 22.33 ms | 108.3 ms | 0.206 |
| load_chunky | 22.96 ms | 122.1 ms | 0.188 |
| load_typing | 133.7 ms | 345.5 ms | 0.387 |
| save_big_paste | 2.16 ms | 11.7 ms | 0.185 |
| save_chunky | 2.97 ms | 12.78 ms | 0.232 |
| save_typing | 5.35 ms | 39.63 ms | 0.135 |
------------------------------------------------------------------+
Memory usage is greatly improved. The document big_paste
is the best case scenario with a single transaction with a single 100,000 character paste. The chunky
document has 1,000 pastes with 100 characters each representing the middle ground. And the typing
document has 100,000 changes with a single op each.
------------------------------------------------------------------+
| document | op_set2 | main | ratio |
------------------------------------------------------------------+
| big_paste | 106.7 KB | 40.3 MB | 0.002 |
| chunky | 174.8 KB | 38.2 MB | 0.004 |
| typing | 19.4 MB | 126 MB | 0.153 |
------------------------------------------------------------------+
FAQs
Javascript implementation of automerge, backed by @automerge/automerge-wasm
The npm package @automerge/automerge receives a total of 1,354 weekly downloads. As such, @automerge/automerge popularity was classified as popular.
We found that @automerge/automerge demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.