You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Breaking change The deprecated Bond Comm functionality has been removed.
This includes all gbc options related to Comm and the Comm codegen templates
in the Haskell library. Issue
#824
C++ codegen now properly generates move assignment operators. Previously,
this was broken for some cases.
C++ codegen no longer generates checks for C++11, except for MSVC 2013
workarounds.
C++ codegen no longer generates data member initialization that invokes a
constructor accepting Comparer for associative containers.
C++ codegen can now generate copy and move constructors with an allocator
argument when a custom allocator is used and --alloc-ctors is passed to gbc.
C++ codegen can now generate type
aliases that
correspond to ones in IDL when the --type-aliases flag is passed to gbc.
C++ codegen can now use std::scoped_allocator_adaptor
for strings and containers when a custom allocator is used and the --scoped-alloc flag is passed to gbc.
C++ codegen now generates lazily constructed enum name-to-value and
value-to-name maps. Additionally, a user-defined map type can now be
provided to GetNameToValueMap and GetValueToNameMap.
C++ codegen now applies the --export-attribute to the ToString, FromString, ToEnum and FromEnum functions.
Fixed a bug in C++ codegen that incorrectly applied the export attribute to
generic gRPC services.
C++ codegen now generates an allocator_type typedef for a struct when the --allocator option is passed to gbc, instead of specializing std::uses_allocator.
import statements can now end with an optional semicolon.
File and directory paths on the command line, in response files, or in import statements can now use a mix of forward and backslashes. Issue
#869
gbc is now Authenticode dual-signed with both SHA1 and SHA2.
C++
Breaking change The deprecated Bond Comm functionality has been removed.
This includes all gbc options related to Comm and all Comm APIs and header
files. Issue #824
Breaking change Only versions of Boost released in the past two years
(1.61 and newer) are supported. Bond will likely continue to work with
older versions, but it is no longer tested with anything older than 1.61.
Test coverage for Boost versions 1.61–1.66 has been improved. Issue
#771
Breaking change Constructors accepting a Comparer have been removed
from the bond::maybe and bond::nullable types.
Breaking change The bond::is_blob and bond::is_nullable traits have
been removed. The blob and nullable types are not customizable, so these
where never needed or used. The related functionality provided by bond::get_list_sub_type_id remains.
Breaking change Removed a dangerous implicit conversion operator from bond::maybe<T> to const T&. To access a bond::maybe<T> value, use one
of the bond::maybe<T>::value functions.
Breaking change The nested pointer, const_pointer, reference and const_reference typedefs have been removed from bond::nullable<T>.
Breaking change The Allocator (second) type parameter has be removed
from bond::nullable<T> and now it is always deduced from T.
Breaking change The bond::capped_allocator and related types have been
moved to the bond::ext namespace and the "bond/ext" include directory.
Breaking changes in Bond-over-gRPC (based on real-world use and
feedback). Check the updated examples
to see how to use the changed APIs.
The generated ClientCore and ServiceCore class templates and the Client and Service convenience typedefs have all been replaced with
normal classes named Client and Service. The ThreadPool type
parameter has been removed in favor of a simplified runtime representation
of a Scheduler.
The Scheduler concept and the bond::ext::gRPC::thread_pool
implementation now use operator() instead of a schedule() member
function.
The bond::ext::gRPC::server_core class template and the bond::ext::gRPC::server convenience typedef have been replaced with the
normal class bond::ext::gRPC::server.
The generated Client::Async* functions now accept the std::shared_ptr<grpc::ClientContext> argument as the last parameter
instead of as the first. This makes is easier to omit this parameter when
no context customization is needed.
The client callback now directly accepts bond::ext::gRPC::unary_call_result<Response> (drops the std::shared_ptr). Also the unary_call_result now exposes read-only
getters rather than fields. This simplified the type that clients need to
deal with.
The bond::ext::gRPC::wait_callback::arg_type has been removed.
The client_callback.h header file has been renamed to unary_call_result.h to align with its contents.
The bond::ext::gRPC::server_builder has been replaced by the bond::ext::gRPC::server::Start factory function which now returns a
plain bond::ext::gRPC::server object and accepts service instances
managed by std::unique_ptr. This properly models the lifetime
requirements. Service implementations must now pass a Scheduler to the
generated Service base class which is no longer default constructible.
The generated method reflection information no longer uses a redundant bonded<T> wrapper for input_type and result_type typedefs.
The bond::ext::gRPC::unary_call no longer requires bonded<T> wrapper
for request type.
The bond::ext::gRPC::unary_call::FinishWithError has been renamed to Finish. Overloads that take a status can be used to signal an error.
The grpc::Status second argument has been removed from bond::ext::gRPC::unary_call::Finish. gRPC does not support sending a
response with a non-OK status, so the payload was being droped anyway.
Fixed bond::ext::gRPC::unary_call, bond::ext::gRPC::shared_unary_call
and bond::ext::gRPC::unary_call_result types to properly use void and bond::reflection::nothing instead of the bond::Void empty struct. Also
removed unnecessary functions from unary_call and shared_unary_call
for those cases when they are not applicable (e.g. Finish is not
available when return type is nothing).
gRPC v1.12.0 is now required to use Bond-over-gRPC.
This version include a number of memory leak fixes that users of
Bond-over-gRPC were encountering. Issue
#810
This version include some Windows-specific performance
improvements for loopback connections.
The bond::ext::gRPC::wait_callback has been deprecated in favor of
additionally generated client functions that return std::future.
Fixed includes for gRPC services with events or parameterless methods. Issue #735
Fixed a bug which would read an unrelated struct's field(s) when
deserializing a base struct. Issue
#742
Fixed a bug in bond::MapTo<T>::Field that failed to pass the Protocols
type parameter to bond::Apply.
Fixed a race condition when bond::ext::gRPC::io_manager::shutdown and bond::ext::gRPC::io_manager::wait are called concurrently.
Fixed a race condition during bond::ext::gRPC::unary_call destruction.
Fixed the broken move constructor of bond::bonded<T, Reader&>.
Fixed the move constructor of bond::value to actually move the underlying reader.
Added the bond::blob_prolong helper function that will return a bond::blob with a copied data if the original one does not own the memory.
The bond::OutputBuffer::GetBuffers now can accept arbitrary STL-like
containers.
bond::maybe<T> has been overhauled.
Fixed a bug that default initialized an instance of T even when a
maybe held nothing.
Added noexcept variants of bond::maybe<T>::value.
Added bond::maybe<T>::emplace to construct a maybe's value in place.
Added various rvalue-reference and allocator-aware constructors and
assignment operators.
Added operator==(const bond::maybe<T>&, const T&) and operator==(const T&, const bond::maybe<T>&) to compare directly to
instances of T.
Fixed an issue with the ToString, FromString, ToEnum and FromEnum
functions that were previously not exported from a DLL when the --export-attribute option was passed to gbc. Issue
#861
Fixed a bug in bond::nullable<T, Alloc> where it was not propagating an
allocator to T when allocator_type was not explicitly defined.
Fixed a bug in bond::make_box where const T& was not handled correctly.
The use of bond::check_method has been replaced with less restricting
expression SFINAE checks on supported compilers. Issue
#896
Fixed a bug where bond::ext::gRPC::io_manager could cause a thread to join
itself.
The preferred namespace for Bond-over-gRPC is now bond::ext::grpc. The
previous namespace, bond::ext::gRPC, continues to work.
Added a Windows-specific implementation of a thread
pool.
C#
Breaking change The deprecated Bond Comm functionality has been removed.
This includes all gbc options related to Comm and all Comm APIs, assemblies,
and NuGet packages. Issue
#824
Breaking change The Bond.CSharp and Bond.Compiler.CSharp NuGet packages
perform implicit codegen when the simplified .NET Core .csproj format is
used. This breaking change does not affect projects using the classic .csproj format. Any .NET Core projects that encounter the build error
"Duplicate BondCodegen items were included." and were explicitly listing BondCodegen items will either need to rely on implicit codegen or disable
all implicit inclusion. To set per-item
metadata, use the item update
syntax. Issue #636
The C# attribute Bond.Attribute can now be applied to methods. This fixes
broken codegen when attributes are used on service methods. Issue
#617
Bond Attributes on service methods are now present on all the client
overloads for the methods. Previously, just the "friendly" method had the
attributes.
Grpc.Core v1.12.0 is now required to use Bond-over-gRPC.
This version include a number of memory leak fixes that users of
Bond-over-gRPC were encountering. Issue
#810
This version include some Windows-specific performance improvements for
loopback connections.
BondCodegen items will now appear in the Visual Studio 2017+ UI in .NET
Core projects.
The .NET Standard assemblies are fully strong-name signed. Previously, they
were inadvertently only public strong-name signed.
The .NET assemblies are now Authenticode dual-signed with both SHA1 and
SHA2.
Fixed a bug in the codegen targets when using gbc from $PATH on macOS and
Linux that prevented the C# compiler from finding the generated C# files.
Preview: Added preliminary support for generating types with constructors
with parameters for each field. This functionality will change in the future
and may be removed. Pull request
#857