Skip to content

Latest commit

 

History

History
331 lines (264 loc) · 13.1 KB

CHANGELOG.md

File metadata and controls

331 lines (264 loc) · 13.1 KB

Bond Changelog

Notable changes--especially new features and breaking changes--are recorded here.

Bond's version numbers follow Semantic Versioning. Each release is tagged with a Git tag. The NuGet packages follow the Git tag versions. The Bond compiler (gbc) and compiler library have a slightly different versioning scheme, following the Haskell community's package versioning policy.

Unreleased

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

C#

  • Added controls to cap pre-allocation during deserialization of containers and blobs.

C# Comm

  • Resources are now properly cleaned up if failures are encountered when establishing client-side Epoxy connections.

5.1.0: 2016-11-14

  • 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

  • Added initial support for generating C++ Comm services and proxies.
  • The Haskell utility functions structName and structParams were renamed to className and classParams (in the Language.Bond.Codegen.Cpp.Util module).

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.

C# Comm 0.8.0: 2016-10-12

  • C# Comm NuGet version: 0.8.0

C# Comm

  • EpoxyTransport can be configured to enable TCP keep-alive to help detect dead connections. See EpoxyTransportBuilder.SetKeepAliveTimes for details.

5.0.0: 2016-09-12

  • gbc & compiler library: 0.6.0.0
  • IDL core version: 2.0
  • IDL comm version: 1.1
  • C++ version: 5.0.0
  • C# NuGet version: 5.0.0
  • C# Comm NuGet version: 0.7.0

IDL comm

  • Update IDL to conform to naming conventions.
  • Adjust IDL for changes made to Epoxy internals

C++

  • Generated enum types now have a FromEnum method that can be used to convert from an enum value to a string. Now generated enum types have all four of ToEnum, FromEnum, ToString, and FromString. (The ...Enum variants return false on failure, while the ...String variants throw.)
  • Runtime SchemaDef list_sub_type field removed, as it was breaking some consumers of serialized SchemaDef. We plan to restore this field in the future. Issue #161 re-opened

C#

  • Runtime SchemaDef list_sub_type field removed, as it was breaking some consumers of serialized SchemaDef. We plan to restore this field in the future. Issue #161 re-opened
  • The Bond.Runtime NuGet package no longer artificially limits Newtonsoft.Json to versions before 10. Issue #212

C# Comm

  • EpoxyListeners can now be configured to require clients to authenticate themselves with a certificate. This is configured via the clientCertificateRequired parameter when creating an EpoxyServerTlsConfig.
  • Internals of the Epoxy protocol cleaned up. See the updated wire format specification.

4.3.0: 2016-08-23

  • gbc & compiler library: 0.5.0.0
  • IDL core version: 1.0 (first release)
  • IDL comm version: 1.0 (first release)
  • C++ version: 4.3.0
  • C# NuGet version: 4.3.0
  • C# Comm NuGet version: 0.6.0

gbc and Bond compiler library

  • User-defined TypeMappings can now be created. This makes is easier to implement code generation for new languages. Pull request #172
  • Runtime SchemaDef now includes information about whether BT_LIST fields are nullable or blobs. Issue #161
  • Validate default value type mistmatches. Issue #72 Issue #128
  • Validate default value out-of-range values. Issue #73
  • Fail when struct field has default value of nothing. Issue #164
  • Fail when enum field doesn't have default value. Issue #177
  • Validate default value of type aliases
  • Generated types will used = default move constructors if possible. This results in many generated types having noexcept move constructors.
  • Fix a bug where, if a Bond namespace contained a struct and an enum value with the same name, generated C++ would contain ambiguous references. Issue #202

IDL core

  • Set up a separate IDL directory so that IDL is independent of language bindings. Pull request #219

IDL comm

  • Set up a separate IDL directory so that IDL is independent of language bindings. Convert comm IDL files to use C++-style naming convention. Pull request #219

C++

  • Improvements in the nullable implementation. Pull request #174
    • Correctly use allocator model.
    • Reduce size of nullable in the normal case.
    • And others
  • Runtime SchemaDef now includes information about whether BT_LIST fields are nullable or blobs. Issue #161
  • The following Bond types have (possibly conditional) noexcept move constructors: blob, bonded, maybe, nullable, RuntimeSchema, value.

C#

  • Bond can now be used with Newtonsoft.Json >= 7.0.1 and < 10
  • Runtime SchemaDef now includes information about whether BT_LIST fields are nullable or blobs. Issue #161

C# Comm

  • Logging interface revamped to make it non-static, eliminate boilerplate code, and to handle logging-related exceptions gracefully.
    • LogHandler renamed to ILogSink.
    • TransportBuilder.SetLogSink added to associate a logger with a transport.
    • TransportBuilder.EnableDebugLogging added to control whether debug logs are emitted or not.
    • The ILogSink.Log method is now provided a pre-formatted string instead of a format string and its arguments.
  • Transport is now parameterized with Connection and Listener implementations. This eliminates the need to cast the results of transport.ConnectToAsync() and transport.MakeListener() to transport-specific subtypes.
  • Epoxy has a hook for performing custom host to IP address resolution. This is configured with EpoxyTransportBuilder.SetResolver.
  • Bond-generated Errors now give clients opaque GUIDs. These GUIDs can be matched against emitted metrics for debugging.
  • Epoxy can now be configured to use TLS to secure the connection.
    • TLS configuration is set via EpoxyTransportBuilder.SetClientTlsConfig/EpoxyTransportBuilder.SetServerTlsConfig.
    • See the TLS example for even more details.

4.2.1: 2016-06-02

  • gbc & compiler library: 0.4.1.0
  • C# NuGet version: 4.2.1
  • C# Comm NuGet version: 0.5.0

gbc

C#

  • Added Deserializer.TryDeserialize().
  • Added two new NuGet packages to make it easier to consume Bond piecemeal.
    • Bond.Compiler: contains gbc, bond.bond, and bond_const.bond in a tools-only package
    • Bond.Compiler.CSharp: contains gbc and C# MSBuild targets. No longer do you have to consume Bond.CSharp (which pulls in all of the rest of Bond) just to get codegen.

C# Comm

4.2.0: 2016-04-28

  • gbc & compiler library: 0.4.0.2
  • C# NuGet version: 4.2.0

C#

  • Add support for Compact Binary v2 writing. Issue #70

4.1.0: 2016-04-22

  • gbc & compiler library: 0.4.0.2
  • C# NuGet version: 4.1.0

gbc

C++

  • Enums are now cast to 32-bit integers to avoid some compiler warnings.
  • Bond can be used in code bases where there is a function-style macro named U.

C#

4.0.2: 2015-12-14

  • gbc & compiler library: 0.4.0.1
  • C# NuGet version: 4.0.2

Bond compiler library

C#

Earlier release

These sections need to be written. In the meantime, consult the repository's history.