What changed
v0.0.34 is the reliability release. It adds the testing the parser had been missing, and it fixes what that testing found.
Fixed
- An unterminated verbatim tag is refused.
!<at the end of the input used to be accepted; the alloc-only fuzzer found it within a minute of its first run. The parser now reports "verbatim tag is not closed". - The language server accepts multi-document files. A valid
----separated buffer got a false "more than one document" error; diagnostics and hover now parse the buffer as a stream. - The MCP server reads empty values.
noyalib_geton a key with no value returned "path not found"; it now returns the empty slice, and a missing key still errors.
Added
- Property tests for the serialiser's block-scalar choices and the path grammar.
- A structure-aware fuzz target that builds arbitrary
Valuetrees and checks the serialise-parse round trip, and an alloc-only fuzz crate so theno_stdpath is fuzzed too. - The
arbitraryfeature, withArbitraryfor the public value types, so downstream fuzzers can build well-formed input. - The official test suite through every crate. A shared workflow runs all 406 cases through the CLI's exit code, the language server's diagnostics, the MCP tool result, the serde_yaml shim and the WebAssembly JSON model, at the pinned core commit.
Evidence
- 406 of 406 in the core and in every companion's own surface. The conformance page has the table.
- Miri runs Tree Borrows and the alignment check weekly; the per-request run keeps Stacked Borrows.
- Every open Dependabot bump folded in, with
cargo-vetaudits refreshed.
Upgrading
Bump every noyalib crate you use to 0.0.34. The public API gained the
optional arbitrary feature and changed nothing else.