bond

Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services.

MIT License

Downloads
10.3K
Stars
2.6K
Committers
58

Bot releases are hidden (Show)

bond - 11.0.1

Published by jandupej 4 months ago

11.0.1: 2024-06-26

  • IDL core version: 3.0
  • C++ version: 11.0.1
  • C# NuGet version: 11.0.1
  • Java version: 11.0.1
  • gbc & compiler library: 0.13.0.0

gbc and Bond compiler library

C++

  • Breaking change: All Bond-over-gRPC code has been removed. This is
    everything under the bond::ext:grpc namespace. Service definitions can
    still appear in .bond files, but no C++ code will be generated for them.
    See issue #1131, Bond-over-gRPC will be deprecated February
    2022
    , for the full
    announcement.
  • By default, deserialization will no longer process very deeply nested
    structures. Instead, an bond::CoreException will be thrown in order to
    protect against stack overflows. The depth limit may be changed by calling
    the function bond::SetDeserializeMaxDepth(uint32_t).
  • Fixed handling of large containers of invalid types that could cause
    excessive CPU use when deserializing some payloads.

C#

  • Breaking change: Update of Newtonsoft.Json library to version 13.3.0.
    (Issue #1156)

    This update fixes depth check in input JSON string (by default: 64).
    Depth check is necessary to prevent stack overflow issue with long payloads.

  • Breaking change: The minimum supported version of .NET Framework is
    4.6.2. Support for .NET Framework 4.5 has been dropped.

  • Breaking change: All Bond-over-gRPC code has been removed. This is
    everything under the Bond.Grpc namespace and the Bond.Grpc.CSharp NuGet
    package. Service definitions can still appear in .bond files, but no C#
    code will be generated for them. See issue #1131, Bond-over-gRPC will be
    deprecated February 2022
    ,
    for the full announcement.

  • Added codegen and deserialization support for container type aliases to
    use
    System.Collections.Immutable
    collections. (Pull request
    #1161)

  • By default, deserialization will no longer process very deeply nested
    structures. Instead, an InvalidOperationException will be thrown in
    order to protect against stack overflows. The depth limit may be changed
    by setting the property Bond.DeserializerControls.Active.MaxDepth.

Java

  • By default, deserialization will no longer process very deeply nested
    structures. Instead, a org.bondlib.InvalidBondDataException exception
    will be thrown in order to protect against stack overflows. The depth
    limit may be changed by calling the method
    org.bondlib.bond.DeserializerControls.setMaxDepth.
bond - 10.0 Latest Release

Published by chwarr over 2 years ago

10.0: 2022-03-07

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

C++

  • Breaking change: Bond-over-gRPC has been marked deprecated.
    Bond-over-gRPC will be removed in the next major version of Bond. See
    issue #1131, Bond-over-gRPC will be deprecated February
    2022
    , for the full
    announcement.
    • The [[deprecated]] attribute has been added to the bond::ext::grpc
      namespace in every top-level Bond-over-gRPC++ header. This will cause
      compiler warnings/errors for uses of Bond-over-gRPC++ that you may need
      to handle.
  • Fixed multiple symbol definition for Win32Exception in
    grpc/win_thread_pool.h. (Issue
    #1129
    )
  • Add forward declaration for GenericWriteVariableUnsigned to fix "C3861:
    'GenericWriteVariableUnsigned': identifier not found" when using custom
    streams that do not have their own implementation of
    WriteVariableUnsigned. (Issue
    #1115
    )
  • Fixed bond::DynamicParser that may not emit transform's OmittedField
    for compile-time schema and an omitted optional field in the payload.
    (Issue #1120)
  • Fixed missing include directives.
  • Removed bond::blob's unnecessary _content member, reducing its size
    by 1 pointer.
  • Added an ability to apply transform to a schema.
  • Added noexcept to bond::blob's non-throwing functions.

C#

  • Breaking change: Bond-over-gRPC code has been marked deprecated.
    Bond-over-gRPC will be removed in the next major version of Bond. See
    issue #1131, Bond-over-gRPC will be deprecated February
    2022
    , for the full
    announcement.
    • The [Obsolete] attribute has been added to every public type in the
      Bond.Grpc assembly. This will cause compiler warnings/errors for uses
      of Bond-over-gRPC# that you may need to handle.
  • Added virtual method OutputBuffer.ResizeBuffer that can be overridden to
    use buffer allocators other than new byte[] (e.g.
    ArrayPool<byte>.Rent()). (Pull request
    #1128
    )
  • The error message emitted when duplicate .bond items are detected by the
    MSBuild codegen now correctly refers to $(EnableDefaultItems) as the
    switch that controls this behavior. (Issue
    #1110
    )
bond - 9.0.5

Published by chwarr over 3 years ago

9.0.5: 2021-04-14

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

Published by chwarr almost 4 years ago

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

Published by chwarr about 4 years ago

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
    )
bond - 9.0.2

Published by chwarr about 4 years ago

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

Published by chwarr over 4 years ago

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

Published by chwarr over 4 years ago

9.0: 2020-05-26

  • 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

bond - 8.2.0

Published by chwarr almost 5 years ago

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

Published by lalo over 5 years ago

8.1.0: 2019-03-27

C++

  • C# / Nuget release only

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

Published by ara-ayvazyan over 6 years ago

8.0.1: 2018-06-29

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

Published by ara-ayvazyan over 6 years ago

  • 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 SHA1 and SHA2.

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 SHA1 and
    SHA2.
  • 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
bond - Java 7.0.0-preview-2017-11-16

Published by chwarr over 6 years ago

This is a preview release of Bond codegen for Java.

bond - 7.0.2

Published by chwarr almost 7 years ago

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

Published by lalo almost 7 years ago

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

Published by lalo almost 7 years ago

7.0.0: 2017-10-24

  • 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, like
    System.IO.Compression.GzipStream.
    Issue #498
  • 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.

C# Comm

  • Apply IDL annotations to services and methods for Comm.
bond - 6.0.0

Published by chwarr over 7 years ago

  • 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
bond - 5.3.1

Published by chwarr over 7 years ago

5.3.1: 2017-04-25

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

Published by chwarr over 7 years ago

5.3.0: 2017-04-12

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

C#

  • Added gRPC integration. See the
    Bond-over-gRPC manual.
  • Added controls to cap incremental allocation between reads in
    Bond.IO.Unsafe.InputStream.
  • Extended fix for bug parsing JSON when a string value is a date.
    Pull request #358
  • Bond C# 5.1.0 accidentally broke backward compability by renaming
    Bond.Reflection to Bond.BondReflection. This has been fixed:
    Bond.BondReflection was unrenamed back to Bond.Reflection, and a shim
    Bond.BondReflection type now redirects all calls to their original names
    to minimize further breakage.
    Issue #369
    • Code that started using Bond.BondReflection by name will encounter
      warning CS0618 indicating use of an obselete method/type. To fix this,
      use the original name Bond.Reflection. This warning can be
      suppressed if needed. However...
    • ...the shim type Bond.BondReflection will be removed during or after
      the next major release of C# Bond.

C# Comm

  • Breaking change To generate C# Comm files, be sure to pass the
    --comm flag to gbc.
    See how the pingpong example was updated.
  • C# Comm is now deprecated. We recommend that you use Bond-over-gRPC. See
    the
    Bond-over-gRPC manual.
  • EpoxyListener's StopAsync() now stops all the outstanding connections that
    it accepted.
  • EpoxyTransport's StopAsync() now stops all the connections and listeners
    that it created.
bond - 5.2.0

Published by chwarr over 7 years ago

5.2.0: 2017-02-07

  • 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

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

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