bond v6.0.0 Release Notes
Release Date: 2017-06-29 // almost 7 years ago-
gbc
& compiler library: 0.10.0.0- 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 fieldserviceBase
.
- Breaking change In the Bond Haskell library, the
- C++ codegen now generates
extern templates
of
bond::Apply
instead of overloads. - C++ codegen hides FieldTemplate details, shortening symbol names.
C++
- ๐ฅ 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 bareApply
orTypeNamespace::Apply
must be changed tobond::Apply
. - ๐ฅ Breaking change Users who are implementing custom streams are now
required to provide the free functions
CreateInputBuffer
,CreateOutputBuffer
andGetBufferRange
, 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 correspondingGetBufferRange
inside their custom input buffer implementation. - Please see InputBuffer, OutputBuffer, and the bf example for more details.
- Users who were mistakenly calling
- ๐ฅ 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 argumentProtocols
which defaults tobond::BuiltInProtocols
. Custom input streams now requirebond::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 theMarshaler<Writer>
transform overload that were mistakenly passingWriter
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.
C#
- ๐ฅ 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 typeBond.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
- The new public key for assemblies is now
- ๐ฅ 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