Repository navigation
LayerKeySort v2.0.0-rc.1
Pre-releaseLayerKeySort v2.0.0-rc.1
This is the LayerKeySort V2 release candidate. RC.1 freezes the intended feature set, public C API, canonical Path display grammar, and LK1 version-1 external key contract for final validation. It is a GitHub Prerelease, not stable or production-ready v2.0.0.
Freeze and compatibility
- The public API remains 52 functions. No public function, type, status, or signature was added or removed relative to Preview.5.
- The production algorithms are byte-for-byte unchanged from Preview.5.
- LK1 v1 encoding, parser canonicality, golden vectors, and bytewise Path-order equivalence are unchanged. Published LK1 v1 bytes will not be silently reinterpreted.
- The canonical Path display grammar and parser are part of the intended stable 2.x source and semantic compatibility contract.
- docs/COMPATIBILITY.md defines the 2.x public promises and the implementation details that may change. Exact automatically generated Path coordinates, spacing, AVL shape, and node addresses are not permanent item identity or exact-output guarantees.
- The CMake source-integration target remains layerkeysort. The project does not claim cross-compiler binary ABI compatibility.
Validation
The exact release-state commit passed Windows MSVC, Ubuntu GCC, Ubuntu Clang, Ubuntu Clang with sanitizers, and macOS AppleClang CI. Each configuration ran CTest 5/5, including the deterministic mutation soak and benchmark correctness smoke tests. Both public examples ran successfully. Pages deployment passed.
Clean local checkouts of the candidate and final release-state commit passed strict GCC C17 configure/build, CTest 5/5, and both examples. Clean consumer projects passed add_subdirectory, direct-source C17 integration, and FetchContent pinned to the exact unpublished candidate commit before release. A C++ translation unit included the public header successfully. An MSVC AddressSanitizer regression run passed. A separate 500,000-operation manual mutation soak passed.
Current limits
Full Tree rebuild remains a failure-atomic fallback and may be costly. Complete comparator-driven insertion has no claimed worst-case O(log n) or formal amortized bound. Existing comparator-order compatibility is the caller's responsibility when using comparator-driven Tree operations. RC.1 does not add high-level movement convenience APIs, whole-Tree serialization, or distributed/CRDT convergence.
LK1 stores a sortable ordering coordinate, not permanent application item identity. An application must retain its own item IDs. RC.1 intentionally does not resolve the remaining research and usability questions merely to declare a freeze.
If observation finds no release blocker, the next intended release is v2.0.0. A blocker would be addressed in v2.0.0-rc.2 with a focused fix. No major new feature work is planned before stable 2.0.0.
Release commit: 69790ba