All Versions
32
Latest Version
Avg Release Cycle
104 days
Latest Release
752 days ago

Changelog History
Page 2

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