grpc 1.10.0 has been released. Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.
By default, it uses Protocol Buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. It is possible to use other alternatives if desired.
Starting from an interface definition in a .proto file, gRPC provides Protocol Compiler plugins that generate Client- and Server-side APIs. gRPC users typically fall into these APIs on the Client side and implement the corresponding API on the server side.
Synchronous vs. asynchronous
Synchronous RPC calls, that block until a response arrives from the server, are the closest approximation to the abstraction of a procedure call that RPC aspires to.
On the other hand, networks are inherently asynchronous and in many scenarios, it is desirable to have the ability to start RPCs without blocking the current thread.
The gRPC programming surface in most languages comes in both synchronous and asynchronous flavors.
- 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:
grpc_alarm(removed; the C++
grpc::Alarmnow directly invokes core subsurface functions)
gpr_thd_currentid, which remain public
- 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:
- 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