Releases: aaubry/YamlDotNet
Releases · aaubry/YamlDotNet
Version 4.0.0
This a major release that introduces a few breaking changes.
Breaking changes
- The constructors of
Serializer
andDeserializer
are now obsolete
Except for the parameterless versions. TheSerializerBuilder
andDeserializerBuilder
classes should now be used to configure and create instances of the (de)serializer. - Replaced the
IYamlSerializable
interface withIYamlConvertible
TheIYamlSerializable
is now obsolete, but will be kept until the next major release. - Removed
EventReader
EventReader
was a wrapper overIParser
that offered some abstractions for parsing,
but also had some design flaws. It has been replaced by extension methods forIParser
.
The extension methods provide the same functionality,
and allow to always use the same type to represent the parser. - Dropped support for
YamlAliasAttribute
This class has been obsolete for many releases, and it was time to let it go.
New features
SerializerBuilder
andDeserializerBuilder
This is an important change that adds "builders" that can be used
to configure theSerializer
andDeserializer
through a fluent syntax.
The main objective of this is to allow more control over
the composition of services performed by these two classes.
This means that every aspect of the composition should be
extensible / overridable. Things like injecting a custom TypeInspector
or replacing the the default ArrayNodeDeserializer with
an alternative implementation become possible and easy.
In order to avoid breaking existing code,
the constructors of Serializer and Deserializer have been kept
but marked as obsolete. In a future release they will be discarded.- Added the
IYamlConvertible
interface
This new interface differs in that its methods receive a delegate that can be used
to reuse the current serializer or deserializer. - Improved the usability of
YamlDocument
and other RepresentationModel classes:- Added conversion operators and indexers for easier parsing and construction of YamlNodes.
YamlMappingNode
,YamlSequenceNode
andYamlScalarNode
now implementIYamlConvertible
,
which means that these types can appear in the middle of an object that is being serialized or
deserialized, and produce the expected result.
- Added support for alternative Boolean values
- True:
true
,y
,yes
,on
- False:
false
,n
,no
,off
.
- True:
Bug fixes
- Serialization Error when string starts with quote
- YamlVisitor is marked as obsolete, but no YamlVisitorBase class exists
- Do not assign anchors to scalars during serialization.
v3.9.0
Version 3.9.0
New features:
- Add YamlVisitorBase as an improved replacement for YamlVisitor
- YamlVisitor is now obsolete, and will be removed in a future release.
- Ensure compatibility with AOT compilation, for platforms that do not allow dynamic code generation, such as IOS or PS4.
- Add Yaml attribute overrides feature, similar to XML Serializer attribute overrides behavior.
- Add a YamlNodeType enumeration property to nodes.
Bug fixes:
- Fix #166 - Guid conversion to JSON is unquoted.
- Ignore enum value case during deserialization.
- Improve newline handling
- In some cases, consecutive newlines were incorrectly parsed or emitted.
- Fix #177 - double.MaxValue serialization.
- Register custom type converters with higher precedence than the built-in converters.
Fixes in handling of scalar
New features:
- Add support for different scalar integer bases.
Addresses issue #113. Adds basic support for deserializing scalar integers
written in binary, octal, decimal, hex, and base 60, as allowed in the YAML
specification; see http://yaml.org/type/int.html. Adds unit tests for each
of these bases as well. - Add dnx compatibility to the NuGet packages.
- Do not throw exception if a tag does not contain a valid type name.
Fixes and improvements:
- Cache type metadata.
- Fix wrong type when deserializing UInt16.
- Fix handling of special float values, such as NaN, PositiveInfinity and NegativeInfinity.
- Properly quote empty strings.
- Properly handle non-Unicode encodings when emitting scalars.
Add missing overload
This is a minor update that simply adds an overload of YamlStream.Load to be able to specify the EventReader.
Fix bug in portable build
Bug fixes:
- Bug in the GetPublicMethods implementation for portable.
Scalar style, optional anchor assignment and Unity
New features:
- Ability to opt out of anchor assignment during
YamlStream.Save()
. - Allow the style of scalar properties to be specified through the
YamlMember
attribute. - Add solution configuration to target "Unity 3.5 .net Subset Base Class Libraries".
Bug fixes:
- Do not compare nodes by value while assigning anchors. It is the responsibility of the user to use the same reference if they want an alias.
- Fixed #121: Finding properties in parent interfaces
YamlMember improvements
- Add native support of System.Guid serialization.
- Add properties to YamlMemberAttribute:
- Order: specifies the order of the members when they are serialized.
- Alias: instructs the deserializer to use a different field name for serialization.
- The YamlAliasAttribute is now obsolete. New code should use YamlMemberAttribute instead.
- Throw proper exceptions, with correct marks, when deserialization of a node fails.
Changes and fixes on the Scanner to make it more usable
- Report the location of comments correctly, when the scanner is created with "skipComments = false"
- In case of syntax error, do not report an empty range and skip to the next token.
- Make the scanner and related types serializable, so that the state of the scanner can be captured and then restored later (assuming that the TextReader is also serializable).
Add a signed package and portable versions
This release adds a signed package and portable versions of the library.
.NET binary serialization
Added suport for .NET binary serialization.