All Versions
31
Latest Version
Avg Release Cycle
89 days
Latest Release
191 days ago

Changelog History
Page 2

  • v7.0.2 Changes

    October 31, 2017

    7.0.2: 2017-10-30

    • gbc & compiler library: 0.10.1.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 7.0.2
    • C# NuGet version: 7.0.1
    • C# Comm NuGet version: 0.14.0

    C++

    • ๐Ÿ›  Fixed a memory leak when deserializing Bond-over-gRPC messages that were
      stored as multiple slices.

    C

    • ๐Ÿš€ There were no C# changes in this release.
  • v7.0.1 Changes

    October 26, 2017

    7.0.1: 2017-10-26

    • gbc & compiler library: 0.10.1.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 7.0.0
    • C# NuGet version: 7.0.1
    • C# Comm NuGet version: 0.14.0

    C

    • ๐Ÿ›  Fixes a regression introduced in 7.0.0 that resulted in an exception during
      generation of Serializer instances if the type contained an aliased
      required blob field.
  • v7.0.0 Changes

    April 17, 2018
    • gbc & compiler library: 0.10.1.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 7.0.0
    • C# NuGet version: 7.0.0
    • C# Comm NuGet version: 0.13.0

    gbc and Bond compiler library

    • โž• Add service/method annotations in C# for Comm and gRPC.
    • โž• Add service/method metadata support in C++ for gRPC.
    • C++ codegen now uses std::allocator_traits for rebinding allocator types.

    C++

    • โž• Added bond::make_box helper function to create bond::Box<T> instances.
    • When Unicode conversion fails during JSON deserialization to wstring, a bond::CoreException is now thrown instead of a Boost exception.
    • When SimpleJSON deserializes a map key with no matching value, a bond::CoreException is now thrown.
    • When SimpleJSON deserializes a map key of non-primitive type, a bond::CoreException is now thrown.
    • Errors from some versions of G++ like "non-template type Deserialize used as a template" have been fixed. Issue #538
    • Guard against overflows in OutputMemoryStream, blob, and SimpleArray.
    • ๐Ÿ“œ Use RapidJSON's iterative parser to handle deeply nested JSON data without causing a stack overflow.
    • ๐Ÿ’… Guard against min/max being function-style macros in more places.
    • ๐Ÿ‘ Allow Bond-generated C++ types to use non-default-constructable allocators. (This works even on MSVC 2013 by only compiling the generated-type's default constructor if it is used. The default constructor is now a templated constructor that is invokable with zero arguments.)
    • ๐Ÿ›  Fixed some macro uses that did not have sufficient parenthesis around parameters and resulted in compiler errors.
    • Added the bond::ext::gRPC::shared_unary_call type. This type can be used when shared ownership semantics are needed for unary_call instances.
    • ๐Ÿ“‡ Provide compile-time access to metadata about gRPC services and methods.
    • Using bond::ext::gRPC::wait_callback no longer causes a shared_ptr cycle and the resulting resource leak.
    • Ensure that bond_grpc.h and bond_const_grpc.h are generated when the CMake variable BOND_ENABLE_GRPC is set to that importing bond.bond and bond_const.bond when defining a service works.
    • โž• Added bond::capped_allocator adapter that will allow to limit the max number of bytes to allocate during deserialization.

    C#

    • ๐Ÿ’ฅ Breaking change The code generation MSBuild targets no longer support Mono's xbuild: only MSBuild is supported. Mono has deprecated xbuild in favor of MSBuild now that MSBuild is open source and cross-platform.
    • ๐Ÿ’ฅ Breaking change The code generation MSBuild targets now automatically compile the generated _grpc.cs files if --grpc is passed to gbc. Explicit <Compile Include="$(IntermediateOutputPath)foo_grpc.cs" /> lines in MSBuild projects will need to be removed to fix error MSB3105 about duplicate items. See commit a120cd99 for an example of how to fix this. Issue #448
    • ๐Ÿ’ฅ Breaking change The low-level API IParser.ContainerHandler now has an arraySegment parameter for the converted blob.
    • The code generation MSBuild targets will now skip compiling the _types.cs files when --structs=false is passed to gbc.
    • โž• Added Bond.Box.Create helper method to create Bond.Box<T> instances.
    • Reflection.IsBonded now recognizes custom IBonded implementations.
    • ๐Ÿ‘‰ Use Newtonsoft's JSON.NET BigInteger support -- when available -- to handle the full range of uint64 values in the SimpleJson protocol (.NET 4.5 or greater, .NET Standard 1.6 or greater).
    • Bond.IO.Unsafe.InputStream can now be used with streams that do not implement [Stream.Seek][msdn-stream-seek], like System.IO.Compression.GzipStream. Issue #498
      • Such streams are detected by inspecting [Stream.CanSeek][msdn-stream-canseek].
    • ๐Ÿ›  Fix a bug in CompactBinaryWriter when using v2 that repeated first pass when a bonded field was serailized, resulting in extra work and extra state left in the CompactBinaryWriter.
    • Apply IDL annotations to services and methods for gRPC. Issue #617
    • ๐Ÿ›  Fixed a bug that produced C# code that couldn't be compiled when using Bond-over-gRPC with a generic type instantiated with a collection. Issue #623
    • When targeting .NET 4.5, avoid resolving external entities when using SimpleXmlReader.
    • โœ‚ Remove redundant conversions during serialization of aliased blobs.

    ๐Ÿ‘€ [msdn-stream-canseek]: https://msdn.microsoft.com/en-us/library/system.io.stream.canseek(v=vs.110).aspx ๐Ÿ‘€ [msdn-stream-seek]: https://msdn.microsoft.com/en-us/library/system.io.stream.seek(v=vs.110).aspx

    C# Comm

    • Apply IDL annotations to services and methods for Comm.
  • v7.0.0-preview Changes

    April 17, 2018

    ๐Ÿš€ This is a preview release of Bond codegen for Java.

  • v6.0.1 Changes

    ๐Ÿš€ This version was allocated but never released.

  • v6.0.0 Changes

    June 29, 2017
    • 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 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
  • v5.3.1 Changes

    April 25, 2017
    • gbc & compiler library: 0.9.0.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 5.3.0
    • C# NuGet version: 5.3.1
    • C# Comm NuGet version: 0.11.1

    C#

    • ๐Ÿ“š Cleaned up documentation comments.
  • v5.3.0 Changes

    April 12, 2017
    • gbc & compiler library: 0.9.0.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 5.3.0
    • C# NuGet version: 5.3.0
    • C# Comm NuGet version: 0.11.0

    gbc and Bond compiler library

    • C++ codegen ensures that parameter names do not shadow field names.
    • When generating C++ apply files, there are now explicit bond::Apply<> instantiations for CompactBinaryWriter<OutputCounter> and SimpleBinaryWriter<Null> writers. Pull request #373
      • Breaking change (Haskell library only): Language.Bond.Codegen.Cpp.ApplyOverloads.Protocol is now a union of ProtocolReader and ProtocolWriter to permit mixing and matching of reader/writer protocols without having to explicitly compute the full cross product.
    • โž• Add gbc flags to pick which C# files to generate (structs, gRPC, and comm). Only structs are generated by default.
    • gbc ensures that method names are unique within a service. Issue #381

    C++

    • ๐Ÿ›  Fix Python shared_ptr converter build break with Boost 1.63.
    • ๐Ÿ‘Œ Improve compliance with Microsoft's SDL.
    • โš  Eliminate need for warning suppression on MSVC14 via warning.h in Bond itself. warning.h is still in place on MSVC12; furthermore, we don't alter warning.h for now as it may be depended upon by application code.
    • Avoid unaligned memory access on non-x86/x64 platforms. Issue #305
    • ๐Ÿ‘Œ Improve compliance with strict-aliasing rules.
      • Bond now builds on Clang/GCC with -fstrict-aliasing.
    • When generating C++ apply files, there are now explicit bond::Apply<> instantiations for CompactBinaryWriter<OutputCounter> and SimpleBinaryWriter<Null> writers. Pull request #373
    • ๐Ÿ‘Œ Improve C++ allocator support Issue #379 Pull request #380
      • Support C++11 and above allocator model for rebind
      • Simplify detection of the default allocator
    • โœ‚ Remove per-field instantiation of DynamicParser<>::UnknownFieldOrTypeMismatch method.
  • v5.2.0 Changes

    February 07, 2017
    • gbc & compiler library: 0.8.0.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 5.2.0
    • C# NuGet version: 5.2.0
    • C# Comm NuGet version: 0.10.0

    gbc and Bond compiler library

    • ๐Ÿ’ฅ Breaking change: The C++ Comm .cpp template has been renamed to comm_cpp from types_comm_cpp to match the file it generates.
    • โž• Add export-attribute option for C++ and make apply-attribute a deprecated synonym for export-attribute
    • ๐Ÿ›  Fix C++ Comm build problems when services are shared via DLL. Issue #314

    C++

    • ๐Ÿ›  Fixed compatibility with RapidJSON v1.1.0. Issue #271
    • ๐Ÿ‘ The minimum supported version of Boost is now 1.58
    • ๐Ÿ›ฐ The bf utility now supports multiple payloads. Pull request #288
    • ๐Ÿ›  Fixed an issue with aliased enums. Pull request #288
    • ๐Ÿ›  Fixed an issue with template parameter deduction in bond::is_nullable that occurs with Microsoft Visual C++ 2015 Update 3. Issue #306

    C++ Comm

    • ๐Ÿ›  Fixed a multiply-defined symbol linker error for bond::comm::epoxy::detail::MakeConfigFrame.

    C#

    • โž• Added controls to cap pre-allocation during deserialization of containers and blobs.
    • ๐Ÿ›  Fixed computation of default value for aliased bool and wstring fields. Issue #300

    C# Comm

    • Resources are now properly cleaned up if failures are encountered when establishing client-side Epoxy connections.
    • The generated interfaces for services are now public. They were inadvertently internal before.
  • v5.1.0 Changes

    November 14, 2016
    • gbc & compiler library: 0.7.0.0
    • IDL core version: 2.0
    • IDL comm version: 1.2
    • C++ version: 5.1.0
    • C# NuGet version: 5.1.0
    • C# Comm NuGet version: 0.9.0

    gbc and Bond compiler library

    • ๐Ÿ’ฅ Breaking change: The Haskell utility functions structName and structParams were renamed to className and classParams (in the Language.Bond.Codegen.Cpp.Util module).
    • โž• Added initial support for generating C++ Comm services and proxies.

    C++ Comm

    • ๐Ÿ”€ The initial C++ Comm code has been merged in, but there is still work left to be done before the first preview release. Use at your own risk.

    C#

    • ๐Ÿ‘ Bond C# now supports .NET Standard 1.0, 1.3, and 1.6, so you can use Bond in .NET Core applications. Pull request #243
      • Not all assemblies work with all versions of the .NET Standard or on all platforms. The manual lists which assemblies target which frameworks.
      • Bond C# Comm is not yet building with .NET Core toolchain, so its .NET Core support is preliminary.
    • Bond.JSON now depends on Newsoft.JSON 9.0.1, the earliest version that supports .NET Standard 1.0.
    • A new assembly, Bond.Reflection.dll, has been added, due to some internal refactoring needed for .NET Core support. Many of the Bond assemblies now have a dependency on this assembly, so you'll need to deploy it. If you use NuGet to consume Bond, this is should be handled automatically.
    • ๐Ÿ›  Fixed a bug in the MSBuild targets that caused codegen to always be run if all of the BondCodegen items have Options metadata.
    • ๐Ÿ›  Fixed a bug in the MSBuild targets that caused compilation to fail if the $BondOutputDirectory did not end with a trailing slash.

    C# Comm

    • The constructor for LayerStackProvider no longer requires a logger; instead, the transport's logger is passed to OnSend/OnReceive. Before, using the same logger with a transport and LayerStackProvider required a duplicate implementation.
    • ๐Ÿ›  Fixed a bug that prevented EpoxyListener from accepting multiple connections in parallel.