v2.8.0
Features
- Add
agrpc::register_callback_rpc_handler
for setting up request handling withagrpc::ServerRPCPtr
, a dynamically allocated ServerRPC which can be used to implement non-coroutine based gRPC servers. - Add experimental support for P2300R7 (
std::execution
) in the form of a new CMake targetasio-grpc::asio-grpc-stdexec
. - Breaking change: Certain completion token like
asio::experimental::use_promise
might now return a different type due to the implementation of Asio's optional requirement on asynchronous operations: The operation's associated I/O executor may be exposed via the Initiation function object's executor_type type alias and get_executor() member function.
Fixes
- Removed all usage of pointer tagging. Although Asio uses it, it is technically undefined behavior.
Performance
- Use Asio's immediate_executor in
ServerRPC::wait_for_done
andWaiter::wait
.
Documentation
- Use Asio's default completion token mechanism in examples.
- Avoid using
asio::detached
in examples since it swallows exceptions. - Document how
register_awaitable_rpc_handler
andregister_yield_rpc_handler
obtain the executor used to spawn the coroutine. - Removed documentation of deprecated CMake options.
Chore
- Remove codeql pipeline