Repository navigation
Rust fixes on Java ELK 0.12.0; upstream Java and elkjs references are unchanged.
Release tag: v0.12.1 on releases/0.12.0.
Added
- Added the consuming
layout_valueJSON API and facade export for callers that already hold aserde_json::Value. - Added a reproducible strict full-corpus gate covering final layouts, raw intermediate geometry/topology, complete input accounting, and matching exception behavior.
Fixed
- Fixed interactive external-port lock re-entry, including north/south traversal.
- Implemented connected-component hull/1D compaction and corrected zero-height scanline ordering and external-port single-component placement.
- Fixed zero-size resize division while preserving normal-size and fixed-port behavior.
- Returned an error for unsupported cross-hierarchy edges instead of silently discarding them.
- Removed trace-only coordinate correction, Java-zero comparison exceptions, and non-finite comparison gaps; restored trace state after errors with thread-local RAII guards.
Changed
- Reduced JSON option/default allocation and network-simplex/order-relation work while preserving input order and fallback behavior.
- Verified all 1,998 corpus cases: 1,997 matching layouts and one matching-exception test; all 196,407 intermediate states matched. The reference is Java 0.12.0 with three explicit fixes, not unmodified upstream Java. See strict validation.
- Measured 26 synthetic scenarios per API against stable 0.12.0: native mean -1.54%, JSON API mean +0.02%; targeted defaults/simplex workloads improved 23.3–62.0%. See conditions, raw results, and limits.
Packages and validation
- npm:
@openedges/elk-layout@0.12.1and six native platform packages. - crates.io:
elk-layout@0.12.1and 17 ELK library crates; all internal versions are pinned together. - GitHub assets: six NAPI binaries and a combined browser/Node.js WASM archive.
- Rust tests: 1,081 passed, zero failed, two ignored. JS: 49/49 passed; fresh NAPI and browser WASM each matched 550/550 Java JSON results.
- Node.js 18.0.0, 18.15.0, and 24.19.0 passed actual-tarball native/WASM direct and worker checks.
- All 12 metadata/phase-wiring checks, 13 required performance comparisons, and eight recursive runtime budgets passed.
The Java reference remains 0.12.0. This is a published Rust patch version, so its tag is v0.12.1 on the existing releases/0.12.0 branch, as specified in VERSIONING.md.