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.
- Add
ron::value::RawValue
helper type which can (de)serialize any valid RON (#407) - Add
escape_strings
option toPrettyConfig
to allow serialising with or without escaping (#426) - Add
compact_maps
andcompact_structs
options toPrettyConfig
to 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::Number
enum to explicitly encode all possible number types (#479) - Add
number_suffixes
option toPrettyConfig
to allow serialising numbers with their explicit type suffix, e.g.42i32
(#481) - Allow
ron::value::RawValue
to 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::from
impls (#498) - Add new extension
explicit_struct_names
which requires that struct names are included during deserialization (#522) - Add new path-based field metadata serialization support via
PrettyConfig
(#544) - Breaking: Change
PrettyConfig
so thatnew_line
,indentor
andseparator
are allCow<'static, str>
instead ofString
(#546)
- [Non-API] Breaking: Treat
Some
like 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.
1u8
or-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
r
as 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
None
inside a stack of nestedOption
s with#![enable(implicit_some)]
enabled (#465) - Fix deserialising deserialising
A('/')
into aron::Value
(#465) - Fix issue #445 and allow parsing
+unsigned
as 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::Value
s (#511)
- Add CIFuzz GitHub action (#429)
- Update the arbitrary fuzzer to check arbitrary serde data types, values, and
ron::ser::PrettyConfig
s (#465) - Add a benchmark for PRs that runs over the latest fuzzer corpus (#465)
- Fuzz serde enum representation and flatten attributes and collect current limitations in ron and serde (#502)
- Update
base64
dependency to version 0.22 (#529)
- Fix issues #277 and #405 with
Value::Map
IntoIter
and 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:
base64
to 0.20 (#431) - Bump dependency
base64
to 0.21 (#433) - Depend on
serde_derive
directly to potentially enable more compilation parallelism (#441) - [Non-API] Breaking: Bump
bitflags
dependency to 2.0, changesserde
impls ofExtensions
(#443) - Add
Map::retain
method (#460) - Bump MSRV to 1.64.0 and bump dependency:
indexmap
to 2.0 (#459)
- Bump dependencies:
bitflags
to 1.3,indexmap
to 1.9 (#399) - Add
integer128
feature that guardsi128
andu128
(#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_floats
PrettyConfig option and unconditional decimals in floats (#363) - Fix issue #203 with full de error positioning (#356)
- Expand the
ron::Error
enum to distinguishserde
errors likeNoSuchEnumVariant
andMissingStructField
with error positioning (#394) - Bump MSRV to 1.56.0 (#396)
- Add
struct_names
option toPrettyConfig
(#329) - Fix newtype variant unwrapping around enum, seq and map (#331)
- Implement
unwrap_newtypes
extension during serialization (#333) - Implement
unwrap_variant_newtypes
extension during serialization (#336) - Add
compact_arrays
(#299) andseparator
options 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
Options
builder to configure the RON serde roundtrip (#343) - Fix issue #367 with eager implicit some (#368)
- Fix issue #359 with
DeserializeSeed
support (#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_newtypes
extension (#319) - Change MSRV to 1.36
- Fix serialization of raw identifiers (#323)
- support serde renames that start with a digit
- bump
base64
dependency to 0.13
- Added
decimal_floats
PrettyConfig option, which always includes decimals in floats (1.0
vs1
) (#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::Serializer
toio::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
serde
requirement to 1.0.60 (#226) - Replace Travis with GitHub actions (#223)
- Rename
format_doc_comments
toformat_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_bytes
to 0.11 (#164)
- Increase source compability from Rust
1.34.0
to1.31.0
by 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_bytes
fields to be encoded using base64. (#109)
- Allow raw string literals (#114)
- Now depends on
base64
0.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
Deserializer
forValue
(#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
pom
crate #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
pretty
option to serializer (#25) - Add roundtrip tests (#24)
Initial release