What changed
Seven rounds of differential fuzzing compared noyalib with serde_yaml_ng and libyaml on the same inputs. Where the two disagreed and the spec sided with the others, noyalib changed; where the spec sided with noyalib, the case is now pinned in its test suite.
Fixed
- A trailing space no longer ends a plain scalar. A plain scalar whose line ended in a space or tab could not continue on the next line, so
mfollowed byxwas a parse error. It now readsm x. - An anchor on an empty list item keeps the next item.
- &afollowed by- xused to nest the second item under the first. It now reads as two items. - Typed parses read keys as written. A tag elsewhere in a document no longer changes how a typed parse spells a key, so a YAML 1.1
on:key reaches a struct field namedon. Duplicate-key checks treat~andnull, or0x1Fand31, as one key on every path. - Safer CST edits.
cst::formatkeeps NEL, NBSP and other Unicode spaces that YAML reads as content, and two fixes from @zoosky make removing or overwriting an alias-valued entry act on the right bytes.
Upgrading
Bump every noyalib crate you use to 0.0.57. Five parse changes can change what a document loads as: 0X1F and 0x-1 load as strings, folded scalars keep whitespace-only lines indented past their content, a control character in a comment is an error, empty lines after an escaped line break are line feeds, and an anchored empty list item no longer absorbs the next item.