Releases: serdedotnet/serde
v0.7.0-preview2
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).
- Rename TypeInfo to SerdeInfo by @agocke in #180
- Include SerdeInfo for all members by @agocke in #182
- Move over to ISerdeInfo interface by @agocke in #183
- Rename ISerdeInfo methods by @agocke in #184
- Add TypeAttributes to ISerdeInfo by @agocke in #185
- Fix ThroughType attribute named arg by @agocke in #186
- Provide an error if the explicit wrapper is bad by @agocke in #187
- More SerdeInfo renames by @agocke in #190
Full Changelog: v0.7.0-preview1...v0.7.0-preview2
v0.7.0-preview1
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
What's Changed
This is a big release that should be mostly compatible with v0.5.2. There are two large changes:
- There is a new
ISerialize<T>
interface which will eventually become the replacement forISerialize
entirely. The idea is to mirror theISerialize<T>
andIDeserialize<T>
interfaces and use the same structure for both. - 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.
- 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
- Bump version of main project by @agocke in #151
- Remove contravariance from ISerialize by @agocke in #152
- Fix benchmarking project by @agocke in #153
- Add exe proj for doing perf traces by @agocke in #154
- Fix pack by @agocke in #155
- Also fix publish by @agocke in #156
- Fix type wrapping order by @agocke in #157
- Bump serde version by @agocke in #158
- 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
- Add FieldMap abstraction by @agocke in #162
- Rename FieldMap to Typeinfo by @agocke in #163
- Generate typeinfo in source generator by @agocke in #164
- Implement Deserialize using TypeInfo by @agocke in #165
- Fix assignment tracking by @agocke in #166
- Upgrade to net8.0 by @agocke in #167
- Allow using TypeInfo for deserializing collections by @agocke in #168
- Bump version to p7 and move to net8.0 by @agocke in #169
- Update Serde version to 0.6.0 by @agocke in #170
- Use TypeInfo in serialization by @agocke in #171
Full Changelog: v0.5.2...v0.6.0
v0.6.0-preview7
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
What's Changed
This version has two important and impactful breaking changes.
- "Visitors" for deserialization are no longer passed as generic parameters in
IDeserializer.Deserialize*
. If you implementedIDeserializer
, you will need to change all your methods to takeIDeserializeVisitor<T>
instead. - 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
What's Changed
Full Changelog: v0.6.0-preview4...v0.6.0-preview5
v0.6.0-preview4
What's Changed
Full Changelog: v0.6.0-preview3...v0.6.0-preview4
v0.6.0-preview3
v0.6.0-preview1
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