Skip to content

v2.4.0

Compare
Choose a tag to compare
@Tradias Tradias released this 29 Dec 18:01
· 347 commits to master since this release

Features

  • Add cancellation support to agrpc::RPC.
  • Add a new install option to use asio::recycling_allocator instead of <memory_resource> or Boost.Container. This can be handy in combination with libc++ and standalone Asio to avoid taking a dependency on Boost.
  • Deprecated: Constructor agrpc::GrpcContext{std::make_unique<grpc::CompletionQueue>()}, use the new default constructor instead.
  • Deprecated: Member function agrpc::CancelSafe::is_running has been renamed to is_wait_pending() because it never reported whether the asynchronous operation is still running but instead whether a wait is currently pending.

Fixes

  • A failed write with grpc::WriteOptions::set_last_message on a high-level client streaming RPC incorrectly completes with true.
  • The operation state obtained by connecting a receiver to the sender returned by agprc::notify_when_done is deallocated during GrpcContext destruction, leading to double free because the lifetime of the operation state is expected to be handled by the connector.
  • Using asio::deferred for agrpc::RPC::finish and agrpc::RPC::writes_done does not compile.
  • The rvalue-overload of agrpc::Alarm::wait does not extend the lifetime of the alarm correctly when using completion tokens like asio::deferred.
  • Honor ASIO_GRPC_USE_BOOST_CONTAINER CMake variable when using asio-grpc with add_subdirectory.
  • Compatibility of sender/receiver with Asio 1.25/Boost 1.81.

Performance

  • Improve performance of high-level client read_initial_metadata, read, write and finish by replacing some if-conditions with compile time dispatch.
  • Reduce allocation size of each health check watch request.
  • Reduce size of all sender operation states by one pointer and the notify_when_done operation state by two pointers.

Documentation

  • Correctly state that agrpc::RPC::read_initial_metadata may not be called concurrently with write.

Chore

  • Adjust .clang-tidy rules.
  • Fix CMAKE_UNITY_BUILD and enable it for some CI builds.
  • Add test for add_subdirectory-consumption of asio-grpc.
  • Update doxygen and doxygen-awesome.