Skip to content

6.0.0

Compare
Choose a tag to compare
@chwarr chwarr released this 30 Jun 04:27
· 654 commits to master since this release
  • gbc & compiler library: 0.10.0.0
  • IDL core version: 2.0
  • IDL comm version: 1.2
  • C++ version: TBD 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.

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

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 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