Skip to content

Latest commit

 

History

History
250 lines (200 loc) · 10 KB

CHANGELOG.md

File metadata and controls

250 lines (200 loc) · 10 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.

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.