v2.7.0
This release prepares asio-grpc for a large trim down in the next major release by adding an API that follows Asio's I/O object model more closely, avoids the pitfalls of the current API and provides more customization options.
The following headers should be considered deprecated:
bind_allocator.hpp
, cancel_safe.hpp
, default_completion_token.hpp
, get_completion_queue.hpp
, grpc_initiate.hpp
, grpc_stream.hpp
, notify_when_done.hpp
, repeatedly_request_context.hpp
, repeatedly_request.hpp
, rpc.hpp
, use_awaitable.hpp
, wait.hpp
Features
- Add
agrpc::ServerRPC
, new API for asynchronous servers. - Add
agrpc::register_awaitable_rpc_handler
,agrpc::register_yield_rpc_handler
andagrpc::register_sender_rpc_handler
functions for setting up request handling withagrpc::ServerRPC
. - Breaking change in experimental
agrpc::ClientRPC
API:- Rename
agrpc::ClientRPCGenericUnary
toagrpc::GenericUnaryClientRPC
. - Rename
agrpc::ClientRPCGenericStreaming
toagrpc::GenericStreamingClientRPC
.
- Rename
- Make unary ClientRPCs constructible and add
start
,read_initial_metadata
andfinish
member functions.
Fixes
- Avoid UB from casting function pointer to
void*
inClientRPC
,BasicAlarm
andnotify_one_state_change
asynchronous operations. - Consistently take CompletionToken by forwarding-reference.
Performance
- Improve compile times of
ClientRPC
,BasicAlarm
andnotify_one_state_change
asynchronous operations.
Documentation
- Remove documentation of old API.
Chore
- Run sonarscanner on Ubuntu 22.04 with GCC 11 and Java 17.
- Use vcpkg binarycaching with Github Caches.