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 createbond::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 forunary_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
andbond_const_grpc.h
are generated when the CMake variableBOND_ENABLE_GRPC
is set to that importingbond.bond
andbond_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 togbc
. 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 anarraySegment
parameter for the converted blob. - The code generation MSBuild targets will now skip compiling the
_types.cs
files when--structs=false
is passed togbc
. - ➕ Added
Bond.Box.Create
helper method to createBond.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], likeSystem.IO.Compression.GzipStream
. Issue #498- Such streams are detected by inspecting
[
Stream.CanSeek
][msdn-stream-canseek].
- Such streams are detected by inspecting
[
- 🛠 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.