noyalib-lsp v0.0.16 Release Notes
Lockstep release with noyalib v0.0.16 (ADR-0005 strict-lockstep: the
LSP server publishes =X.Y.Z pinned to the core).
What changed
noyalibpin=0.0.15→=0.0.16and the crate version bumped in lockstep.- MSRV raised 1.85.0 → 1.86.0, matching the single lockstep floor adopted in v0.0.16. The crate builds cleanly on 1.86.
- Release workflow publish steps made idempotent for clean re-runs.
Known issues at v0.0.16 — corrected after release (ships in v0.0.17)
Two items were not in the v0.0.16 tag and are on main for the next
release. They are called out here so the record is accurate:
textDocument/formattingwas a silent no-op.full_document_editsused a byte-faithful CST round-trip (parse_document().to_string()), which equals its input for every parseable document, so the server always returned an empty edit list — format-on-save did nothing. The parent changelog stated this was fixed in v0.0.16; it was not. It is now fixed onmainby callingnoyalib::cst::format, with regression tests asserting a non-canonical document produces a real normalizing edit.crossbeam-epochRUSTSEC-2026-0204 (invalid-pointer-dereference) was present in the v0.0.16 lockfile via a transitive dependency and bumped to the patched 0.9.20 onmainafterward.
Engineering / CI (post-release, no user-facing change)
- Signed-history enforcement, upstream audit imports, and a
dependabot-vetauto-refresh workflow. - New CI gates brought to parity with the core: a coverage gate (measured 95.5 % regions / 97.3 % functions / 95.5 % lines against the 93/96/94 floor), an MSRV gate, CodeQL, and OpenSSF Scorecard.
What did not change
- The JSON-RPC / stdio LSP transport and message framing.
#![forbid(unsafe_code)]— intact.
Upgrading
noyalib-lsp = "0.0.16"
Requires Rust 1.86.0+. If you rely on textDocument/formatting,
wait for v0.0.17, where it actually reformats.