PureYAML/docs
Mihaela Mihaljevic c3033c356d feat(parsing): begin faithful libyaml scanner port (indent engine)
PureYAML's scanner is a hand-rolled approximation of libyaml's algorithm; its indentation and simple-key bugs are the gap between the two. Rather than keep patching the approximation, re-derive the scanner as a faithful, function-by-function Swift port of libyaml's scanner.c (parser.c to follow), so correctness is by construction. The no-C-runtime constraint is preserved: this translates the algorithm into pure Swift, it does not bind to libyaml.

First piece: the indentation engine under PureYAML.Parsing.LibYAML, a line-for-line port of yaml_parser_roll_indent and yaml_parser_unroll_indent. A block collection opens only when content is strictly more indented than the current level, which fixes the '- a:' / same-column 'b:' mis-nesting by construction. Unit-tested against that exact case (sibling vs nested vs flow-inert). Lands as a parallel implementation verified against libyaml built from the CYaml source; swapped in only once it matches the reference with no regression. docs/LIBYAML_PORT.md records the plan. No public behavior changed yet.
2026-06-24 02:46:29 +02:00
..
releases feat(parser): harden diagnostics and streaming 2026-06-06 07:57:48 +02:00
rules ci: use checkout action with node 24 2026-06-06 00:32:53 +02:00
CONVENTIONS.md test(coding): add sequence fixtures and contract gate 2026-06-05 12:33:09 +02:00
CORPUS.md feat(parser): harden diagnostics and streaming 2026-06-06 07:57:48 +02:00
DESIGN.md feat(emitting): dump YAML streams 2026-06-05 17:14:41 +02:00
LIBYAML_PORT.md feat(parsing): begin faithful libyaml scanner port (indent engine) 2026-06-24 02:46:29 +02:00
MIGRATION.md fix(ci): prepare 0.1.0 release 2026-06-05 21:20:20 +02:00
RELEASE.md feat(parser): harden diagnostics and streaming 2026-06-06 07:57:48 +02:00
USAGE.md docs(release): prepare 0.1.1 2026-06-06 00:28:38 +02:00
YAML_TEST_SUITE_CONFORMANCE.md test(conformance): track all 402 suite cases; fix 3 regressions 2026-06-24 00:16:28 +02:00