Skip to content

Latest commit

 

History

History
297 lines (240 loc) · 12 KB

CHANGELOG.md

File metadata and controls

297 lines (240 loc) · 12 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

  • gbc & compiler library: TBD
  • IDL core version: TBD
  • IDL comm version: TBD
  • C++ version: TBD
  • C# NuGet version: TBD (minor bump needed)
  • C# Comm NuGet version: TBD (minor bump needed)

C#

  • Fixed a bug in the MSBuild targets that caused codegen to always be run if all of the BondCodegen items has Options metadata.
  • Fixed a bug in the MSBuild targets that caused compilation to fail if the $BondOutputDirectory did not end with a trailing slash.
  • A new assembly, Bond.Reflection.dll, has been added, due to some internal refactoring to make way for full .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.
  • The NuGet packages now include initial support for .NET Standard 1.0, which makes it easier to use Bond in .NET Core applications. This initial support is based on the .NET 4.5 build, not on an explicit .NET Standard 1.0 build. Pull request #243
    • Not all assemblies and not all packages work with .NET Standard. If package restore fails, then the package likely doesn't support .NET Standard 1.0.
  • Bond.JSON now depends on Newsoft.JSON 9.0.1, the earliest version that support .NET Standard 1.0

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.