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::Alarmnow 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_idandgpr_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_messageop is started - Fix a race condition causing freeze at shutdown with
epollexpolling 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
CompletionQueueok result,Shutdowncontract, and effect ofTryCancel - Explain in comments that
GenericStub::Callis deprecated and thatGenericStubusers should prefer the two-phase call creation mechanism (first callPrepareCallthen 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)