Skip to content

v2.0.0

Compare
Choose a tag to compare
@Tradias Tradias released this 24 Jul 13:16
· 509 commits to master since this release

Breaking change: All headers now use snake_case instead of camelCase, e.g. #include <agrpc/asioGrpc.hpp> becomes #include <agrpc/asio_grpc.hpp>.

Breaking change: Two overloads for requesting unary RPCs have been removed, example: co_await agrpc::request(&example::v1::Example::Stub::AsyncUnary, stub, client_context, request). Please use other means of obtaining a reference to the agrpc::GrpcContext and then call agrpc::request(&example::v1::Example::Stub::AsyncUnary, stub, client_context, request, grpc_context).

Breaking change: Unsafe overloads of agrpc::get_completion_queue have been removed.

Breaking change: asio-grpcConfig.cmake will now autolink with gRPC::grpc++_unsecure instead of gRPC::grpc++. If you are using encrypted gRPC then you need to explicitly link with gRPC::grpc++ in your CMake files.

Breaking change: If the completion handler passed to an asynchronous operation does not have an associated allocator then asio-grpc will no longer attempt to retrieve one from the associated executor through asio::query(executor, asio::execution::allocator). This behavior had been deprecated in v1.6.0.

Features

  • Add run_until(deadline) to agrpc::GrpcContext.
  • Add PrepareAsync overloads for requesting RPCs in a thread-safe manner.
  • Deprecate the Async overloads for requesting client-side streaming RPCs as they can lead to race-conditions.
  • Add agrpc::BasicGrpcStream overload to agrpc::get_completion_queue.
  • Make agrpc::AllocatorBinder fully constexpr compatible.

Style

  • No longer use std::aligned_storage since it is deprecated in C++23.
  • Continue to implement compile time improvements.

Documentation

  • Add examples for multi-threaded clients and servers.
  • Make the ServerShutdown that is used in examples thread-safe.

Chore

  • Asio-grpc is now available on conan-center!
  • Use CTest's --build-and-test command for the asio-grpc-cmake test. Also use an older version of CMake (3.16) for that test.
  • Remove GCC 9 and Clang 11 pipelines.
  • Update doctest, gRPC, gtest, libunifex and liburing in the pipelines.