gRPC v1.37 released, Google high-performance RPC framework
gRPC is a modern, open-source, high-performance 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. 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.
grpc v1.37 has been released.
- Bump up minimum supported clang to 4.0. (#25443)
- Use URI form of address for channelz listen node. (#25785)
- Implementation CSDS (xDS Config Dump). (#25038)
- Don’t assume that c-ares won’t retry failed writes in grpc_core::GrpcPolledFdWindows::SendVUDP. (#25726)
- Fix an infinite read loop with SRV record resolution on windows. (#25672)
- xDS status notifier. (#25321)
- Remove CAS loops in global subchannel pool and simplify subchannel refcounting. (#25485)
- Add missing security field to channelz Socket. (#25593)
- Disable check_call_host when server_verification_option is not GRPC_TLS_SERVER_VERIFICATION. (#25577)
- Remove fault injection environmental variable guard. (#25792)
- Implement C++ Admin Interface API. (#25753)
- cmake: Reflect minor version change in SONAME for C++ and C#. (#25617)
- xDS Client-Side Fault Injection. (#24354)
- [C#] Add buildTransitive directory to NuGet package. (#25385)
- Reduce Grpc.Core nuget size by generating separate .so with/without debug symbols for grpc_csharp_ext. (#25729)
- make Grpc C# work on aarch64 linux. (#25717)
- Add support for additional protoc arguments in Grpc.Tools. (#25374)
- C#: Use explicit native extension loading whenever possible. (#25490)
- use boringssl asm optimizations in aarch64 wheel source build. (#25453)
- Clarify Guarantees about grpc.Future Interface. (#25383)
- Use crosscompilation to build python armv7 wheels. (#25704)
- [Aio] Add time_remaining method to ServicerContext. (#25719)
- Standardize all environment variable boolean configuration in python’s setup.py. (#25444)
- Crosscompile python aarch64 wheels with dockcross. (#25418)
- Fix Signal Safety Issue. (#25394)