Skip to content

Releases: serdedotnet/serde

v0.7.0

16 Nov 22:46
6190e2d
Compare
Choose a tag to compare

What's Changed

This is a big change -- it moves fully to the ISerdeInfo support. Old interfaces without ISerdeInfo are removed.

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.7.0-preview2

31 Jul 02:43
5749189
Compare
Choose a tag to compare
v0.7.0-preview2 Pre-release
Pre-release

What's Changed

Note: recreating release due to upload bug

This is a big change to the SerdeInfo surface area and usage. The primary change is to move from a single type, SerdeInfo, to an interface, ISerdeInfo. This also expands the set of capabilities for ISerdeInfo and lets it represent more kinds of types. There is some initial work at supporting unions, although unions must still be implemented manually (the source generator doesn't do it automatically).

Full Changelog: v0.7.0-preview1...v0.7.0-preview2

v0.7.0-preview1

06 Jul 19:28
94efd9d
Compare
Choose a tag to compare
v0.7.0-preview1 Pre-release
Pre-release

This release continues themes from the previous release, removing support for the old ISerialize interface and moving entirely to ISerialize<T>. It also moves more functionality into TypeInfo, which removes the need for generic virtual methods in some cases.

What's Changed

  • Get rid of old ISerialize, non-TypeInfo support by @agocke in #172
  • Remove SerializeNotNull by @agocke in #173
  • Set serde-dn.sln as the default sln by @agocke in #174
  • Move more pieces over to TypeInfo by @agocke in #175
  • Refactor code and reduce duplication by @agocke in #176
  • Fix ThrowIfMissing to allow making arbitrary fields optional by @agocke in #177
  • Add more info to TypeInfo by @agocke in #178

Full Changelog: v0.6.0...v0.7.0-preview1

v0.6.0

01 Jul 04:02
2a802dd
Compare
Choose a tag to compare

What's Changed

This is a big release that should be mostly compatible with v0.5.2. There are two large changes:

  1. There is a new ISerialize<T> interface which will eventually become the replacement for ISerialize entirely. The idea is to mirror the ISerialize<T> and IDeserialize<T> interfaces and use the same structure for both.
  2. There is a new TypeInfo class which is used to drive serialization of pre-defined types. This should improve code quality and performance in the most common scenarios.

The next release will be a breaking change to move off ISerialize to ISerialize<T> entirely. This is a transitional release where both interfaces stay around.

Full Changelog: v0.5.2...v0.6.0

v0.6.0-preview7

28 Jun 23:09
fa77668
Compare
Choose a tag to compare
v0.6.0-preview7 Pre-release
Pre-release

What's Changed

Adds a new "Serde.TypeInfo" abstraction. This abstraction addresses a lot of different issues:

  • Avoids overuse of generic virtual methods, causing perf and size problems on Native AOT
  • Reduces codegen by removing the expensive visitor abstraction
  • Provides uniform way of accessing attributes at little to no performance overhead

Right now this abstraction is provided in addition to the old visitors. Once scenarios have been proved out, old abstractions will likely be removed. Some visitor abstraction will likely stick around for scenarios that need maximum flexibility, but they will be less common and more specialized.

Full Changelog: v0.6.0-preview6...v0.6.0-preview7

v0.6.0-preview6

20 Feb 06:51
3c7314e
Compare
Choose a tag to compare
v0.6.0-preview6 Pre-release
Pre-release

What's Changed

This version has two important and impactful breaking changes.

  1. "Visitors" for deserialization are no longer passed as generic parameters in IDeserializer.Deserialize*. If you implemented IDeserializer, you will need to change all your methods to take IDeserializeVisitor<T> instead.
  2. The IDeserialize.Deserialize method now takes an interface instead of a constrained generic parameter.
  • Use boxed interface visitors instead of constrained generics by @agocke in #159
  • Remove constrained generic from Deserialize by @agocke in #160
  • Bump version to preview 6 by @agocke in #161

Full Changelog: v0.6.0-preview5...v0.6.0-preview6

v0.6.0-preview5

04 Feb 07:17
c432b61
Compare
Choose a tag to compare
v0.6.0-preview5 Pre-release
Pre-release

What's Changed

Full Changelog: v0.6.0-preview4...v0.6.0-preview5

v0.6.0-preview4

04 Feb 06:42
47df3aa
Compare
Choose a tag to compare
v0.6.0-preview4 Pre-release
Pre-release

What's Changed

Full Changelog: v0.6.0-preview3...v0.6.0-preview4

v0.6.0-preview3

03 Feb 04:20
Compare
Choose a tag to compare
v0.6.0-preview3 Pre-release
Pre-release

What's Changed

Full Changelog: v0.6.0-preview1...v0.6.0-preview3

v0.6.0-preview1

26 Jan 06:09
e8d4ddb
Compare
Choose a tag to compare
v0.6.0-preview1 Pre-release
Pre-release

What's Changed

  • Also implement ISerializeWrap on enum wrappers by @agocke in #143
  • Add generic ISerialize by @agocke in #144
  • Bump package version to 0.5.3 by @agocke in #145
  • Add sample for deserializing inline union by @agocke in #147
  • Implement ISerialize as well as ISerialize by @agocke in #148
  • Implement a better union example and allow SerdeTypeOptions on enum by @agocke in #149
  • Preview version by @agocke in #150

Full Changelog: v0.5.2...v0.6.0-preview1