This is the 1.30.0 release (gradius) of gRPC Core.
Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Please consult https://grpc.io/ for all information regarding this product.
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
- This release adds an xDS URI scheme called
xds
. This is the stable version of the schemexds-experimental
that was introduced in v1.28.0.xds-experimental
scheme will be removed in subsequent releases so you must switch toxds
scheme instead.xds
scheme is a client side implementation of xDSv2 APIs. This allows a gRPC client written in C++, Python, Ruby, PHP and C# to receive configuration from an xDSv2 API compatible server and use that configuration to load balance RPCs. In this release, only the virtual host matching, default path (“”
or“/”
) matching and cluster route action are supported. The features supported in a given release are documented here. - Remove unnamed typedef structs in src/core. (#23082)
- Support xDS via both
xds
andxds-experimental
URI schemes. (#23105) - Fix sorting of gRPCLB addresses when resolved via DNS. (#23086)
- Support local creds in grpc_cli. (#23037)
- Add some additional delay when sending pings without there being activity on receive side. (#22932)
- Added
GRPC_TSAN_SUPPRESSED
andGRPC_ASAN_SUPPRESSED
. (#22325) - Fail decompression when the gzip trailer is missing. (#22929)
- Include source address in tcp posix async connect errors. (#22802)
- Fix #19094 and #21947 - Fix HTTP status conversion inconsistencies. (#22901)
- Add
GRPC_ARG_HTTP_PROXY
channel argument. (#20866) - Include the query type and name in all c-ares DNS error messages. (#22865)
- Include the destination address in synchronous TCP connect errors. (#22868)
- Use aligned calculation to determine transport stream from call data. (#22730)
- Fixing bug with
END_STREAM
if header has continuations. (#22626) - Fail writes when End of stream has been received. (#22668)
C++
- Fix missing include for
std::string
. (#23032) - Don't override cmake cxx standard when already set by the user. (#22976)
- Grpc.Tools: Fix cpp paths in tools to match actual codegen. (#22113)
TlsCredentialsOption
API optimization. (#22873)- Fixed MinGW 7.3.0 shared library compile and link issues. (#21720)
- Fix interceptor batch method
FailHijackedRecvMessage
for async APIs. (#22746)
C#
- Reintroduce "C# expose C-core's debug error string in Status struct". (#23148)
- Fix C++ cleanup in Grpc.Tools. (#22895)
- C# expose C-core's debug error string in Status struct. (#22891)
- Fix properties in Grpc.Tools. (#22896)
- C#: add
SkipGrpcNativeLibs
flag (in Grpc.Core.targets). (#22894) - Add helper methods for getting metadata values. (#22743)
Objective-C
- objc: add autogenerated header to generated files. (#22871)
- Moved
GRPCTypes
into its own grpc_objc_library. (#22913)
PHP
Python
- Add Aio stream stream client interceptor support. (#23092)
- [Aio] Add AsyncIO support for Channelz. (#22667)
- Stop memory leak when Python channel is deallocated without invoking "close". (#22855)
- Expose ALTS client/server credentials in Python API. (#22638)
- [Aio] Stream Unary client interceptor. (#22821)
- [Aio] Make sync handlers runnable in AsyncIO server. (#22812)
- [Aio] Add AsyncIO support to grpcio-status. (#22688)
- [Aio] Implement the Unary Stream client interceptor. (#22713)
Ruby
- Fix Ruby 2.7 compatibility in
GenericService.underscore
. (#20417) - Ruby: surface recv_status_op.error_string and into BadStatus exceptions. (#22876)
- Fix to use immutable string literal. (#20867)
- Fix YARD annotation of
GRPC::ClientInterceptor
. (#22734) - Convert hash to keyword arguments for ruby 2.7. (#22915)
- Fix generating method output with nested resource. (#22594)