Release v1.37.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Bump up minimum supported clang to 4.0.
Use URI form of address for channelz listen node.
Implementation CSDS (xDS Config Dump).
Don't assume that c-ares won't retry failed writes in grpc_core::GrpcPolledFdWindows::SendVUDP.
Fix an infinite read loop with SRV record resolution on windows.
xDS status notifier.
Remove CAS loops in global subchannel pool and simplify subchannel refcounting.
Add missing security field to channelz Socket.
Disable check_call_host when server_verification_option is not GRPC_TLS_SERVER_VERIFICATION.
C++
Remove fault injection environmental variable guard.
Implement C++ Admin Interface API.
cmake: Reflect minor version change in SONAME for C++ and C#.
xDS Client-Side Fault Injection.
Python
use boringssl asm optimizations in aarch64 wheel source build.
Clarify Guarantees about grpc.Future Interface.
Use crosscompilation to build python armv7 wheels.
[Aio] Add time_remaining method to ServicerContext.
Standardize all environment variable boolean configuration in python's setup.py.
Crosscompile python aarch64 wheels with dockcross.
Fix Signal Safety Issue.
Release v1.36.0
Core
Remove unnecessary internal pollset set in c-ares DNS resolver.
Fix implicit declaration error in zlib + macOS.
Support Default Root Certs in Tls Credentials.
C++
Move third party identity C++ api out of experimental namespace.
refactor!: change error_details functions to templates.
Support ServerContext for callback API.
Python
Implement Python Client and Server xDS Creds.
Release 1.35.0
For gRPC documentation, see grpc.io. For previous releases, see Releases.
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Backport "Fix implicit declaration error in zlib + macOS".
xDS features doc update for case insensitive prefix/full path matching.
Add darwin_arm64 and darwin_arm64e to c-ares config settings.
Add FileWatcher CertificateProvider.
Protect xds security code with the environment variable "GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT".
C++
Upgrade bazel to 3.7.1 (repository-wide).
Makefile: remove support for building protobuf, C++ libraries and executables.
C#
fix nuget package signing on Linux (do not use PublicSign=true on non-windows).
Remove C# as a supported language for xDS features.
Fix C# native library loading in .NET 5 single-file apps.
Python
Fix visibility of libprotobuf symbols in protoc_compiler.so on Mac.
[Aio] Correct type annotation of grpc.aio.ServicerContext.abort.
Add limit concurrent RPC feature to asyncio server.
[Aio] Fix the emtpy response handling in streaming RPC.
[Backport] Implement grpc.Future interface in SingleThreadedRendezvous.
[Backport] Make Python 2 an optional dependency for Bazel build.
Ruby
Fix implicit decalaration in rb_event_thread.c.
Base the ruby build off of latest rake-compiler-dock/manylinux14 images, add ruby 3.0 binary packages.
Ruby: add support to circuit_breaking xds interop test case.
Binary packages (for example, grpc-1.35.0-x86_64-linux.gem):
Are now compatible with ruby 3.0
Are now built off of manylinux14 (we no longer support Centos 6)
Release v1.34.1
This is release 1.34.1 (gauntlet) of gRPC Core.
For gRPC documentation, see grpc.io. For previous releases, see Releases.
This release is a patch specifically for Python and C#, which adds three backported PRs:
Backport "Fix visibility of libprotobuf symbols in protoc_compiler.so on Mac" to 1.34.x
Backport "Lazily import grpc_tools when using runtime stub/message generation" to 1.34.x
Backport "do not use <PublicSign>true</PublicSign> on non-windows" to 1.34.x
1.34.0:
Incur setuptools as an dependency for grpcio_tools.
Stop the spamming log generated by ctrl-c for AsyncIO server.
[gRPC Easy] Make Well-Known Types Available to Runtime Protos.
Bump MACOSX_DEPLOYMENT_TARGET to 10.10 for Python.
Make Python 2 an optional dependency for Bazel build.
[Linux] [macOS] Support pre-compiled Python 3.9 wheels.
Release v1.33.2
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
Deprecate GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS.
Expose Cronet error message to the application layer.
Remove grpc_channel_ping from surface API.
Do not send BDP pings if there is no receive side activity.
C++
Makefile: only support building deps from submodule.
C#
Add trimming attribute to BindServiceMethodAttribute.
Fix incremental build of csproj projects depending on grpc.
Python
[Backport] Implement grpc.Future interface in SingleThreadedRendezvous.
[Backport] Make Python 2 an optional dependency for Bazel build.
Allow asyncio API to be imported as grpc.aio.
[gRPC Easy] Fix import errors on Windows.
Make version check for importlib.abc in grpcio-tools more stringent.
Release v1.33.1
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Deprecate GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS.
Expose Cronet error message to the application layer.
Remove grpc_channel_ping from surface API.
Do not send BDP pings if there is no receive side activity.
C++
Makefile: only support building deps from submodule.
C#
Add trimming attribute to BindServiceMethodAttribute.
Fix incremental build of csproj projects depending on grpc.
Python
[Backport] Make Python 2 an optional dependency for Bazel build.
Allow asyncio API to be imported as grpc.aio.
[gRPC Easy] Fix import errors on Windows.
Make version check for importlib.abc in grpcio-tools more stringent.
Release v1.32.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Remove stream from stalled lists on remove_stream.
Do not cancel RPC if send metadata size if larger than peer's limit.
Don't consider receiving non-OK status as an error for HTTP2.
Keepalive throttling.
Include the target_uri in "target uri is not valid" error messages.
Fix "cannot send compressed message large than 1024B" in cronet_transport.
Receive SETTINGS frame on clients before declaring subchannel READY.
Enabled GPR_ABSEIL_SYNC.
Experimental xDS v3 support.
C++
Upgrade bazel used for all tests to 2.2.0.
Remove test targets and test helper libraries from Makefile.
Fix repeated builds broken by re2's cmake.
Log the peer address of grpc_cli CallMethod RPCs to stderr.
Python
[gRPC Easy] GA: This release enables runtime import of .proto Files. (gRFC, PR) Together with support for simple stubs present since 1.29, this completes gRPC Easy. To start using these features, take a look at the example. If using simple stubs without runtime proto import, generated code must be regenerated with an up-to-date version of the grpcio-tools package.
[Aio] Graduation from experimental folder.
[Aio] Prevent call objects from outliving its parent channel or server.
[Aio] Add a fail-back polling mode for Windows+3.8+.
Raises an exception when port binding failed.
Implement compute_engine_channel_credentials in Python.
Fix bazel out directory when using external repo.
Release v1.31.0
Core
The following new xDS functionality is added in this release:
Requests matching based on path (prefix, full path and safe regex) and headers.
Requests routing to multiple clusters based on weights.
The features supported in a given release are documented here.
Other changes:
Remove MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL to ensure timely processing of events.
Include the target name in top-level DNS error messages.
Remove xds-experimental URI scheme.
fix memory leak of grpc_resource_user_quota.
Store ref to the ExternalConnectivityWatcher in external_watchers_ map.
Update grpclb configuration with field "service_name".
Fix possible deadlock in RemoveExternalConnectivityWatcher.
Enable TLS 1.3 in the C-core and all wrapped languages.
Add message-size check before message decompression with ordering change.
Fix race condition caused by simultaneous updates on SSL server handshaker.
Add missing reset for ping clocks to avoid mistakenly sending GOAWAY frames due to 'too_many_pings'.
C++
Simplify makefile: Get rid of "install" rules with pure make, recommend cmake and bazel instead.
Replaced grpc::string with std::string.
Fix wrong version in gRPCConfigVersion.cmake and grpc++*.pc.
Python
[Aio] Support tuple and aio.Metadata interaction.
[Aio] Allows poller to bind to ephemeral loops in multiple threads.
[Aio] Hide init_grpc_aio and guard async API outside of AsyncIO context.
[Aio] Implement methods to access auth context and peer info.
Add protobuf as an "extras" dependency to grpcio package.
[Aio] Use Metadata type.
Avoid attribute error in del of _ChannelCallState.
Default wait_for_ready to True in simple stubs.
Propagate contextvars to auxiliary threads.
Simplify channel credentials in simple stubs.
Release v1.30.1
This release is a patch specifically for the Ruby bindings
Release v1.30.0
Core
This release adds an xDS URI scheme called xds. This is the stable version of the scheme xds-experimental that was introduced in v1.28.0. xds-experimental scheme will be removed in subsequent releases so you must switch to xds 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.
Support xDS via both xds and xds-experimental URI schemes.
Fix sorting of gRPCLB addresses when resolved via DNS.
Support local creds in grpc_cli.
Add some additional delay when sending pings without there being activity on receive side.
Added GRPC_TSAN_SUPPRESSED and GRPC_ASAN_SUPPRESSED.
Fail decompression when the gzip trailer is missing.
Include source address in tcp posix async connect errors.
Fix HTTP status conversion inconsistencies.
Add GRPC_ARG_HTTP_PROXY channel argument.
Include the query type and name in all c-ares DNS error messages.
Include the destination address in synchronous TCP connect errors.
Use aligned calculation to determine transport stream from call data.
Fixing bug with END_STREAM if header has continuations.
Fail writes when End of stream has been received.
C++
Fix missing include for std::string.
Don't override cmake cxx standard when already set by the user.
Grpc.Tools: Fix cpp paths in tools to match actual codegen.
TlsCredentialsOption API optimization.
Fixed MinGW 7.3.0 shared library compile and link issues.
Fix interceptor batch method FailHijackedRecvMessage for async APIs.
Python
Add Aio stream stream client interceptor support.
[Aio] Add AsyncIO support for Channelz.
Stop memory leak when Python channel is deallocated without invoking "close".
Expose ALTS client/server credentials in Python API.
[Aio] Stream Unary client interceptor.
[Aio] Make sync handlers runnable in AsyncIO server.
[Aio] Add AsyncIO support to grpcio-status.
[Aio] Implement the Unary Stream client interceptor.
Release v1.29.1
PHP
PHP: Fix include path for boringssl in windows build
Objective-C
--grpc_out: protoc-gen-grpc: Plugin killed by signal 6.
Release v1.29.0
Core
Move decompression into gRPC Core.
Introduce CFRunLoop based iomgr.
Add option for logging keepalive pings.
Clamp the receive flow control window size to ((1 << 31) - 1).
CallCredentials debug string API.
C++
Append to CMAKE_MODULE_PATH instead of replacing it.
Clean way to enable C and C++ standards in cmake.
Autogenerate build.yaml equivalent from bazel BUILD metadata (with bazel query xml).
Release v1.28.1
This release is a patch specifically for the Python bindings to address 22546.
Python
Backport 22549 to 1.28 (Only load simple stubs code on 3.6+ interpreters).
Release v1.28.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
feat: add x-goog-user-project header from quota_project_id field.
Reintroduce 21527 (boringssl submodule unification - take two).
Reintroduce 21527 (boringssl submodule unification).
Treat an empty http_proxy mean "Don't use proxy" and skip parsing it.
C++
This release adds an experimental client side implementation of xDSv2 APIs. This allows a gRPC client written in 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 and cluster route action is supported. More features will be added in future.
Cherrypick 22147: xds: send no-overprovisioning client capability and populate user_agent fields.
Fix regression in MSVC runtime flag.
Unify boringssl submodules and use non-developer boringssl cmake build.
Objective-C
Fix ObjC memory consumption increase as app runs.
Python
Backport Simple Stubs Codegen to 1.28.
[Aio] Generate gRPC AsyncIO API Reference.
Experimental: Implement Top-Level Invocation Functions Not Requiring an Explicit Channel.
[Aio] Implement health checking servicer in AsyncIO.
[Aio] Prohibit mixing two styles of API on client side.
[Aio] Add channel_ready helper function.
[Aio] Support compression for both client and server.
[Aio] Close ongoing calls when the channel is closed.
[Aio] Fix the server credentials & improve socket implementation.
[Aio] Support wait-for-ready mechanism.
[Aio] Fix the windows build failure.
Stop building manylinux1 images.
[Aio] Move status and initial metadata handling to Cython.
Ruby
Backport to 1.28.x: add ruby 2.7 to mac binary pkgs.
Add ruby-2.7 to build process of binary gems for Windows and Linux.
Release v1.26.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Fix compression filter crash on empty payload.
Ensure awake pollset_work threads exist on Windows.
Disable client_idle_filter.
Remove gpr_get/set_allocation_functions.
Security audit response.
C++
Automatically disable testing frameworks if gRPC_BUILD_TESTS=OFF.
Do not build channelz when gRPC_USE_PROTO_LITE.
Add options for all codegen plugins.
gRPC-C++ podspec follows gRPC versioning.
Issue 19208: Fix pollset_set_del_fd to cleanup all fd references.
De-duplicate .proto file processing.
cmake: Add VERSION and SOVERSION properties to libraries.
Python
Release Python3.8 wheels for Windows.
Release Python3.8 wheel on macOS.
Fix issue with exception being out of scope in Python 3.
[AIO] Implement the shutdown process for AIO server and completion queue.
Attempt to drop support for Python 3.4.
AIO Unified call interface.
Make sure Core aware of gevent Cython objects.
[bazel] Add an ability to call an optional custom plugin for py_proto_library and py_grpc_library.