All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Ignore
#![type = "..."]and#![schema = "..."]attributes (#596)
- Breaking: Removed the
ron::error::Error::Base64Errorvariant. (#566) - Added
into_inner()method toron::ser::Serializerto retrieve the inner writer. (#588) - Removed the
base64dependency. (#566)
- Format-Breaking: Remote base64-encoded byte strings deserialisation, replaced by Rusty byte strings in v0.9.0 (#566)
- Fixed untagged enum deserialisation for serde >= 1.0.220 with better serde content detection (#582)
- Breaking:
SpannedErrornow stores the full error span in span: Span { start: Position, end: Position }`, to facilitate, e.g., language server highlighting of syntax errors. - Breaking: Added
no_stdsupport via a newstdfeature (enabled by default). With default features disabled, you must enable thestdfeature to accessde::from_reader, and thestd::iooperations onOptions, such asfrom_reader,from_reader_seed,to_io_writer, andto_io_writer_pretty(#567) - Breaking: Fixed (again)
ron::value::Numberto ensure it is non-exhaustive, to avoid breakingmatches when feature unification enables more of its variants than expected (#568)
- Add a new example
file_read_write_vec.rsfor reading and writingVec<T>to/from files. (#573)
- Add
ron::Options::to_io_writerandron::Options::to_io_writer_prettyto allow writing into anio::Writer(#561) - Breaking:
ron::value::Numberis now non-exhaustive, to avoid breakingmatches when feature unification enables more of its variants than expected (#564)
- Add
ron::value::RawValuehelper type which can (de)serialize any valid RON (#407) - Add
escape_stringsoption toPrettyConfigto allow serialising with or without escaping (#426) - Add
compact_mapsandcompact_structsoptions toPrettyConfigto allow serialising maps and structs on a single line (#448) - Add minimal support for
#[serde(flatten)]with roundtripping through RON maps (#455) - Add minimal roundtripping support for
#[serde(tag = "tag")],#[serde(tag = "tag", content = "content")], and#[serde(untagged)]enums (#451) - Breaking: Expand the
value::Numberenum to explicitly encode all possible number types (#479) - Add
number_suffixesoption toPrettyConfigto allow serialising numbers with their explicit type suffix, e.g.42i32(#481) - Allow
ron::value::RawValueto capture any whitespace to the left and right of a ron value (#487) - Breaking: Enforce that ron always writes valid UTF-8 (#488)
- Add convenient
Value::fromimpls (#498) - Add new extension
explicit_struct_nameswhich requires that struct names are included during deserialization (#522) - Add new path-based field metadata serialization support via
PrettyConfig(#544) - Breaking: Change
PrettyConfigso thatnew_line,indentorandseparatorare allCow<'static, str>instead ofString(#546)
- [Non-API] Breaking: Treat
Somelike a newtype variant withunwrap_variant_newtypes(#465) - Allow parsing floating point literals with underscores (#481)
- Format-Breaking: Switch from base64-encoded to Rusty byte strings, still allow base64 deserialising for now (#438)
- Fix issue #241 and allow parsing numbers with explicit type suffixes, e.g.
1u8or-1f32(#481) - Add support for byte literals as strongly typed unsigned 8-bit integers (#438)
- Fix issue #321 and allow parsing UTF-8 identifiers (#488)
- Fix parsing
ras a self-describing struct or variant name (and not the start of a raw string) (#465) - Fix serialising raw strings containing a literal backslash (#465)
- Fix serialising
Noneinside a stack of nestedOptions with#![enable(implicit_some)]enabled (#465) - Fix deserialising deserialising
A('/')into aron::Value(#465) - Fix issue #445 and allow parsing
+unsignedas an unsigned int (#479) - Fix serialising reserved identifiers
true,false,Some,None,inf[f32|f64], andNan[f32|f64] (#487) - Disallow unclosed line comments at the end of
ron::value::RawValue(#489) - Fix parsing of struct/variant names starting in
None,Some,true, orfalse(#499) - Fix deserialising owned string field names in structs, allowing deserializing into
serde_json::Values (#511)
- Add CIFuzz GitHub action (#429)
- Update the arbitrary fuzzer to check arbitrary serde data types, values, and
ron::ser::PrettyConfigs (#465) - Add a benchmark for PRs that runs over the latest fuzzer corpus (#465)
- Fuzz serde enum representations and collect current limitations in ron and serde (#502)
- Update
base64dependency to version 0.22 (#529) - Fix issue #556 and update minium dependency versions (#557)
- Fix issues #277 and #405 with
Value::MapIntoIterand extraneous item check forValue::Seq(#406) - Fix issue #401 with correct raw struct name identifier parsing (#402)
- Fix issue #410 trailing comma parsing in tuples and
Some(#412) - Error instead of panic when deserializing non-identifiers as field names (#415)
- [Non-API] Breaking: Fix issue #307 stack overflow with explicit recursion limits in serialising and deserialising (#420)
- Fix issue #423 deserialising an identifier into a borrowed str (#424)
- Bump MSRV to 1.57.0 and bump dependency:
base64to 0.20 (#431) - Bump dependency
base64to 0.21 (#433) - Depend on
serde_derivedirectly to potentially enable more compilation parallelism (#441) - [Non-API] Breaking: Bump
bitflagsdependency to 2.0, changesserdeimpls ofExtensions(#443) - Add
Map::retainmethod (#460) - Bump MSRV to 1.64.0 and bump dependency:
indexmapto 2.0 (#459)
- Bump dependencies:
bitflagsto 1.3,indexmapto 1.9 (#399) - Add
integer128feature that guardsi128andu128(#304, #351) - Fix issue #265 with better missing comma error (#353)
- Fix issue #301 with better error messages (#354)
- Fix issue #337 by removing
decimal_floatsPrettyConfig option and unconditional decimals in floats (#363) - Fix issue #203 with full de error positioning (#356)
- Expand the
ron::Errorenum to distinguishserdeerrors likeNoSuchEnumVariantandMissingStructFieldwith error positioning (#394) - Bump MSRV to 1.56.0 (#396)
- Add
struct_namesoption toPrettyConfig(#329) - Fix newtype variant unwrapping around enum, seq and map (#331)
- Implement
unwrap_newtypesextension during serialization (#333) - Implement
unwrap_variant_newtypesextension during serialization (#336) - Add
compact_arrays(#299) andseparatoroptions toPrettyConfig(#349) - Fix issue #338 value map roundtrip (#341)
- Fix issue #289 enumerate_arrays comments (#344)
- Report struct name in expected struct error (#342)
- Add
Optionsbuilder to configure the RON serde roundtrip (#343) - Fix issue #367 with eager implicit some (#368)
- Fix issue #359 with
DeserializeSeedsupport (#360) - Fix issue #370 with
FromStr-equivalent float EBNF andError::FloatUnderscore(#371) - Fix issue #374 extraneous .0 for small floats (#372)
- Deprecate
Serializer::new(#382)
- Add
unwrap_variant_newtypesextension (#319) - Change MSRV to 1.36
- Fix serialization of raw identifiers (#323)
- support serde renames that start with a digit
- bump
base64dependency to 0.13
- Added
decimal_floatsPrettyConfig option, which always includes decimals in floats (1.0vs1) (#237) - Fixed EBNF grammar for raw strings (#236, unsigned integers (#248), and nested comments (#272)
- Added
ser::to_writer_pretty(#269) - Sped up parsing using table predicates (#276)
- Fix array formatting regression (#260)
- Implement integer support in Numbers (#210)
- Port
ser::Serializertoio::Write(#206) - Support i128 and u128 (#219)
- Allow pretty ser to work with implicit-some extension (#182)
- Make PrettyConfig future-proof (#173)
- Use indexmap to preserve order (optional) (#172)
- Add tests for different enum representations (#166)
- Implement inf, -inf and NaN handling (#163)
- Add VS code language tooling (#160)
- Be smarter about integer deserialization (#157)
- Fix parsing of borrowed strings (#228)
- Fix depth limit test for off-by-one fix (#225)
- Remove deprecated uses of
Error::description(#208) - Preserve ordering of map sequences (#197)
- Remove unneeded Neg requirement for signed_integer (#193)
- Ensure "Untagged tuple-like enum variants not deserializing correctly……" is fixed (#170)
- Update
serderequirement to 1.0.60 (#226) - Replace Travis with GitHub actions (#223)
- Rename
format_doc_commentstoformat_code_in_doc_comment - Update base64 requirement from 0.11 to 0.12 (#204)
- Update base64 requirement from 0.10 to 0.11 (#195)
- Update
serde_bytesto 0.11 (#164)
- Increase source compability from Rust
1.34.0to1.31.0by not relying onas _imports (#156)
- Don't insert new lines in empty arrays or maps (#150)
- Transition to Rust 2018 (#149)
- Handle tuple deserialization in deserialize_any properly (#124)
serde_bytesfields to be encoded using base64. (#109)
- Allow raw string literals (#114)
- Now depends on
base640.9.2.
- Allow whitespace in newtype variants (#104)
- Add multi-line comments (#98)
- Allow more whitespace inside newtypes (#103)
- Deep array indexing (#88)
- Pretty sequence indexing (#86)
- Add unicode support for chars (#80)
- Add support for hex, oct and bin numbers (#78)
- Allow implicit Some (#75)
- Add grammar specification (#73)
- Add extension support and first extension, unwrap_newtypes (#72)
- Directly serialize
f32(#81)
- Implement sequence indexing (#87)
- Remove ident variable from Sublime syntax (#71)
- Allow creating a new serializer (#70)
- Sublime syntax highlighter (#67)
- Add support for integers (#65)
- Implement
DeserializerforValue(#64)
- Fix deserializing of ignored fields (#62)
- Removed indentation from tuple variant pretty encoder (#57)
- Be more permissive wrt whitespace decoding (#41)
- Add utility function to deserialize from
std::io::Read(#42)
- Reorganize deserialization modules (#30)
- Rework deserializer not to require
pomcrate #27, (#38) - Dual license under Apache 2.0 and MIT (#26)
- Use CRLF for serializatio on Windows (#32)
- Fix bors-ng to work with travis (#31)
- Handle escapes (#23)
- Improve error reporting (#29)
- Allow decoding of comments (#28)
- Add
prettyoption to serializer (#25) - Add roundtrip tests (#24)
Initial release