Skip to content

v1.6.0

Compare
Choose a tag to compare
@Tradias Tradias released this 27 Apr 07:41
· 618 commits to master since this release

Features

  • (experimental) Add agrpc::CancelSafe, a utility to make RPC step functions compatible with Asio's cancellation mechanism.
  • agrpc::PollContext now uses a configurable backoff to avoid wasting CPU resources during GrpcContext idle time.
  • agrpc::GrpcContext::run and poll now return a boolean indicating whether at least one operation has been processed.
  • Add .natvis file. It is automatically added to the interface sources of asio-grpc when using the Visual Studio generator. In VSCode it should be added manually to the "visualizerFile" field in launch.json.
  • Defining (BOOST_)ASIO_NO_TS_EXECUTORS now hides members functions of the agrpc::GrpcExecutor related to Networking TS executors: context(), on_work_started(), on_work_finished(), dispatch(), defer() and post().
  • Deprecated: If a completion handler does not have an associated allocator then asio-grpc retrieves one from the associated executor's allocator property. This behavior will be removed in v1.8.0. Please use agrpc::bind_allocator(allocator, completion_token) or asio::bind_allocator instead.

Fixes

  • Defining (BOOST_)ASIO_HAS_DEDUCED_XXX_TRAIT macros is no longer required when compiling with MSVC in C++17.
  • Using polymorphic_allocator as the associated allocator of the completion handler passed to agrpc::repeatedly_request did not compile in C++20. Likewise, using std::allocator_traits<polymorphic_allocator>::construct would propagate the allocator to the constructor of agrpc::GrpcContext, agrpc::GrpcExecutor and agrpc::AllocatorBinder which was rather unexpected.
  • The comparison operator of agrpc::GrpcExecutor would not compile on older compilers if the allocator is not comparable, e.g. because it is std::allocator<void>.
  • Always return relationship::fork when querying a agrpc::GrpcExecutor for its relationship since that is the only supported setting. Preferring a different relationship property from the executor now returns the executor unchanged.

Performance

  • The client-side request convenience overloads now also perform unbinding of associated characteristics to reduce memory allocation size.
  • Also unbind asio::allocator_binder when using Boost.Asio 1.79.0 or Asio 1.22.1.

Style

  • Including agrpc/grpcContext.hpp now only provides forward declarations of the GrpcContext and its member functions. If you experience use of undefined function issues then add an include to agrpc/grpcExecutor.hpp.
  • No longer open the Asio namespace to specialize class templates.
  • Remove unused header <variant>.

Documentation

  • Document Per-Operation Cancellation properties of all asynchronous functions.
  • Document differences in the behavior of asynchronous operations compared to Asio.
  • Make examples more readable by visually separating individual sub-examples.

Chore

  • Asio-grpc is now available through the Hunter package manager!
  • Add GCC 8.4.0 to Github Actions.
  • Add CMake target to run -fsyntax-only//Zs on public header files and build that target as part of Github Actions.
  • Update Boost to 1.79.0.