• 0.2.0 630849e67a

    Mihaela released this 2026-07-04 22:50:50 +00:00 | 36 commits to main since this release

    PureYAML 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 a Model.LocatedValue tree in
      which every node carries its source span (1-based line and column), with
      exact scalar end positions. The plain Value path 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.Check algebra with combinators
      and rule-identity configuration replaces the legacy Rule type.
      BuiltinCheck.mappingKeysAreUnique ships 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.ParseError with 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.md hosted-verification section still assumes the full
      four-platform CI matrix; Codeberg Actions currently runs the
      rules-conformance workflow only.
    Downloads