bond v4.3.0 Release Notes

Release Date: 2016-08-23 // over 7 years ago
    • 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

    • ๐Ÿ’ฅ Breaking change: Runtime SchemaDef now includes information about whether BT_LIST fields are nullable or blobs. Issue #161
    • ๐Ÿ‘‰ User-defined TypeMappings can now be created. This makes is easier to implement code generation for new languages. Pull request #172
    • 0๏ธโƒฃ Validate default value type mistmatches. Issue #72 Issue #128
    • 0๏ธโƒฃ Validate default value out-of-range values. Issue #73
    • 0๏ธโƒฃ Fail when struct field has default value of nothing. Issue #164
    • 0๏ธโƒฃ Fail when enum field doesn't have default value. Issue #177
    • 0๏ธโƒฃ 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.