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

Changelog History
Page 1

  • v9.0.5 Changes

    April 14, 2021
    • IDL core version: 3.0
    • C++ version: 9.0.5
    • C# NuGet version: 9.0.5
    • gbc & compiler library: 0.12.1.0

    C++/Python

    • Added CMake variable BOND_FIND_GRPC to allow for external gRPC installations. The search for external GRPC installations is only done when BOND_ENABLE_GRPC is TRUE.
    • โœ‚ Removed use of deprecated std::ptr_fun in the Python library. (Issue #1080)

    C#

    • Implicit codegen now excludes any .bond files in the project's output directories (e.g., bin/, obj/debug/netstandard1.0). This behavior matches the implicit compilation behavior for .cs files.
  • v9.0.4 Changes

    November 23, 2020

    9.0.4: 2020-11-23

    • IDL core version: 3.0
    • C++ version: 9.0.4
    • C# NuGet version: 9.0.3
    • gbc & compiler library: 0.12.1.0

    C++

    • Bond now uses the [[noreturn]] attribute to annotate functions that do
      not return. Previously, it used compiler-specific annotations.

    C

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

    August 06, 2020

    9.0.3: 2020-08-06

    • IDL core version: 3.0
    • C++ version: 9.0.2
    • C# NuGet version: 9.0.3
    • gbc & compiler library: 0.12.1.0

    C++

    • ๐Ÿš€ There were no C++ changes in this release.

    C

    • ๐Ÿ›  Fixed a performance regression in OutputBuffer.Grow: it was incorrectly
      growing the buffer by one byte at a time instead of geometrically. (Issue
      #1065
      , Pull request
      #1066
      )
  • v9.0.2 Changes

    August 03, 2020

    9.0.2: 2020-08-03

    • IDL core version: 3.0
    • C++ version: 9.0.2
    • C# NuGet version: 9.0.2
    • gbc & compiler library: 0.12.1.0

    C++

    • gbc is now installed with 555 (r-xr-xr-x) permissions. (Issue
      #1062
      )

    C

    • ๐Ÿ›  Fixed a regression writing to non-seekable streams using
      CompactBinaryWriter. The fix in commit
      b0fd4a1
      ๐Ÿš€ inadvertently added a call to Stream.Position in the Release
      ๐Ÿ”ง configuration. This call is only indented to be made when Bond is built in
      ๐Ÿ”ง the Debug configuration.
  • v9.0.1 Changes

    July 14, 2020

    9.0.1: 2020-07-14

    • IDL core version: 3.0
    • C++ version: 9.0.1
    • C# NuGet version: 9.0.1
    • gbc & compiler library: 0.12.1.0

    C++

    • The RapidJSON submodule now points to commit
      8f4c021.
      โš  This addresses some aliasing warnings in recent versions of Clang and GCC.

    C

    • ๐Ÿ›  Fixed MSB3105/CS2002 error about duplicate Compile items when a directory
      contains multiple .bond files and --gprc is in $BondOptions. (Issue
      #1050
      )
    • ๐Ÿ›  Fix handling of large container lengths that could cause an infinite loop
      ๐Ÿ›ฐ when deserializing some payloads. This fix addresses
      ๐Ÿ”’ CVE-2020-1469.
  • v9.0 Changes

    May 26, 2020
    • IDL core version: 3.0
    • C++ version: 9.0.0
    • C# NuGet version: 9.0.0
    • gbc & compiler library: 0.12.1.0

    C++

    • ๐Ÿ’ฅ Breaking change MSVC 2013 support has been removed. (Issue #851)
    • ๐Ÿ’ฅ Breaking change bond/core/warning.h has been deleted. Since the 5.3.0 release, Bond hasn't needed global warning suppressions for any compiler except MSVC 2013. This file was only used for MSVC 2013, which is no longer a supported compiler.
    • Fixed MSVC warning for deprecation of std::result_of_t in /std:c++17. (Issue #1007)
    • ๐Ÿ›  Fixed MSVC warning C5208: unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes. (Issue #1027)
    • ๐Ÿ›  Fixed Boost 1.73 warning "The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated." (Pull request #1036)

    C#

    • ๐Ÿ›  Fixed creation of duplicate default constructor when defining an empty struct and using --preview-constructor-parameters. (Issue #963)
    • The .NET assemblies are now only Authenticode signed with SHA-2. Legacy Windows OS versions may need updates to work with SHA-2 signatures.

    gbc and Bond compiler library

    • ๐Ÿ‘ C++ codegen no longer supports MSVC 2013.
    • ๐Ÿ gbc is now only Authenticode signed with SHA-2. Legacy Windows OS versions may need updates to work with SHA-2 signatures.
  • v8.2.0 Changes

    November 18, 2019

    8.2.0: 2019-11-18

    • IDL core version: 3.0
    • C++ version: 8.2.0
    • C# NuGet version: 8.2.0
    • gbc & compiler library: 0.12.0.0

    C++

    • gRPC v1.17.1 is now required to use Bond-over-gRPC.
    • ๐Ÿ›  Fixed an ambigious HexDigit overload compilation error when
      compiling with some versions of GCC. (Pull request
      #954
      )
    • ๐Ÿ›  Fixed ambiguous call to maybe::operator== that breaks GCC 9
      ๐Ÿ— build. (Pull request
      #975
      )
    • ๐Ÿ›  Fixed MSVC warning C4296: "'<': expression is always false" in protocol.h.
      (Issue
      #981
      )

    C

    • โž• Added .NET 4.6 target framework to Bond.IO.dll so that it can use
      MemoryStream.TryGetBuffer() when cloning streams like is done when
      targeting .NET Standard 1.3+.

    Bond compiler library

    • ๐Ÿ’ฅ Breaking change The bond compiler library (the Haskell library) and
      ๐Ÿ— gbc have been switched to build with stackage snapshot lts-14.4. This
      ๐Ÿ“œ snapshot uses megaparsec 7 and aeson 1.4.4, both of which had breaking
      ๐Ÿ”„ changes that are reflected in the library, e.g., the parseBond signature
      ๐Ÿ’ป has changed. There is no impact to users of the gbc command line tool or
      ๐Ÿ”„ changes to C++ and C# code generation.
  • v8.1.0 Changes

    March 27, 2019

    C++

    • ๐Ÿš€ There were no C++ changes in this release.

    C#

    • โšก๏ธ Updated to gRPC v1.17.1.
    • โž• Add a constructor that accepts a CallInvoker instance to the generated gRPC clients to support client-side interceptors. For more details about C# interceptors, see the proposal in the gRPC project. Issue #950
  • v8.0.1 Changes

    June 29, 2018
    • gbc & compiler library: 0.11.0.3
    • IDL core version: 3.0
    • C++ version: 8.0.1
    • C# NuGet version: 8.0

    C++

    • ๐Ÿ›  Fixed a crash in bond::ext::grpc::server's destructor when invoked on a moved-from object instance.
    • โž• Added move-assignment operator to bond::blob.
    • Added cmake variable BOND_FIND_RAPIDJSON to allow for external RapidJSON installations.

    C#

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

    C#

    • ๐Ÿ›  Fixed alias conversion issue for generic fields Issue #928.
  • v8.0.0 Changes

    May 30, 2018
    • gbc & compiler library: 0.11.0.0
    • IDL core version: 3.0
    • C++ version: 8.0
    • C# NuGet version: 8.0

    gbc and Bond compiler library

    • ๐Ÿ’ฅ Breaking change The deprecated Bond Comm functionality has been removed. This includes all gbc options related to Comm and the Comm codegen templates in the Haskell library. Issue #824
    • ๐Ÿšš C++ codegen now properly generates move assignment operators. Previously, this was broken for some cases.
    • C++ codegen no longer generates checks for C++11, except for MSVC 2013 workarounds.
    • C++ codegen no longer generates data member initialization that invokes a constructor accepting Comparer for associative containers.
    • ๐Ÿšš C++ codegen can now generate copy and move constructors with an allocator argument when a custom allocator is used and --alloc-ctors is passed to gbc.
    • C++ codegen can now generate type aliases that correspond to ones in IDL when the --type-aliases flag is passed to gbc.
    • C++ codegen can now use std::scoped_allocator_adaptor for strings and containers when a custom allocator is used and the --scoped-alloc flag is passed to gbc.
    • C++ codegen now generates lazily constructed enum name-to-value and value-to-name maps. Additionally, a user-defined map type can now be provided to GetNameToValueMap and GetValueToNameMap.
    • C++ codegen now applies the --export-attribute to the ToString, FromString, ToEnum and FromEnum functions.
    • ๐Ÿ›  Fixed a bug in C++ codegen that incorrectly applied the export attribute to generic gRPC services.
    • C++ codegen now generates an allocator_type typedef for a struct when the --allocator option is passed to gbc, instead of specializing std::uses_allocator.
    • import statements can now end with an optional semicolon.
    • ๐Ÿ’ป File and directory paths on the command line, in response files, or in import statements can now use a mix of forward and backslashes. Issue #869
    • gbc is now Authenticode dual-signed with both SHA-1 and SHA-2.

    C++

    • ๐Ÿ’ฅ Breaking change The deprecated Bond Comm functionality has been removed. This includes all gbc options related to Comm and all Comm APIs and header files. Issue #824
    • ๐Ÿ’ฅ Breaking change Only versions of Boost released in the past two years (1.61 and newer) are supported. Bond will likely continue to work with older versions, but it is no longer tested with anything older than 1.61. Test coverage for Boost versions 1.61–1.66 has been improved. Issue #771
    • ๐Ÿ’ฅ Breaking change Constructors accepting a Comparer have been removed from the bond::maybe and bond::nullable types.
    • ๐Ÿ’ฅ Breaking change The bond::is_blob and bond::is_nullable traits have been removed. The blob and nullable types are not customizable, so these where never needed or used. The related functionality provided by bond::get_list_sub_type_id remains.
    • ๐Ÿ’ฅ Breaking change Removed a dangerous implicit conversion operator from bond::maybe<T> to const T&. To access a bond::maybe<T> value, use one of the bond::maybe<T>::value functions.
    • ๐Ÿ’ฅ Breaking change The nested pointer, const_pointer, reference and const_reference typedefs have been removed from bond::nullable<T>.
    • ๐Ÿ’ฅ Breaking change The Allocator (second) type parameter has be removed from bond::nullable<T> and now it is always deduced from T.
    • ๐Ÿ’ฅ Breaking change The bond::capped_allocator and related types have been moved to the bond::ext namespace and the "bond/ext" include directory.
    • ๐Ÿ’ฅ Breaking changes in Bond-over-gRPC (based on real-world use and feedback). Check the updated examples to see how to use the changed APIs.
      • The generated ClientCore and ServiceCore class templates and the Client and Service convenience typedefs have all been replaced with normal classes named Client and Service. The ThreadPool type parameter has been removed in favor of a simplified runtime representation of a Scheduler.
      • The Scheduler concept and the bond::ext::gRPC::thread_pool implementation now use operator() instead of a schedule() member function.
      • The bond::ext::gRPC::server_core class template and the bond::ext::gRPC::server convenience typedef have been replaced with the normal class bond::ext::gRPC::server.
      • The generated Client::Async* functions now accept the std::shared_ptr<grpc::ClientContext> argument as the last parameter instead of as the first. This makes is easier to omit this parameter when no context customization is needed.
      • The client callback now directly accepts bond::ext::gRPC::unary_call_result<Response> (drops the std::shared_ptr). Also the unary_call_result now exposes read-only getters rather than fields. This simplified the type that clients need to deal with.
      • The bond::ext::gRPC::wait_callback::arg_type has been removed.
      • The client_callback.h header file has been renamed to unary_call_result.h to align with its contents.
      • The bond::ext::gRPC::server_builder has been replaced by the bond::ext::gRPC::server::Start factory function which now returns a plain bond::ext::gRPC::server object and accepts service instances managed by std::unique_ptr. This properly models the lifetime requirements. Service implementations must now pass a Scheduler to the generated Service base class which is no longer default constructible.
      • The generated method reflection information no longer uses a redundant bonded<T> wrapper for input_type and result_type typedefs.
      • The bond::ext::gRPC::unary_call no longer requires bonded<T> wrapper for request type.
      • The bond::ext::gRPC::unary_call::FinishWithError has been renamed to Finish. Overloads that take a status can be used to signal an error.
      • The grpc::Status second argument has been removed from bond::ext::gRPC::unary_call::Finish. gRPC does not support sending a response with a non-OK status, so the payload was being droped anyway.
      • Fixed bond::ext::gRPC::unary_call, bond::ext::gRPC::shared_unary_call and bond::ext::gRPC::unary_call_result types to properly use void and bond::reflection::nothing instead of the bond::Void empty struct. Also removed unnecessary functions from unary_call and shared_unary_call for those cases when they are not applicable (e.g. Finish is not available when return type is nothing).
    • gRPC v1.12.0 is now required to use Bond-over-gRPC.
      • This version include a number of memory leak fixes that users of Bond-over-gRPC were encountering. Issue #810
      • This version include some Windows-specific performance improvements for loopback connections.
    • ๐Ÿ—„ The bond::ext::gRPC::wait_callback has been deprecated in favor of additionally generated client functions that return std::future.
    • ๐Ÿ›  Fixed includes for gRPC services with events or parameterless methods. Issue #735
    • ๐Ÿ›  Fixed a bug which would read an unrelated struct's field(s) when deserializing a base struct. Issue #742
    • ๐Ÿ›  Fixed a bug in bond::MapTo<T>::Field that failed to pass the Protocols type parameter to bond::Apply.
    • ๐Ÿ›  Fixed a race condition when bond::ext::gRPC::io_manager::shutdown and bond::ext::gRPC::io_manager::wait are called concurrently.
    • ๐Ÿ›  Fixed a race condition during bond::ext::gRPC::unary_call destruction.
    • ๐Ÿ›  Fixed the broken move constructor of bond::bonded<T, Reader&>.
    • ๐Ÿ›  Fixed the move constructor of bond::value to actually move the underlying reader.
    • โž• Added the bond::blob_prolong helper function that will return a bond::blob with a copied data if the original one does not own the memory.
    • The bond::OutputBuffer::GetBuffers now can accept arbitrary STL-like containers.
    • bond::maybe<T> has been overhauled.
      • Fixed a bug that default initialized an instance of T even when a maybe held nothing.
      • Added noexcept variants of bond::maybe<T>::value.
      • Added bond::maybe<T>::emplace to construct a maybe's value in place.
      • Added various rvalue-reference and allocator-aware constructors and assignment operators.
      • Added operator==(const bond::maybe<T>&, const T&) and operator==(const T&, const bond::maybe<T>&) to compare directly to instances of T.
    • ๐Ÿ›  Fixed an issue with the ToString, FromString, ToEnum and FromEnum functions that were previously not exported from a DLL when the --export-attribute option was passed to gbc. Issue #861
    • ๐Ÿ›  Fixed a bug in bond::nullable<T, Alloc> where it was not propagating an allocator to T when allocator_type was not explicitly defined.
    • ๐Ÿ›  Fixed a bug in bond::make_box where const T& was not handled correctly.
    • The use of bond::check_method has been replaced with less restricting expression SFINAE checks on supported compilers. Issue #896
    • ๐Ÿ›  Fixed a bug where bond::ext::gRPC::io_manager could cause a thread to join itself.
    • The preferred namespace for Bond-over-gRPC is now bond::ext::grpc. The previous namespace, bond::ext::gRPC, continues to work.
    • โž• Added a Windows-specific implementation of a thread pool.

    C#

    • ๐Ÿ’ฅ Breaking change The deprecated Bond Comm functionality has been removed. This includes all gbc options related to Comm and all Comm APIs, assemblies, and NuGet packages. Issue #824
    • ๐Ÿ’ฅ Breaking change The Bond.CSharp and Bond.Compiler.CSharp NuGet packages perform implicit codegen when the simplified .NET Core .csproj format is used. This breaking change does not affect projects using the classic .csproj format. Any .NET Core projects that encounter the build error "Duplicate BondCodegen items were included." and were explicitly listing BondCodegen items will either need to rely on implicit codegen or disable all implicit inclusion. To set per-item metadata, use the item update syntax. Issue #636
    • ๐Ÿ›  The C# attribute Bond.Attribute can now be applied to methods. This fixes broken codegen when attributes are used on service methods. Issue #617
    • Bond Attributes on service methods are now present on all the client overloads for the methods. Previously, just the "friendly" method had the attributes.
    • Grpc.Core v1.12.0 is now required to use Bond-over-gRPC.
      • This version include a number of memory leak fixes that users of Bond-over-gRPC were encountering. Issue #810
      • This version include some Windows-specific performance improvements for loopback connections.
    • ๐Ÿ’ป BondCodegen items will now appear in the Visual Studio 2017+ UI in .NET Core projects.
    • The .NET Standard assemblies are fully strong-name signed. Previously, they were inadvertently only public strong-name signed.
    • The .NET assemblies are now Authenticode dual-signed with both SHA-1 and SHA-2.
    • ๐Ÿ›  Fixed a bug in the codegen targets when using gbc from $PATH on macOS and Linux that prevented the C# compiler from finding the generated C# files.
    • Preview: Added preliminary support for generating types with constructors with parameters for each field. This functionality will change in the future and may be removed. Pull request #857