Skip to content

Releases: msgpack/msgpack-cli

0.8.0

31 Jul 12:15
Compare
Choose a tag to compare

This release will contain new features about map based serialization tweaking.
This release does not have any changes from 0.8.0-beta

BREAKING CHANGES

  • MessagePackDeserializationConstructorAttribute now always used when the type has default constructor.
    The previous behavior was bug as XML documentatino said.

NEW FEATURES

  • Null member skipping in map based serialization.
    This behabvior must be enabled via SerializationContext.DictionarySerializationOptions.OmitNullEntry.
    Issue #136.
  • Dictionary key transformation via SerializationContext.DictionarySerializationOptions.KeyTransformer.
    Built in transformer is placed in DictionaryKeyTransoformers.
    Issue #175.
  • Add F# collections support. Related to issue #178.

BUG FIXES

  • Fix MessagePackDeserializationConstructorAttribute is ignored when the type has default constructor.
  • Make Xamarin.iOS unified API compliant. Issue #181.
  • Fix mpu.exe -l.

IMPROVEMENTS

  • Relax constructor based deserialization condition. It will be used even if there are any settable members(including private property setters). Part of issue #178 and fixes issue #135.
  • PackHelpers and UnpackHelpers APIs are now backward compatible.

0.7.1

10 Jul 12:39
Compare
Choose a tag to compare

This release includes minor improvements.

IMPROVEMENTS

  • Relaxes .NET Framework version. .NET 4.5.0, 4.5.1, 4.6.0 are resupported. #176.
  • Reduce memory allocation. #179.

0.7.0

03 Jul 14:09
Compare
Choose a tag to compare

This release includes 0.6.8 fixes. Here are cumulative changelogs from 0.6.8.
(There are no changes from 0.7.0-rc1)

BREAKING CHANGES

MAJOR BREAKING CHANGES

There are major breaking changes they may affect many users and may cause some problems.

  • PackerCompatibilityOptions.None is now default. This means that msgpack bin or str8 formats are used by default.
    You can still turn off them by PackerCompatibilityOptions.Classic.

MINOR BREAKING CHANGES

There are minor breaking changes they may affect some users but might not cause any problems.

  • .NET 4.0, 4.5.0, 4.5.1, 4.6.0 are no longer supported.
  • Unity without IL2CPP (a.k.a. AOT) is no longer supported.
  • IPackable/IUnpackable is respected for collections now. Issue #153.
    This behavior can be disabled by setting SerializationCompatibilityOptions.IgnorePackabilityForCollection to true.
  • mpu.exe now works on .NET 4.6.1.

TRIVIAL BREAKING CHANGES

There are trivial breaking changes they might affect few users and may not cause any problems.

  • Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
  • Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. Changing SerializationContext.SerializationMethod in use causes unexpected behavior even it is extremely rare to do it.
  • Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
  • Internal structure for Silverlight builds are changed. They now use only reflection based serializers and pre-generated serializers instead of Expression Tree based serializers.

NEW FEATURES

  • Add .NET Core support. Note that .NET Core does NOT support CodeDOM or persistance of AsemblyBuilder, so MsgPack for CLI .NET Core build cannot support code generation. To generate source code or assembly of serializers in non-Windows environment, you must use Mono with .NET 4.5 build. #Issue 128
  • Add buffering option for Packer/Unpacker which can be enabled by PackerUnpackerStreamOptions.WithBuffering = true. It should improve performance for non-buffered stream like NetworkStream.
  • Async support. Issue #49. Note that it is highly recommended to use buffering feature of Packer or Unpacker factory methods to avoid too chutty asynchronous I/O call. In addition, async API may avoid unnecessary blocking but it is not so efficienty in most cases.
  • SerializerGenerator.GenerateSerializerCodeAssembly now supports custom namespace. Issue #138.
  • Unity IL2CPP support. Unity DLLs now support IL2CPP with various AOT issue workarounds. Unity build requires 5.3.5f1 or above.
  • Xamarin iOS linker support.

IMPROVEMENTS

  • Exceptions now includes stream position for seekable stream or "offset from Unpacker construction" for non-seekable stream.
  • Generated code now well structured which improves debuggability, it also remove some redundant expressions.
  • Move throw statements from hot-path to improve performance a bit.
  • Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. No longer need to re-generate serializer codes/assemblies to switch serialization method between array and map.
  • Generated code now more structured which improves debuggability, it also remove some redundant expressions.
  • The type which implement IEnumerable but does not implement Add now supported. Issue #169.
    This behavior can be disabled with setting SerializationContext.CompatibilityOptions.AllowNonCollectionEnumerableTypes to false.
  • mpu.exe and SerializerGenerator now supports compatibility switches.

BUG FIXES

  • Fix Unpacker.Skip failes when the stream is fragmented such as raw NetworkStream.
  • Fix generated serializer codes are not available in WinRT/UWP because of reflection API incompatibility when the type has non-public and explicitly marked fields/properties.
  • Fix collection only implements IEnumerable may cause NotSupportedException.
  • Fix hidden by signature members ("new" in C#) causes invalid serializer code generation. Issue/PR #147, #161, #162.
  • IPackable/IUnpackable is respected for collections now. Issue #153.
  • Fix the Unpacker always returns 0 when the underlying stream has double typed value.
  • Fix MessagePackObject.PackToMessage does not look PackerCompatibilityOptions. Issue #168.
  • Fix type initializer causes InvalidOperatiionException of serializer generation on WinRT projects. #170.
  • Fix batch serializer code generation may report invalid error message due to context reset leaking.
  • Fix reflection based serializer possibly throws NotSupportedException instead of SerializationException.

KNOWN ISSUES

  • Reflection based serializers in Unity build is not stable even if you specify [Preserve] and/or link.xml. This can be avoided with pre generated serializers and registration via SerializationContext.Register.

0.7.0-beta2

26 Jun 11:47
Compare
Choose a tag to compare
0.7.0-beta2 Pre-release
Pre-release

This includes bug fixes for UWP/.NET Core packaging, minor UWP/.NET Core bug, and Xamarin iOS related bug.

  • NEW FEATURES
    • Add Xamarin iOS linker support.
  • BUG FIXES
    • Fix type initializer causes InvalidOperatiionException of serializer generation on WinRT projects. #170.
    • Fix package dependency issue prevents *-aot runtime cannot install MsgPack.Cli packages (effects 0.7.0-beta1 only).
    • Fix Xamarin iOS AOT releated bugs (effects 0.7.0-beta1 only).

0.7.0-beta1

19 Jun 10:55
Compare
Choose a tag to compare
0.7.0-beta1 Pre-release
Pre-release

This release cleans up API surface and internal code for 0.7 stable release.

  • MAJOR BREAKING CHANGES
    • PackerCompatibilityOptions.None is now default. This means that msgpack bin or str8 formats are used by default.You can still turn off them by PackerCompatibilityOptions.Classic.
  • MINOR BREAKING CHANGES
    • UnpackHelpers.UnpackValueTypeValue signature is changed (note that this API has not been published in stable release yet).
    • UnpackHelpers.UnpackComplexObject[Async] with currentKey parameter are removed(note that this API has not been published in stable release yet).
    • Rename SerializerCapabilities>Unknown to SerializerCapabilities.None (note that this API has not been published in stable release yet).
    • Remove ISupportMessagePackSerializerCapability(note that this API has not been published in stable release yet).
    • Reflection based serializers now do not use IPackable/IUnpacabke members when the type does not implement IAsyncPackable/IAsyncUnpackable(note that this API has not been published in stable release yet).
  • BUG FIXES
    • Fix the Unpacker always returns 0 when the underlying stream has double typed value.
    • Fix MessagePackObject.PackToMessage does not look PackerCompatibilityOptions. Issue #168.

0.6.8

30 Jan 13:39
Compare
Choose a tag to compare

This is a bug fix release.

  • Fix Unpacker.ReadXxx from uint64 encoded value returns invalid(negative) value.
  • Fix Unpacker.ReadObject does not handle collection. #143
  • Fix intentionally "empty" member causes ArgumentNullException in serializer generation. Issue #145

0.6.7

23 Dec 07:50
Compare
Choose a tag to compare

This is bug fix release.

BUG FIXES

  • Fix Unpacker.ReadXxx returns 0 when try to read integral value from floating point stream or vice versa. Issue #139.

0.6.6

20 Dec 07:12
Compare
Choose a tag to compare

BUG FIXES

  • Fix [MessagePackRuntimeType] fails when the type is declared in global namespace. Issue #137.

0.6.5.1

25 Oct 00:00
Compare
Choose a tag to compare

This is only mpu.exe tool bug fix, so there are no NuGet release related to this.

BUG FIXES

  • mpu.exe -l option does not work in non-Windows environment. Issue #125.

0.6.5

20 Oct 10:56
Compare
Choose a tag to compare

This is non-critical minor bug fix release and includes some improvements for Unity build.

BUG FIXES

  • Fix enum handling in code generation for enum values which do not have corresponding single symbols. Issue #121(cont)

IMPROVEMENTS

  • Improve Nullable serializer source code for SerializerGenerator.GenerateSerializerCodes with WithNullable. Issue #121(cont)
  • Add Unity AOT work around method MessagePackSerializer.PrepareType(). This solves a part of issue #99 and an issue #124.
  • Fix build issues in source tree release for Unity.
    • mpu.exe --library now creates merged source tree.
    • Add work arounds for Unity C# compiler issue for DictionaryMessagePackSerializer`3.cs
    • Add UNITY_5 for UNITY compiler constant determination.
  • Remove unnecessary Pack() usage to avoid unexpected performance loss and/or Unity(and its Mono) C# compiler overload resolution failure.

You should use 0.6.5.1 to use mpu.exe -l in non-Windows environment.