NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1172 most downloaded on crates.io
A fully YAML 1.2 compliant YAML parser
Last release 27 days ago
11 Sep 2026
Release timing varies
gaps range from 1 weeks to 8 months
Nearly every release is documented
notes for 15 of 15 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
15 releases · first in 2024
(#82) encoding_rs was pinned to versions prior to v0.8.40 to maintain the current MSRV.
Changes:
encoding_rs was
pinned to versions prior to v0.8.40 to maintain the current MSRV.Development:
The minimum supported Rust version is now v1.85.0.
Changes:
hashlink was upgraded to v0.12.1.quickcheck (dev-only dependency) was upgraded to v1.1.0.toml (dev-only dependency) was upgraded to v1.1.4.Marker::index.One column per month.
(#78) Fix parsing short YAML documents to avoid infinite loops.
Changes:
The actions/checkout github actions dependency was updated.
Changes:
actions/checkout github actions dependency was updated.hashlink dependency was updated to v0.11.Parse True , TRUE , False and FALSE as bools instead of strings. This is in line with the core schema .
True, TRUE, False and FALSE as bools instead of strings.--no-default-features (#60)Bug fixes:
True, TRUE, False and FALSE as bools instead of strings.
This is in line with the core schema.Exclude yaml-test-suite from the Cargo package. This reverts the license changes from last version.
Changes
yaml-test-suite from the Cargo package.libtest-mimic from dev-dependenciesParse (?i)[+-]?(?:inf|infinity|nan) as strings instead of floats
Bug fixes
(?i)[+-]?(?:inf|infinity|nan) as strings instead of floatsChanges
yaml-test-suite MIT license. This means wePlease review your license requirement following this release.
Parse .NaN as float instead of NaN .
Bug fixes
.NaN as float instead of NaN.Update dependencies. hashlink had a bogus requirement of >= 0.8, < 0.10 , sorry. As mentioned here , range requirements shouldn't be used and I haven'
Breaking Changes
hashlink had a bogus requirement of >= 0.8, < 0.10, sorry. As mentioned here, range requirements shouldn't be used and I haven't been vigilant enough when reviewing. The requirement is now set to 0.10.Changes
y and n to appease the YAML 1.1 lords.Update dependencies. Since hashlink is exposed (through Yaml::Hash ) and has been updated from 0.8.4 to 0.9.1, the new version of yaml-rust2 will not
Breaking Changes
hashlink is exposed (through Yaml::Hash) and has been updated from 0.8.4 to 0.9.1, the new version of yaml-rust2 will not link properly if you explicitly rely on hashlink v0.8.Bug fixes
"" instead of "~".Features
Yaml::is_hash.Index and IntoIterator implementations for Yaml to better explain their quirks and design decisions.( #29 ) Fix parsing failing for deeply indented scalar blocks.
Bug fixes
(#29) Fix parsing failing for deeply indented scalar blocks.
(#21-comment) Fix parsing failing with comments immediately following a YAML tag.
Features
(#19) Yaml now implements IndexMut<usize> and IndexMut<&'a str>. These functions may not return a mutable reference to a BAD_VALUE. Instead, index_mut() will panic if either:
IndexMut's requirementsYaml variant doesn't match Yaml::Array for usize or Yaml::Hash for &'a strUse cargo features
This allows for more fine-grained control over MSRV and to completely remove debug code from the library when it is consumed.
The encoding feature, governing the YamlDecoder, has been enabled by default. Users of @davvid's fork of yaml-rust or of yaml-rust2 might already use this. Users of the original yaml-rust crate may freely disable this feature (cargo <...> --no-default-features) and lower MSRV to 1.65.0.
Duplicate keys no longer allowed
Instead of silently choosing one of two values sharing the same key in a mapping, we now issue an error. This behavior is part of the YAML specification, but not tested by the yaml-test-suite (the parser needs to emit events for both key-values). Additionally, there is no standard way of defining which value should be chosen in case of a duplicate.
An additional enum YamlDecoderTrap has been added to abstract the underlying library and avoid breaking changes in the future. This additionally lifts…
Breaking Changes:
encoding library has been replaced with encoding_rs. If you use the
trap of YamlDecoder, this change will make your code not compile.
An additional enum YamlDecoderTrap has been added to abstract the
underlying library and avoid breaking changes in the future. This
additionally lifts the encoding dependency on your project if you were
using that feature.
YamlDecoderTrap::Call has changed:encoding::types::DecoderTrap has been replaced with YamlDecoderTrap.// Before, with `encoding::types::DecoderTrap::Call`
fn(_: &mut encoding::RawDecoder, _: &[u8], _: &mut encoding::StringWriter) -> bool;
// Now, with `YamlDecoderTrap::Call`
fn(_: u8, _: u8, _: &[u8], _: &mut String) -> ControlFlow<Cow<'static str>>;
Please refer to the YamlDecoderTrapFn documentation for more details.Features:
Tags can now be retained across documents by calling keep_tags(true) on a
Parser before loading documents.
(#10
(#12)
YamlLoader structs now have a documents() method that returns the parsed
documents associated with a loader.
Parser::new_from_str(&str) and YamlLoader::load_from_parser(&Parser) were added.
Development:
tests/*.rs.inc files to prevent github from
classifying them as C++ files.Multi-line strings are now emitted using block scalars.
Features:
Multi-line strings are now emitted using block scalars.
Error messages now contain a byte offset to aid debugging. (#176)
Yaml now has or and borrowed_or methods.
(#179)
Yaml::load_from_bytes() is now available.
(#156)
The parser and scanner now return Err() instead of calling panic.
Development:
is_xxx functions were moved into the private char_traits module.
Development:
is_xxx functions were moved into the private char_traits module.
Benchmarking tools were added.
Performance was improved.
The parser now supports tag directives. (#35
Your coding agent can read these notes before it upgrades. Set up the MCP server →