-
PureYAML 0.2.0 Stable
released this
2026-07-04 22:50:50 +00:00 | 36 commits to main since this releasePureYAML 0.2.0
The parser is now a faithful pure-Swift port of libyaml's scanner and parser
(PureYAML.Parsing.LibYAML), replacing the original hand-rolled engine
entirely. The port was verified against libyaml built from source and then
pushed past it: whole-suite conformance against the official YAML test suite
is 402 of 402 cases, zero gaps (Tests/Fixtures/yaml-test-suite-manifest.yaml
is the machine-authoritative record), including six rejections libyaml itself
gets wrong (QB6E, DK95/01, Y79Y/003, S98Z, ZXT5, DK4H). Canonical event
conformance is 308 of 308 valid cases. Measured throughput is 1.6x to 2.15x
faster than Yams on real-world documents.Added
PureYAMLJSON, a second library product: a standalone YAML to JSON and
JSON to YAML converter with a strict JSON-representability validator
(unique string keys, finite numbers), built on the Check algebra.- Opt-in located parse:
PureYAML.parseLocated(_:)and
PureYAML.parseStreamLocated(_:)return aModel.LocatedValuetree in
which every node carries its source span (1-based line and column), with
exact scalar end positions. The plainValuepath is byte-identical to
before; a whole-suite test proves the located projection equals a plain
parse for every passing case. - Type-directed validation: the
Validation.Checkalgebra with combinators
and rule-identity configuration replaces the legacyRuletype.
BuiltinCheck.mappingKeysAreUniqueships in core; the JSON checks live in
PureYAMLJSON.
Changed
- Undefined tag handles, tab indentation, under-indented quoted-scalar
continuations, and the other strictness gaps are now parse errors, matching
the official suite's error cases.PureYAML.validationReport(_:)carries
such failures as parse diagnostics. - Diagnostics from the ported engine translate into
PureYAML.Parsing.ParseErrorwith libyaml-style messages and 1-based
positions.
Verification
- macOS: full gate (style, namespacing, forbidden patterns, changelog,
roadmap, swiftformat, swiftlint strict, debug and release build and test,
whole-suite conformance sweep). - Linux: debug and release build and test, Swift 6.3.2 on aarch64
(593 tests, 136 suites). - WASM: debug and release library builds with the swift-6.3.2-RELEASE_wasm
SDK.
Known deferred issues
- Windows build and test were NOT run for this release: the Windows CI
workflow was hosted on GitHub and has no Codeberg runner equivalent yet.
The tree is pure Swift with no platform-conditional code paths added since
0.1.5, but Windows remains unverified until a runner exists. - The
docs/RELEASE.mdhosted-verification section still assumes the full
four-platform CI matrix; Codeberg Actions currently runs the
rules-conformance workflow only.
Downloads