bond v6.0.0 Release Notes

Release Date: 2017-06-29 // almost 5 years ago
    • gbc & compiler library:
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 6.0.0
    • C# NuGet version: 6.0.0
    • C# Comm NuGet version: 0.12.0

    gbc and Bond compiler library

    • ๐Ÿ‘ IDL support for service inheritance syntax
      • Breaking change In the Bond Haskell library, the Service type has a new field serviceBase.
    • C++ codegen now generates extern templates of bond::Apply instead of overloads.
    • C++ codegen hides FieldTemplate details, shortening symbol names.


    • ๐Ÿ’ฅ Breaking change A C++11 compiler is now required. The minimum supported C++ compiler versions are now:
      • Clang 3.4 or newer
      • GNU C++ 4.7 or newer
      • Microsoft Visual C++ 2013 or newer
    • ๐Ÿ’ฅ Breaking change The generated apply.h/.cpp files now contain extern templates of bond::Apply instead of overload implementations. Calls to bare Apply or TypeNamespace::Apply must be changed to bond::Apply.
    • ๐Ÿ’ฅ Breaking change Users who are implementing custom streams are now required to provide the free functions CreateInputBuffer, CreateOutputBuffer and GetBufferRange, depending on which scenarios are used (there will be a corresponding compilation error for each case).
      • Users who were mistakenly calling bond::Merge<T> with explicit an template argument will get a compilation error. To fix, remove the <T> part.
      • In addition, users of MSVC12 are required to define a range_type typedef as a return type of corresponding GetBufferRange inside their custom input buffer implementation.
      • Please see InputBuffer, OutputBuffer, and the bf example for more details.
    • ๐Ÿ’ฅ Breaking change The bond::customize<protocols> has been removed. All the public APIs that require a protocol list (e.g. bond::Marshal) now accept an extra template argument Protocols which defaults to bond::BuiltInProtocols. Custom input streams now require bond::type_id<> to be specialized with a unique magic number. For more details please see the bf example.
    • ๐ŸŽ‰ Initial support for sending Bond objects over gRPC has been added.
    • The bond::Apply function now has a uniform signature. Call sites for the Marshaler<Writer> transform overload that were mistakenly passing Writer explicitly (e.g. bond::Apply<Writer>(marshaler, value)) will now get a compiler error. To fix, remove the <Writer> part: bond::Apply(marshaler, value).
    • ๐Ÿ›  Fixed a bug that caused serialization using CompactBinaryWriter<OutputCounter> (to get the expected length of serializing with compact binary) to produced bogus results.
    • ๐Ÿ›  Fixed custom streams support which was broken for some scenarios.
    • For Visual C++ 2017 compability, RapidJSON v1.0.0 or newer is now required. The RapidJSON submodule that Bond uses by default has been updated to v1.1.0 due to a warning from clang in earlier versions.
    • C++ codegen hides FieldTemplate details, shortening symbol names.


    • ๐Ÿ’ฅ Breaking change Support for .NET 4.0 has been dropped from the supported frameworks.
    • ๐Ÿ’ฅ Breaking change The deprecated type Bond.BondReflection has been removed. The type Bond.Reflection should be used instead.
    • ๐Ÿ’ฅ Breaking change Bond assemblies are now strong-name signed with the bond.snk key in the repository instead of with a Microsoft key. This allows anyone to produce compatible assemblies, not just Microsoft. Official distribution of Bond will continue to be Authenticode signed with a Microsoft certificate. Issue #414
      • The new public key for assemblies is now 00240000048000009400000006020000002400005253413100040000010001000d504ac18b4b149d2f7b0059b482f9b6d44d39059e6a96ff0a2a52678b5cfd8567cc67254132cd2debb5b95f6a1206a15c6f8ddac137c6c3ef4995f28c359acaa683a90995c8f08df7ce0aaa8836d331a344a514c443f112f80bf2ebed40ccb32d7df63c09b0d7bef80aecdc23ec200a458d4f8bafbcdeb9bf5ba111fbbd4787
    • ๐Ÿ’ฅ Breaking change Bond assemblies now have assembly and file versions that correspond to their NuGet package version. Strong name identities will now change release-over-release in line with the NuGet package versions. Issue #325
    • The codegen MSBuild targets will now re-run codegen if gbc itself has been changed.
    • ๐Ÿ›  Fixed a bug where JSON and XML protocols would permit the serialization of non-nullable string fields that were set to null instead of throwing a NullReferenceException. Issue #417