loro-crdt 1.13.6 → 1.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/base64/index.js +94 -93
- package/base64/loro_wasm.d.ts +19 -19
- package/browser/index.js +4 -4
- package/browser/loro_wasm.d.ts +19 -19
- package/browser/loro_wasm.js +12 -12
- package/browser/loro_wasm_bg.js +90 -89
- package/browser/loro_wasm_bg.wasm +0 -0
- package/browser/loro_wasm_bg.wasm.d.ts +2 -2
- package/bundler/index.js +4 -4
- package/bundler/loro_wasm.d.ts +19 -19
- package/bundler/loro_wasm_bg.js +90 -89
- package/bundler/loro_wasm_bg.wasm +0 -0
- package/bundler/loro_wasm_bg.wasm.d.ts +2 -2
- package/nodejs/loro_wasm.d.ts +19 -19
- package/nodejs/loro_wasm.js +90 -89
- package/nodejs/loro_wasm_bg.wasm +0 -0
- package/nodejs/loro_wasm_bg.wasm.d.ts +2 -2
- package/package.json +3 -2
- package/web/loro_wasm.d.ts +21 -21
- package/web/loro_wasm.js +88 -87
- package/web/loro_wasm_bg.wasm +0 -0
- package/web/loro_wasm_bg.wasm.d.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.13.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ac1feb6: Reduce peak memory across large snapshot import, `toJSON`, update import, and
|
|
8
|
+
snapshot export by preserving lazy state, bounding the decompressed SSTable
|
|
9
|
+
block cache by bytes, and preallocating the snapshot output exactly. Snapshot
|
|
10
|
+
import now validates every embedded SSTable block checksum before accepting
|
|
11
|
+
external bytes.
|
|
12
|
+
|
|
13
|
+
Full snapshot export no longer walks the alive-container graph: store entries
|
|
14
|
+
for referenced containers are created when the creating op or imported diff is
|
|
15
|
+
applied, so a cold export after a large import is a flush plus KV export
|
|
16
|
+
instead of re-reading every container from compressed blocks. As part of this,
|
|
17
|
+
full export round-trips imported state bytes faithfully (inconsistent
|
|
18
|
+
alive-container parent metadata is now rejected by shallow export, which still
|
|
19
|
+
walks, rather than by full export), and an ensured-but-empty mergeable child is
|
|
20
|
+
no longer materialized into the KV store by a full export — importers resolve
|
|
21
|
+
it from its parent map marker. First `toJSON` after import also avoids decoding
|
|
22
|
+
each lazy container twice.
|
|
23
|
+
|
|
24
|
+
## 1.13.7
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- 3986805: Speed up snapshot import. When decoding a Loro snapshot, the redundant per-block SSTable validation (eager block-metadata decode and per-block checksums) is now skipped, because the whole snapshot body is already protected by the document-level checksum verified during decoding. This removes a second hash pass over the data (roughly halving B4 snapshot import time) while preserving integrity guarantees.
|
|
29
|
+
|
|
30
|
+
This fast path is internal to Loro's snapshot decoding. The public `MemKvStore::import_all` still verifies every block's checksum; a separate `import_all_unchecked` opts into the unchecked path and is only used where an outer checksum already guarantees integrity.
|
|
31
|
+
|
|
32
|
+
- 9b6330d: Speed up local text editing (~35% faster on the B4 editing trace). Three hot-path
|
|
33
|
+
changes: the lock-order debug instrumentation is now compiled out of release
|
|
34
|
+
builds (it ran on every per-op lock acquisition); the visible-op count is bumped
|
|
35
|
+
incrementally for local ops instead of recomputing it from the version vectors
|
|
36
|
+
(which also allocated) on every op; and a couple of per-op allocations on the
|
|
37
|
+
text insert/delete path were removed (lazy error-context formatting and inline
|
|
38
|
+
storage for entity ranges).
|
|
39
|
+
- c37e76a: Fix a checkout hang after snapshot import. Change-store blocks decoded from a snapshot recorded a wrong end lamport (`lamport_range.1` was set to the start lamport of the block's last change instead of its end). When a change was split across multiple blocks and a lamport-based lookup engaged the binary search path in `ChangeStore::get_change_by_lamport_lte` — e.g. the movable-list diff calculator resolving historical positions during `checkout` — the degenerate range made the search loop forever. The binary search now also caps its steps and falls back to a scan if it ever fails to converge; the fallback considers both unflushed in-memory blocks and the underlying kv store, so lamport lookups (e.g. `getChangeAtLamport`) stay correct for local changes that have not been flushed yet.
|
|
40
|
+
|
|
3
41
|
## 1.13.6
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|