diff --git a/.changeset/brave-loros-sync.md b/.changeset/brave-loros-sync.md deleted file mode 100644 index 5c3c97731..000000000 --- a/.changeset/brave-loros-sync.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"loro.js": minor ---- - -Add a pure TypeScript implementation of the current Loro binary format and a -`loro-crdt`-compatible CRDT runtime. diff --git a/.changeset/calm-snapshots-breathe.md b/.changeset/calm-snapshots-breathe.md deleted file mode 100644 index 867420fab..000000000 --- a/.changeset/calm-snapshots-breathe.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"loro-crdt": patch ---- - -Reduce peak memory across large snapshot import, `toJSON`, update import, and -snapshot export by preserving lazy state, bounding the decompressed SSTable -block cache by bytes, and preallocating the snapshot output exactly. Snapshot -import now validates every embedded SSTable block checksum before accepting -external bytes. - -Full snapshot export no longer walks the alive-container graph: store entries -for referenced containers are created when the creating op or imported diff is -applied, so a cold export after a large import is a flush plus KV export -instead of re-reading every container from compressed blocks. As part of this, -full export round-trips imported state bytes faithfully (inconsistent -alive-container parent metadata is now rejected by shallow export, which still -walks, rather than by full export), and an ensured-but-empty mergeable child is -no longer materialized into the KV store by a full export — importers resolve -it from its parent map marker. First `toJSON` after import also avoids decoding -each lazy container twice. diff --git a/.changeset/clean-map-changelog.md b/.changeset/clean-map-changelog.md deleted file mode 100644 index bfac06a10..000000000 --- a/.changeset/clean-map-changelog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"loro-crdt-map": patch ---- - -Keep the source-map package changelog aligned with the matching `loro-crdt` release. diff --git a/.changeset/lazy-snapshots-rest.md b/.changeset/lazy-snapshots-rest.md deleted file mode 100644 index fad2ea63a..000000000 --- a/.changeset/lazy-snapshots-rest.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"loro.js": patch ---- - -Keep large latest-state snapshots encoded and hydrate containers on demand. -Local edits and later updates now use a small history overlay, while snapshot -export rewrites only dirty SSTable blocks and avoids redundant output buffers. diff --git a/.changeset/quick-loros-flow.md b/.changeset/quick-loros-flow.md deleted file mode 100644 index c8c557903..000000000 --- a/.changeset/quick-loros-flow.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"loro.js": minor ---- - -Improve pure TypeScript runtime performance for merged changes, concurrent -sequence insertion, large state snapshots, and bulk list edits. Snapshot -SSTables now use interoperable LZ4 compression and defer non-frontier history -decoding until a history-dependent API needs it. diff --git a/crates/loro-wasm-map/CHANGELOG.md b/crates/loro-wasm-map/CHANGELOG.md index 13c5b6295..83055a8d5 100644 --- a/crates/loro-wasm-map/CHANGELOG.md +++ b/crates/loro-wasm-map/CHANGELOG.md @@ -1,5 +1,11 @@ # loro-crdt-map +## 1.13.8 + +### Patch Changes + +- 033f43a: Keep the source-map package changelog aligned with the matching `loro-crdt` release. + ## 1.13.7 ### Patch Changes diff --git a/crates/loro-wasm-map/package.json b/crates/loro-wasm-map/package.json index 8268c4b32..19dab77a1 100644 --- a/crates/loro-wasm-map/package.json +++ b/crates/loro-wasm-map/package.json @@ -1,6 +1,6 @@ { "name": "loro-crdt-map", - "version": "1.13.7", + "version": "1.13.8", "description": "Source maps for the loro-crdt WebAssembly bundles.", "repository": { "type": "git", diff --git a/crates/loro-wasm/CHANGELOG.md b/crates/loro-wasm/CHANGELOG.md index 35491a0e5..d91b00ace 100644 --- a/crates/loro-wasm/CHANGELOG.md +++ b/crates/loro-wasm/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 1.13.8 + +### Patch Changes + +- ac1feb6: Reduce peak memory across large snapshot import, `toJSON`, update import, and + snapshot export by preserving lazy state, bounding the decompressed SSTable + block cache by bytes, and preallocating the snapshot output exactly. Snapshot + import now validates every embedded SSTable block checksum before accepting + external bytes. + + Full snapshot export no longer walks the alive-container graph: store entries + for referenced containers are created when the creating op or imported diff is + applied, so a cold export after a large import is a flush plus KV export + instead of re-reading every container from compressed blocks. As part of this, + full export round-trips imported state bytes faithfully (inconsistent + alive-container parent metadata is now rejected by shallow export, which still + walks, rather than by full export), and an ensured-but-empty mergeable child is + no longer materialized into the KV store by a full export — importers resolve + it from its parent map marker. First `toJSON` after import also avoids decoding + each lazy container twice. + ## 1.13.7 ### Patch Changes diff --git a/crates/loro-wasm/Cargo.toml b/crates/loro-wasm/Cargo.toml index 0bf7ac1f0..90eb6f9cc 100644 --- a/crates/loro-wasm/Cargo.toml +++ b/crates/loro-wasm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "loro-wasm" -version = "1.13.7" +version = "1.13.8" edition = "2021" publish = false repository = "https://github.com/loro-dev/loro/" diff --git a/crates/loro-wasm/package.json b/crates/loro-wasm/package.json index 5a3bd918c..2d6d5dffb 100644 --- a/crates/loro-wasm/package.json +++ b/crates/loro-wasm/package.json @@ -1,6 +1,6 @@ { "name": "loro-crdt", - "version": "1.13.7", + "version": "1.13.8", "description": "Loro CRDTs is a high-performance CRDT framework that makes your app state synchronized, collaborative and maintainable effortlessly.", "keywords": [ "crdt", diff --git a/loro-js/CHANGELOG.md b/loro-js/CHANGELOG.md new file mode 100644 index 000000000..d7cb3bcf2 --- /dev/null +++ b/loro-js/CHANGELOG.md @@ -0,0 +1,18 @@ +# loro.js + +## 0.1.0 + +### Minor Changes + +- 68587bc: Add a pure TypeScript implementation of the current Loro binary format and a + `loro-crdt`-compatible CRDT runtime. +- 68587bc: Improve pure TypeScript runtime performance for merged changes, concurrent + sequence insertion, large state snapshots, and bulk list edits. Snapshot + SSTables now use interoperable LZ4 compression and defer non-frontier history + decoding until a history-dependent API needs it. + +### Patch Changes + +- 4e663a1: Keep large latest-state snapshots encoded and hydrate containers on demand. + Local edits and later updates now use a small history overlay, while snapshot + export rewrites only dirty SSTable blocks and avoids redundant output buffers. diff --git a/loro-js/package.json b/loro-js/package.json index a84ab1594..1fd2eeb82 100644 --- a/loro-js/package.json +++ b/loro-js/package.json @@ -1,6 +1,6 @@ { "name": "loro.js", - "version": "0.0.0", + "version": "0.1.0", "description": "Pure TypeScript implementation of the Loro CRDT and binary format.", "keywords": [ "crdt",