Highlights
- JSONPath queries are now RFC 9535 compliant across both Rust and WASM bindings. A new parser, evaluator, and conformance test suite (PR #848, commit
21d13218) unlock richer filters likeinandcontainswhile delivering clearer error messages. Thanks @zolero! - Source maps become first-class in the WASM toolchain.
loro-wasm-toolsnow embeds symbols during bundling (#836) and the newloro-wasm-mappackage publishes maps next to the runtime bundle (#844), drastically simplifying debugging in browsers, Vite, and other build systems.
Breaking change
- Removed legacy v0.x encoding path (#849,
10a405b4). Legacy serializers, compatibility fuzz tests, and decoding shims are gone. All runtimes now rely on the v1.* encoding format. Documents created with v0.x must be migrated via an intermediate ≤1.8.x release before installing 1.9.0.
New features & improvements
- Spec-compliant JSONPath (#848,
21d13218). Ships a Pest-based parser, richer AST, thein/containsfilter operators, better existence checks, and shared tests/benchmarks to keep Rust and WASM perfectly aligned. - WASM debugging experience (#836,
6f987022; #844,53f55331). Addsloro-wasm-toolsfor embedding sourcemaps, automates sourcemap publishing in CI, and hosts the maps in a dedicated workspace package so source-level debugging works without manual steps. - Better bundler support (#852
3af6a857, #851366f0161). Patches the JS entry points so esbuild and rsbuild can import the WASM bundle with zero loader overrides. - Bun runtime improvements (#829
b8c070fd, #828cf123453, #8278b622619, #834865bccba). Streams the WASM binary during bundling, pre-seeds the externref table, integrates Bun into CI, and removes earlier hacks that hid loader bugs. - JavaScript performance (#820
c2c535c1). Event conversion now runs exactly once per callback invocation, trimming overhead during heavy real-time editing sessions. - Core dependency refresh (
e8f79de8,b2f5e107). Upgradesgeneric-btreeand the columnar storage crate to pick up the latest bug fixes and perf wins.
Bug fixes & stability
- Fixed tree undo operations that moved nodes between siblings (#821
76a8728e). - Resolved container ID bookkeeping when exporting shallow snapshots (#823
b72a759a) and ensured pending containers now returnNoneinstead of leaking state (#84035d9064d). - Prevented
LoroMapentries from turning intonullafterapplyDiff(#8253afc4d52). - Ensured undo manager callbacks fire without tripping Rust aliasing violations (#831
a39daf85). - Guarded against panics when cursors point to deleted entries (#835
e97e6056) and when fetching unknown cursors in JS integration tests. - Cleaned up WASM loader glue so we no longer rely on an extra patch (#834
865bccba) and added multiple Bun regression tests (#828cf123453). - Tightened CI release scripts (
74b78514,2383cdc1,4740a04c,3373e046,24f93249) to keeploro-wasmartifacts and sourcemaps publishing in sync.