4.1 KiB
4.1 KiB
Changelog
All notable changes to PureYAML are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Bootstrap PureYAML as a root Swift package with no external dependencies.
- Add the first pure-Swift YAML model, parser, and dumper milestone.
- Add tests for block mappings, block sequences, common scalars, comments, and dump/parse round trips.
- Add path-aware YAML validation with duplicate-key checks, custom rules, and warning collection.
- Add the internal parse event model with marks, scalar styles, collection styles, alias events, anchor/tag metadata, and golden event tests for current parser behavior.
- Add the internal UTF-8 reader and scanner token layer with tests for comments, indentation, block entries, mapping indicators, flow delimiters, quoted scalars, block scalar headers, anchors, aliases, tags, and source marks.
- Add the internal scanner-token event parser for block collections, flow collections, aliases, anchors, tags, and line/column parser failures.
- Add the internal event composer and wire public parsing through
scanner-token events into
PureYAML.Model.Value, including flow collections, block scalars, anchors, aliases, and duplicate-key validation coverage. - Add YAML directive and document-marker scanning, tag-handle expansion, and explicit built-in scalar tag composition for strings, integers, floats, booleans, and nulls.
- Expand tests into focused parsing, dumping, model, validation, and parse-error suites.
- Add macOS, Linux, and WASM verification gates and CI jobs, plus a local Linux check that can run through Claw Mini's Lima VM.
- Add a single full local verification script and wire pre-push through the macOS, Claw Mini Linux, and WASM gate sequence.
- Harden the changelog gate so local verification also sees unstaged source edits, not only committed or staged changes.
- Add emitter options with a selectable scalar policy for quoted strings or conservative plain-string output.
- Add opt-in literal block scalar emission for safe multiline strings, including
|-parsing support for stripped final newlines. - Add opt-in flow collection emission for compact mapping and sequence output.
- Add emitter corpus tests and document the current emitter policy.
- Add Yams and CYaml attribution without copying their implementation into
Sources/. - Add validation-rule predicates, a boolean validation-rule initializer, and validator authoring rules.
- Add scalar typed Decodable and Encodable conversion APIs with exact path-aware errors.
- Add unambiguous bracket-quoted validation paths for punctuation-heavy keys.
- Add keyed typed Decodable and Encodable conversion for mapping-backed structs.
- Validate YAML values before typed decoding so duplicate keys are rejected deterministically.
- Add unkeyed typed Decodable and Encodable conversion for sequences, including nested sequences and sequence properties on keyed structs.
- Add a fixture-backed sequence typed-conversion test corpus and a forbidden-pattern verification gate for package, source, and test contracts.
- Add broader Codable compatibility coverage for dynamic mapping keys, nested
container round trips, keyed super coders, default
supercoders, and deterministic unsupported-shape errors. - Add an explicit research-compatibility rule requiring parser, emitter, validation, and typed conversion work to start from PureYAMLResearch behavior without copying implementation code.
Changed
- Lower the package tools version to Swift 6.1 for hosted macOS CI compatibility and install Linux Swift toolchain prerequisites for the WASM CI job.
- Harden duplicate-key validation to use set membership while preserving exact diagnostics.
- Make validation rules immutable after construction.
- Preserve keyed super-encoder field order even when delayed child encoders are written in a different order than they were requested.
- Make keyed default
superEncoder()andsuperDecoder()use the standardsupermapping key instead of the current mapping.