Breaking Changes
- Update dependencies.
Since
hashlink
is exposed (throughYaml::Hash
) and has been updated from 0.8.4 to 0.9.1, the new version ofyaml-rust2
will not link properly if you explicitly rely onhashlink v0.8
. Existing code with v0.8.4 should still compile fine in v0.9.1 (see hashlink's v0.9.0 changelog).
Bug fixes
- (#37)
Parse empty scalars as
""
instead of"~"
.
Features
- Add
Yaml::is_hash
. - Add better doccomments to the
Index
andIntoIterator
implementations forYaml
to better explain their quirks and design decisions.
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 implementsIndexMut<usize>
andIndexMut<&'a str>
. These functions may not return a mutable reference to aBAD_VALUE
. Instead,index_mut()
will panic if either:- The index is out of range, as per
IndexMut
's requirements - The inner
Yaml
variant doesn't matchYaml::Array
forusize
orYaml::Hash
for&'a str
- The index is out of range, as per
-
Use 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 theYamlDecoder
, has been enabled by default. Users of@davvid
's fork ofyaml-rust
or ofyaml-rust2
might already use this. Users of the originalyaml-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.
Breaking Changes:
- The
encoding
library has been replaced withencoding_rs
. If you use thetrap
ofYamlDecoder
, this change will make your code not compile. An additional enumYamlDecoderTrap
has been added to abstract the underlying library and avoid breaking changes in the future. This additionally lifts theencoding
dependency on your project if you were using that feature.- The signature of the function for
YamlDecoderTrap::Call
has changed: - The
encoding::types::DecoderTrap
has been replaced withYamlDecoderTrap
.Please refer to the// 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>>;
YamlDecoderTrapFn
documentation for more details.
- The signature of the function for
Features:
-
Tags can now be retained across documents by calling
keep_tags(true)
on aParser
before loading documents. (#10 (#12) -
YamlLoader
structs now have adocuments()
method that returns the parsed documents associated with a loader. -
Parser::new_from_str(&str)
andYamlLoader::load_from_parser(&Parser)
were added.
Development:
- Linguist attributes were added for the
tests/*.rs.inc
files to prevent github from classifying them as C++ files.
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
andborrowed_or
methods. (#179) -
Yaml::load_from_bytes()
is now available. (#156) -
The parser and scanner now return Err() instead of calling panic.
Development:
-
The documentation was updated to include a security note mentioning that yaml-rust is safe because it does not interpret types. (#195)
-
Updated to quickcheck 1.0. (#188)
-
hashlink
is now used instead oflinked_hash_map
.
Development:
-
is_xxx
functions were moved into the privatechar_traits
module. -
Benchmarking tools were added.
-
Performance was improved.