0.9.0
This including important bug fixes and some performance improvements. Following note includes features which were released in 0.9.0 previews.
NEW FEATURES
- Enum name transformation via
SerializationContext.EnumSerializationOptions.NameTransformer
.
Built in transformer is placed inEnumTransoformers
.
Issue #184. - Polymorphic attributes now supports type qualification. Issue #171.
- Runtime type polymorphism now supports name based type verification. This feature allows to prevent loading malicious or unknown types ibefore assembly loading.
- Asymmetric serializers. You can generate "pack only" serializer when you set SerializationContext.CompabilityOptions.AllowAsymmetricSerializer to true. #68.
- Built in serializer for System.Text.StringBuilder now supports UnpackTo.
- Add serialization to/from MessagePackObject as extension methods of MessagePackSerializer and MessagePackSerializer. Issue #90
- Users of serializer code generator API can specify TextWriter to output. This may improve tooling chain.
- Users of serializer code generator API can suppress [DebuggerNonUserCode] attribute to enable debugger step in.
- SerializerRepository API now expose ContainsFor and GetRegisteredSerializers methods to investigate registered serializers.
- SerializationContext.DisablePrivilegedAccess for restricted environment like Silverlight to select between granting permission or relinquish non-public access.
- UWP build is now included.
- ByteArrayPacker/ByteArrayUnpacker. They are suitable for fixed pattern serialization/deserialization.
- Fast mode of unpacker which omits nested collection management. This option can be disabled with setting UnpackerOptions.ValidationLevel to ValidationLevel.Collection.
IMPROVEMENTS
- Byte array based serialization API now uses ByteArrayPacker/ByteArrayUnpacker, improves about 40% faster than Stream based.
- Deserialization now uses ValidationLevel.None, improves about 30% faster than validating one.
- Packer/Unpacker performance improvements about 10-20%. As a result, new byte array "fast" unpacker is about 3x faster than previous unpacker.
BUG FIXES
- Fix nuspec to prevent old NuGet clients which do not support .NET Standard TFMs. Issue #177.
- The generated code for the type which has Tuple typed member uses old PackHelper API.
- Fix struct deserialization. Issue #189. Thank you @samcragg!
- Fix asynchronous packing is not be emitted correctly. Issue #201
- Fix SerializerCodeGenerator does not handle collections correctly for IsRecursive = true. Issue #203
- Fix extra field causes IndexOutOfBoundException when reflection based serializers are used. Issue #199
- Fix some built-in serializers throws InvalidOperationException instead of SerializationException for type errors. Issue #204
- Fix a combination of readonly members and collection members incorrect code generation when the type also have deserialization constructor. Issue #207.
- Fix built-in collection serializers such as List serializer causes SecurityException when the program run in restricted environment like Silverlight. Issue #205.
- Fix null items of complex type in List or Dictionary<TKey, TValue> will not be deserialized as null. Issue #211. (from 0.8.1)
- Fix types which implement IPackable and IUnpackable but do not have any members cannot be serialized. Issue #202
- Fix Windows Native build error. Issue #206.
- Fix constructor deserialization fails if the constructor parameters order is not lexical. Issue #233
- Fix asynchronous multi dimensional array deserialization corruption.
- Fix enum serialization throws NullReferenceException in Unity. Issue #215.
- Fix MessagePackSerializer.Capability does not work correctly in Unity.
- Fix polymorphic serializer error in Unity.