Bond v7.0.0 Release Notes

Release Date: 2018-04-17 // about 6 years ago
    • 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][msdn-stream-seek], like System.IO.Compression.GzipStream. Issue #498
      • Such streams are detected by inspecting [Stream.CanSeek][msdn-stream-canseek].
    • 🛠 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.

    👀 [msdn-stream-canseek]: https://msdn.microsoft.com/en-us/library/system.io.stream.canseek(v=vs.110).aspx 👀 [msdn-stream-seek]: https://msdn.microsoft.com/en-us/library/system.io.stream.seek(v=vs.110).aspx

    C# Comm

    • Apply IDL annotations to services and methods for Comm.