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.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.27.0
Core
fix build with OpenSSL1.1.1+ on Windows.
Add a new submodule libuv v1.34.0.
grpclb: Add support for balancer telling client to enter fallback mode.
Bare bones of the libuv EventManager.
Allow default use of system root certs on Android.
C++
Backport: Fix regression in MSVC runtime flag (for v1.27.x).
Add Support for Full Chain Callbacks - experimental namespace.
Improve documentation for building with CMake.
Conditionally enable OPENSSL_NO_ASM for Visual Studio.
Allow gRPC_INSTALL with module providers.
Add Findc-ares.cmake module.
Census client filter: use current span and tags.
Improve & update BUILDING.md.
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.
Release v1.23.0
Core
Add missing APP callback context for custom iomgr.
Increase lower bound on DNS re-resolution period to 30 seconds.
Make sure there is at least a header in the frame storge of H2.
Fix segfault when forking while using gevent.
Mpmcqueue.
Disable the backup poller when using the background poller.
Clearly callout the behavior for listening ports.
Enable CFStream by default on iOS.
Fix DNS resolver cooldown.
Simplify and fix c-ares TCP path on Windows.
Modify codegen to use grpc_impl namespace and other cleanup.
C++
Channel idleness.
Threadpool.
Bump min CMake to 3.5.1 to match Google benchmark.
Migrate from dep.proto. to dep[ProtoInfo] provider.
Release v1.21.2
This is the 1.21.2 patch release for the PHP extension only. Please do not use this release for other language.
PkgSrc:
Fix linking with c-ares.
Release v1.20.0
This release contains refinements, improvements, and bug fixes, with highlights listed below.
Core
Fix bug in CFStream endpoint.
Fix a NULL deref in tcp_client_windows.cc.
Avoid using grpc_core::Executor when the background poller is available.
Update the c-ares submodule to the 1.15 release.
Remove unnecessary hack which causes data races.
Fix Potentially Dangerous Typo - locked function being run outside of combiner.
Trace log the status of every c-ares lookup; cleanup error handling.
Add SPIFFE security stack to gRPC .
Nuking the poll-cv polling engine.
Backport 18201 to fix "symbol not found: _ares_library_init" error in Bazel on MacOS build.
Run run_after_write closures in h2 once write action is done.
Transition into state CONNECTING when we start name resolution.
Support "darwin_x86_64" CPU in cares.BUILD.
Move grpc_shutdown internals to a detached thread.
Fix c-ares on Windows "DNS resolution failure" triggered by logging.
Disable c-ares on Android.
C++
Global Interceptor Registration allowed only once.
cmake fix: builds disabled by CODEGEN=OFF should not be installed.
cmake: when cross-compiling, the host grpc_cpp_plugin should be used.
Release v1.19.1
Core
Backport 18201 to fix "symbol not found: _ares_library_init" error in C++ Bazel build on MacOS.
Python
Backport "Add the missing grpc_cfstream dependency" to v1.19.x.
Release v1.19.0
Core
Fix c-ares on Windows "DNS resolution failure" triggered by logging.
Disable c-ares on Android.
Ignore reserved bit in WINDOW_UPDATE frame.
Set c-ares as the default resolver.
Add period at end of metadata.google.internal to prevent unnecessary DNS lookups.
Decrease verbosity of ALTS platform check to avoid a spam log message.
Fix windows localhost address sorting bug.
Re-enable c-ares as the default resolver; but don't turn on SRV queries.
Remove filters from subchannel args.
C++
Register for cq avalanching when interceptors are going to be run.
Add a caching interceptor to the keyvaluestore example.
Enable per-channel subchannel pool.
Fix build with bazel 0.21.
Switch the default DNS resolver from native to c-ares.
Modifying semantics for GetSendMessage and GetSerializedSendMessage. Also adding ModifySendMessage.
Add interceptor methods to fail recv msg for hijacked rpcs and set recv message to nullptr on failure.
Add interceptor method to fail hijacked send messages and get status on POST_SEND_MESSAGE.
New Experimental Interception API - GetSendMessage and GetSerializedSendMessage.
C#
Upgrade System.Interactive.Async to 3.2.0.
Refactor ServerServiceDefinition and move it to Grpc.Core.Api nuget.
Allow passing null implementation to generated BindService overload using ServiceBinderBase.
Move public types needed for server implementation to Grpc.Core.Api.
Objective-C
Disable c-ares on iOS.
Added support for tvOS.
Fixing a few thread safety issues in gRPC Objective-C library.
Rolling out new API for gRPC Objective-C library.
Python
grpc_prefork(): check grpc_is_initialized before creating execctx.
[gRPC] Enable Python 3 for Bazel to Run Tests.
Escalate the failure of protoc execution.
Remove dependency of grpc.framework.foundation.callable_util.
Ruby
Disable service config resolution with c-ares by default, for now.
Ruby: refactor init/shutdown logic to avoid using atexit; fix windows.
Ruby tooling: respect user toolchain overrides.
Notable changes since 1.7.2:
- Requires protobuf>=3.5.0
- Exec_ctx has been made a thread_local, and is no longer to be passed
as a function parameter.
- LB policies request re-resolution without shutting down
- On server, include receiving HTTP/2 settings in handshake timeout
- C++ headers are moved from include/grpc++ to include/grpcpp. Headers
in include/grpc++ are deprecated
- Experimental gRPC-C++ Cocoapods podspec
- Several features of core have been removed from the surface or GPR
API: grpc_alarm, gpr_join_host_port, gpr_cmdline, gpr_subprocess,
gpr_tls, gpr_avl, and gpr_thd
- Add core underpinnings for TLS session ticket support
- Experimental support for configurable retries
gRPC is a modern, open source remote procedure call (RPC) framework
that can run anywhere. It enables client and server applications to
communicate transparently, and makes it easier to build connected
systems.