This is the 1.10.0 release (glamorous) 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
- To provide a cleaner install with fewer public headers, several features of core have been removed from the surface or GPR API as they were not used in any wrapped language (except C++) or in external applications, such as:
a.grpc_alarm
(removed; the C++grpc::Alarm
now directly invokes core subsurface functions)
b.gpr_join_host_port
,gpr_cmdline
,gpr_subprocess
(moved totest/core/util
)
c.gpr_tls
,gpr_avl
(internalized)
d.gpr_thd
(internalized)- Except
gpr_thd_id
andgpr_thd_currentid
, which remain public
- Except
- As a result of these changes, core is now at version 6.0.0
- Fix memory leaks in
max_age_filter
(#14501) and http_proxy (#14137) - Changed resolver and LB policy APIs to C++
- Added re-resolution into grpclb policy (#14438).
- Extracted per LB-call data from grpclb policy (#13911)
- Fixed C-core to immediately take ownership of slices when a
send_message
op is started - Fix a race condition causing freeze at shutdown with
epollex
polling strategy (#14177) - Improvements in CMake:
find_package
(#14353) - Portability fixes (#14136, #14198)
- Test infrastructure cleanup (#14117)
- Update BoringSSL submodule (#13948)
- Make RR re-resolve when any of its subchannels fail (#14170)
- DNS resolver caches results, allowing it to be hit arbitrarily often. Resolution frequency is controlled via channel arg
GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS
. (#14228)
C++
- C++ headers are moved from
include/grpc++
toinclude/grpcpp
. Headers ininclude/grpc++
are deprecated (#14210) - Experimental gRPC-C++ Cocoapods podspec (#13935)
- Improve comments explaining
CompletionQueue
ok result,Shutdown
contract, and effect ofTryCancel
- Explain in comments that
GenericStub::Call
is deprecated and thatGenericStub
users should prefer the two-phase call creation mechanism (first callPrepareCall
then callStart
) instead
C#
- Experimental support for client-side and server-side interceptors (#12613)
Objective-C
- Added base64 encoding support of binary header field for Cronet transport
- Fixed build time warnings (#14314)
PHP
- Added memory leak test
Python
- Strip the grpcio source package by removing some of the unneeded files pulled by submodules, decreasing the uncompressed size by about 10MB. (#14533)
- Relax the interceptor API’s requirement of providing a call details instance with all of the attributes specified as comments in the interface. The non-existent attributes will now reassume the values they previously had when they were passed to the interceptor. (#14105)