Skip to content

Releases: Tradias/asio-grpc

v3.1.0

08 Apr 15:48
Compare
Choose a tag to compare

Features

  • Prevent AGRPC_ macros from leaking into user code.
  • Add operator bool and swap to agrpc::ServerRPCPtr.

Chore

  • Update vcpkg (includes Boost 1.83->1.84 update)

v3.0.0

14 Feb 10:05
Compare
Choose a tag to compare

v3 migration guide

Features

  • De-experimentalize agrpc::ServerRPC, agrpc::ClientRPC and agrpc::register_x functions.
  • Remove several functions and classes. See migration guide for details.
  • asio-grpcConfig.cmake no longer calls find_package for all possible backends.
  • Remove support for deprecated asio::execution functions.
  • Remove deprecated ASIO_GRPC_USE_BOOST_CONTAINER and ASIO_GRPC_USE_RECYCLING_ALLOCATOR cmake options.

The agrpc::Server/ClientRPC API is not understood by Microsoft's Intellisense. If that bothers you then please react to this bug ticket.

v2.9.3

06 Feb 14:37
Compare
Choose a tag to compare

Fixes

  • InvokeHandler::YES/NO conflicts with Objective-C/C++ define YES/NO on Apple platforms.

v2.9.2

20 Jan 10:45
Compare
Choose a tag to compare

Features

  • Add support for stdexec::schedule(grpc_executor).

Fixes

  • Fix deadlock when the rpc handler passed to agrpc::register_sender_rpc_handler in stdexec returns exec::task.
  • Add missing includes for grpc::ServerAsyncX types in several places. This only lead to compilation errors in certain gRPC versions (~1.30-1.40).
  • Fix compilation of tests with Boost 1.84 due to removed header file.

Performance

  • No longer perform writes_done during finish if a previous write or read_initial_metadata ended in false in the streaming ClientRPCs.

Documentation

Chore

  • Use file(GLOB) to create check-header-syntax target to avoid forgetting to add a new header to the list.
  • Unify common parts of stdexec und unifex tests into one file.
  • Build asio-grpc-check-header-syntax target in the Ubuntu/20.04/Default pipeline.

v2.9.1

27 Dec 13:11
Compare
Choose a tag to compare

Fixes

v2.9.0

24 Dec 11:30
Compare
Choose a tag to compare

This will likely be the last release before v3. Migration guide

Features

  • Breaking change: When using sender/receiver, agrpc::Alarm will now use the set_done/set_stopped channel when cancelled, instead of sending a bool through the set_value channel.
  • Breaking change: When using asio::execution the StopToken was obtained by calling asio::get_associated_cancellation_slot on the receiver. An unstoppable token is now used instead. Note that asio::execution is deprecated and should no longer be used.
  • Asio and execution may now be used within the same application. Simply link with asio-grpc::asio-grpc(-standalone-asio) and asio-grpc::asio-grpc-(unifex|stdexec).
  • Add execution::get_scheduler support to I/O objects.
  • Mark senders [[nodiscard]].
  • Fix and improve asio-grpc.natvis. Also add support for stdexec. To learn how natvis files can improve your debugging experience check out the Visual Studio or Visual Studio Code documentation.

Fixes

  • Partially fix agrpc::Waiter.initiate for sender/receiver. Currently only the set_value channel is forwarded to the waiting operation.
  • Make agrpc::process_grpc_tag work properly with unifex/stdexec instead of silently be a no-op.
  • Use of register_yield_rpc_handler with standalone Asio 1.24.0+.
  • Conditional detection of asio::execution with Asio 1.30.0+ / Boost 1.84+.

Chore

  • Change the Boost.Asio+stdexec test to now use standalone Asio.
  • Update Boost to 1.83.0.
  • Update doxygen-awesome to 2.3.1.

v2.8.0

10 Dec 16:19
Compare
Choose a tag to compare

Features

Fixes

  • Removed all usage of pointer tagging. Although Asio uses it, it is technically undefined behavior.

Performance

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 and register_yield_rpc_handler obtain the executor used to spawn the coroutine.
  • Removed documentation of deprecated CMake options.

Chore

  • Remove codeql pipeline

v2.7.0

28 Oct 14:32
Compare
Choose a tag to compare

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 and agrpc::register_sender_rpc_handler functions for setting up request handling with agrpc::ServerRPC.
  • Breaking change in experimental agrpc::ClientRPC API:
    • Rename agrpc::ClientRPCGenericUnary to agrpc::GenericUnaryClientRPC.
    • Rename agrpc::ClientRPCGenericStreaming to agrpc::GenericStreamingClientRPC.
  • Make unary ClientRPCs constructible and add start, read_initial_metadata and finish member functions.

Fixes

  • Avoid UB from casting function pointer to void* in ClientRPC, BasicAlarm and notify_one_state_change asynchronous operations.
  • Consistently take CompletionToken by forwarding-reference.

Performance

  • Improve compile times of ClientRPC, BasicAlarm and notify_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.

v2.6.0

30 Jul 10:46
Compare
Choose a tag to compare

Features

  • Breaking change in experimental agrpc::RPC API:
    • Rename to agrpc::ClientRPC and agrpc::ClientRPCType.
    • Header name changed to client_rpc.hpp.
    • asio::use_awaitable is no longer the default completion token.
    • Remove third template parameter.
    • For streaming specializations:
      • ClientRPC now creates and owns the grpc::ClientContext, it can be customized during construction or later access using context().
      • Must now be started by calling start(), request() has been removed.
      • finish() and writes_done() no longer guard against being called multiple times.
    • For generic specializations:
      • Replace marker values agrpc::CLIENT_GENERIC_X_RPC with agrpc::ClientRPCType::GENERIC_X.
      • Add type aliases agrpc::ClientRPCGenericUnary<Executor> and agrpc::ClientRPCGenericStreaming<Executor>.
  • De-experimentalize agrpc::HealthCheckService.
  • Add cancel() to agrpc::Alarm.
  • Add support for libunifex v0.2.0 to agrpc::repeatedly_request.

Fixes

  • Typo in NotfiyWhenDoneFn

Documentation

  • Simplify file-transfer example.

Chore

  • Update libunifex to v0.2.0. Version 0.3.0 is also supported by held back due to an ICE in clang 10.

v2.5.1

17 Mar 10:24
Compare
Choose a tag to compare

Fixes

  • Remove Intellisense workaround from agrpc::RPC's RPCType deduction because it causes ICE since Visual Studio 17.5 (C++20 only). See bug report.
  • Bump asio-grpc version in CMakeLists file.