Skip to content

0.9.0

Compare
Choose a tag to compare
@yfakariya yfakariya released this 26 Aug 13:22

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 in EnumTransoformers.
    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.