grpc 1.10.0 release, Google high-performance RPC framework


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.

Surface API

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:
    a. grpc_alarm (removed; the C++ grpc::Alarm now directly invokes core subsurface functions)
    b. gpr_join_host_portgpr_cmdlinegpr_subprocess (moved to test/core/util)
    c. gpr_tlsgpr_avl (internalized)
    d. gpr_thd (internalized)

    • Except gpr_thd_id and 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_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)


Leave a Reply

Your email address will not be published. Required fields are marked *