Release v1.46.1
This release contains refinements, improvements, and bug fixes.
Release v1.46.0
Core
Ignore Connection Aborted errors on accept.
Filter content-length metadata from the application.
RetryFilter: Cleanup pending byte stream.
HTTP Proxy: Ignore empty entry in no_proxy list.
Adding http/1.1 support in httpcli.
HTTP2: Initiate write for acknowledging SETTINGS frame.
Change the unsupported polling strategy log for forking to GPR_INFO.
Handle SSL_ERROR_WANT_WRITE error.
TCP Async Connect: Fix Heap use-after-free.
HTTP2: Add graceful goaway.
Remove epollex poller.
TlsCredentials: Comparator implementation.
Decrease verbosity of alts handshaker logs which can happen during cancellation.
HTTP2: Should not run cancelling logic on servers when receiving GOAWAY.
HTTP2: Don't throttle pings from the server.
Include ADS stream error in XDS error updates.
Remove idempotent/cacheable requests.
C++
Add bazel cpp distribtest for grpc_cc_library.
C#
Add support for grpc-dotnet in GKE benchmarks.
Sync unary call after shutdown: Add a repro and fix for 19090.
Remove C# Legacy (a.k.a. "Classic") csproj example.
Python
Add Python GCF Distribtest.
Add Python Reflection Client.
Revert "Fix prefork handler register's default behavior".
Fix prefork handler register's default behavior.
Fix fetching CXX variable in setup.py.
Ruby
Support pre-built binaries for Ruby 3.1.
Make sure to always receive initial metadata in ruby.
Release v1.44.0
Core
xDS: Rbac filter updates
Fix xDS client for multiple watchers.
bump C-core version for upcoming release.
Add a trace to list which filters are contained in a channel stack.
Remove grpc_httpcli_context.
xDS: Add support for RBAC HTTP filter.
API to cancel grpc_resolve_address.
Replace work serializer with a mutex in c-ares resolver.
xDS: Add graceful shutdown for old connections on listener resource update.
C++
Promote ClientContext::set_wait_for_ready to be non-experimental.
Python
Add python async example for hellostreamingworld using generator.
Disable __wrap_memcpy hack for Python builds.
Bump Bazel Python Cython dependency to 0.29.26.
Fix libatomic linking on Raspberry Pi OS Bullseye.
Allow generated proto sources in remote repositories for py_proto_library.
Release v1.43.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Remove redundant work serializer usage in c-ares windows code.
Support RDS updates on the server.
Use WorkSerializer in XdsClient to propagate updates in a synchronized manner.
Support Custom Post-handshake Verification in TlsCredentials.
Reintroduce the EventEngine default factory.
Assert Android API >= v21.
Add support for abstract unix domain sockets.
C++
OpenCensus: Move metadata storage to arena.
C#
[C#] Add nullable type attributes to Grpc.Core.Api.
Objective-C
Revert "Revert "[objc] GRPCMetadataDictionary convenient typedef"".
Python
[Aio] Validate the input type for set_trailing_metadata and abort.
Release v1.42.0
Core
Update RDS parsing for use on servers.
Upgrade Abseil to LTS 20210324, Patch 2.
Upgrade bazel to 4.2.1 (LTS), upgrade bazel toolchain to 4.1.0.
Remove old backwards compatibility cronet compression workaround code.
EventEngine Test Suite: Timers.
EventEngine::Closure.
OpenCensusCallTracer: Move context generation to StartTransportStreamOpBatch.
Fix client idle filter.
allow connectivity state watching to work on lame channels.
grpclb: implement subchannel caching.
xds: change CSDS to populate new generic_xds_configs field.
C++
Describe support-levels for undocumented supported platforms.
C#
Fix link error when building app with Xamarin.iOS.
C#: metadata.Get and GetAll should accept uppercase keys.
Fix use-after-free metadata corruption in C# when receiving response headers for streaming response calls.
Objective-C
[objc] GRPCErrorCode enum base type to int32_t.
[objc] Adding lightweight generic to GPRCCallOptions's initialMetadata prop .
[objc] GRPCMetadataDictionary convenient typedef.
[objc] Switch to proto forward declare for gRPC codegen plugin.
Python
Add Aspects to Bazel py_proto_library and py_grpc_library Rules.
[Aio] Add add_done_callback/done/cancelled methods to ServicerContext.
[Aio] Correct the typing of input metadata.
Address leak when using request stream interceptors
Catch ExecuteBatchError in _consume_request_iterator.
[Aio] Resolve deprecated warnings from asyncio.
Create Bazel gevent test harness.
Add python_requires >=3.6 to grpcio-* packages.
fix: use == instead of is when comparing with a certain types of literals.
python: fix type annotation for the _metadata field.
Ruby
ruby: add arm64 darwin support.
ruby: build native Darwin gems using rake-compiler-dock.
All checksums have been double-checked against existing RMD160 and
SHA512 hashes
Not committed (merge conflicts...):
net/radsecproxy/distinfo
The following distfiles could not be fetched (fetched conditionally?):
./net/citrix_ica/distinfo citrix_ica-10.6.115659/en.linuxx86.tar.gz
./net/djbdns/distinfo dnscache-1.05-multiple-ip.patch
./net/djbdns/distinfo djbdns-1.05-test28.diff.xz
./net/djbdns/distinfo djbdns-1.05-ignoreip2.patch
./net/djbdns/distinfo djbdns-1.05-multiip.diff
./net/djbdns/distinfo djbdns-cachestats.patch
Release v1.41.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
De-experimentalize XdsCredentials and XdsServerCredentials API.
xDS: Remove environmental variable guard for security.
xDS Security: Use new way to fetch certificate provider plugin instance config.
xDS server serving status: Use a struct to allow more fields to be added in the future.
Annotate impl/codegen with IWYU pragmas.
Update submodule envoy-api to origin/main.
Upgrade third_party/protobuf to v3.17.3.
update submodule boringssl-with-bazel with origin/master-with-bazel.
Delete libuv-iomgr implementation and GRPC_UV build option.
Allow access to Google API regional endpoints via Google Default Credentials.
Remove GPR_*_TLS macros except PTHREAD.
Limit initial window size increases and per-stream window delta.
C++
Bump version to v1.41.0-pre1.
De-experimentalize XdsServerBuilder.
C++ opencensus filter: Fix point of creating context for overall call.
Flag grpc++_test library testonly.
Add note on officially supported platforms.
Open census call attempt span name and attribute changes
Open census call attempt span name and attribute changes.
C#
Backport 27382 to v1.41.x.
[csharp] Fix error loading library grpc_csharp_ext.*.dll on windows with non-ASCII encoding.
Annotate copied Content native lib items with package id to enable customization.
Objective-C
Objective-C: Fix issue with creating a Unix file socket.
Python
Use manylinux_2_17 instead of manylinux_2_24 tag for manylinux2014 aarch64 wheels.
Add Python 3.10 drop 3.5.
[Aio] Remove custom IO manager support.
Release v1.40.0
Core
Update Envoy API to the latest version (2021-07-30).
Enable retries by default.
Add opentelemetry as a submodule for latest xDS API.
Pointing the protobuf submodule to the new URL.
Remove BUILD.gn.
Prevent race causing early-destruction of grpc_winsocket object when creating a TCP connection.
TLS Security Connector: Add an always-fail-handshaker when certificates are not ready.
Enable layering checks in the Bazel build.
Support user provided "scope" in JWT and GDC.
C++
C++ opencensus filter: Fix point of creating context for overall call.
Open census call attempt span name and attribute changes
Open census filter: Use new internal stats API and record retry stats.
Add OpenCensus measures and views for retries.
Python
Add retry example for gRPC Python.
Remove Python 2.7 binary wheel generations.
[Aio][fix] catch application exception in request iterators.
Release v1.39.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Initialize tcp_posix for CFStream when needed.
Update boringssl submodule.
Fix backup poller races.
I am back.
Use default port 443 in HTTP CONNECT request.
C++
New iomgr implementation backed by the EventEngine API.
async_unary_call: add a Destroy method, called by std::default_delete.
De-experimentalize C++ callback API.
C#
[C#] Add ChannelCredentials.SecureSsl property for better codecompletion with ChannelCredentials.
Better way of building protoc aarch64 artifacts.
Add C# plugin "file_suffix" option defaulting to "Grpc.cs".
Add "GeneratedCode" attribute to generated service stubs.
PHP
PHP: stop reading composer.json file just to read the version string.
Python
Python AIO: Match continuation typing on Interceptors.
Workaround 26279 by publishing manylinux_2_24 wheels instead of manylinux2014 on aarch64.
Fix zlib unistd.h import problem.
Handle gevent exception in gevent poller.
Ruby
Set XDS user agent in ruby via macros.
Release v1.38.0
Core
Invalidate ExecCtx now before computing timeouts in all repeating timer events using a WorkSerializer or combiner.
Fix use-after-unref bug in fault_injection_filter.
Fix 25897 to avoid crashes when certificates are not yet updated.
gRPC EventEngine Interface.
Allow the AWS_DEFAULT_REGION environment variable.
C++
s/OnServingStatusChange/OnServingStatusUpdate.
cmake: only install channelz if gRPC_USE_PROTO_LITE is off.
C#
Grpc.Tools: Use x64 protoc on macOS arm64.
Provide runtime/framework info in gRPC C# user agent string.
Python
Add grpcio-admin Python package.
Add CSDS API to Python.
Expose code and details from context on the server side.
Explicitly import importlib.abc; required on Python 3.10.
Fix potential deadlock on the GIL in AuthMetdataPlugin.
Introduce new Python package "xds_protos".
also build python3.6 aarch64 manylinux2014 wheel.
Remove async mark for set_trailing_metadata interface.
Ruby
ruby: use x86_64 binary on M1 macs.
Add ruby 3.0 support for mac binary packages.
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.