Skip to content

@nicolasnoble nicolasnoble released this Sep 9, 2015 · 32572 commits to master since this release

Release 0.11.0: BETA

Please see the notes for the previous releases here:

Beta release of

As of this release, we expect no major API changes to any gRPC implementation.

Known issues:

  • Windows: some extraneous log messages are printed, but they should not impact functionality nor stability (see #3289 and #3290)
  • Memory corruption may occur on the server when using server-side authentication. If you are using server-side authentication and this is affecting you, a patch is available at 1fe38ff
  • PHP extension is unstable with Apache/Nginx, we are actively working to resolve that. See issue #2275.


  • Added void* reserved arguments to public facing API’s for future expansion.
  • Windows builds have been greatly stabilized.
  • Fixed zero-poll-time completion queue usage.
  • Fixed cases where flow control could permanently stall a stream.
  • Support default host name discovery by name resolvers.
  • Expose peer address for grpc_call objects.
  • Added support for different name resolvers.
  • Switched channel target strings to be URI’s instead of host:port pairs.
  • Support for automatic propagation of context from incoming server calls to outgoing client calls.
  • Removed testing fake_security credentials.
  • Support CLOCK_MONOTONIC and CLOCK_REALTIME as sources of time (and provide equivalents on Mac, Windows).
  • Reject invalid metadata on send.
  • Renamed insecure functions to include ‘insecure’ in their name.
  • Added compression support.
  • Introduced a lock free incoming request path for servers.
  • Added server-side authentication metadata processing for users to plug-in their own authentication system.
  • Removed legacy service accounts credentials for google auth. These are superseded by service account jwt access credentials which do not need explicit scopes.
  • Added SSL server credentials option to force client SSL authentication.
  • Census - Added API framework for:
  • Tracing
  • Context
  • Tagging
  • Views
  • Resource Usage
  • Aggregated Statistics


  • Various public API cleanup.
  • Added string_ref class to public API.
  • Added channel state API, server async rpc finish detection API.
  • Added server-side auth metadata processor (see core).
  • Dynamic-sized thread pool at server.
  • Added iterator for auth context.
  • Added accessors for peer address to context objects.
  • Removed legacy service accounts credentials for google auth. These are superseded by service account jwt access credentials which do not need explicit scopes.
  • Added Doxygen-style documentation to public API.
  • Added SSL server credentials option to force client SSL authentication.


  • Added beta API in grpc.beta package (early adopter API unchanged and still available in grpc.early_adopter package).
  • Future-returning asynchronous RPC invocation attribute renamed from “async” to “future”.
  • Server port specification now done in “add_insecure_port” and “add_secure_port” methods, and servers may serve on arbitrarily many ports.
  • Lifecycles for stubs may optionally be left to Python’s GC.
  • Full metadata support.
  • Full status code and details support.
  • Flow control.
  • Status code conformance with rest of gRPC.
  • Servers afford immediate shut-down semantics.
  • Tests moved from grpcio distribution to grpcio_test distribution.


  • Updated the gem file, ensuring the interop and sample binaries are stored correctly.
  • Pruned unneeded dependencies.
  • Made the logger implementation pluggable.
  • Updated server shutdown to fix bugs and improves its consistency.
  • Added a health check server.
  • Made the security explicit during channel construction.
  • Updated the secure rpc server api allow it support multiple certificates.
  • Added a context propagation API.


  • Current version is 0.6.0.
  • Added per-message compression API.
  • Added connectivity state API.
  • Exposed per-call host override option.
  • Added user agent, channel target, and call peer.


  • Current version is 0.7.0.
  • Added support for proto3.
  • Assemblies in NuGet packages are now signed.
  • Full API support for metadata (request headers, response headers, response trailers).
  • GrpcEnvironment.Initialize() and Shutdown() are now implicit and have been removed from the API.
  • Grpc.Auth now uses Google.Apis.Auth library for OAuth2 and JWT based auth. That brings full support for Application Default Credentials.
  • Added API support for deadlines.
  • Added per-message compression API.
  • Added context-propagation API.
  • Miscellaneous public API polishing (channels, servers, security etc.)
  • Stability fixes on both Linux and Windows.


  • Breaking changes:
  • SingleValueHandler and StreamHandler were shortened to SingleHandler and EventHandler respectively.
  • The way to make non-SSL connections now spells clearly that the connection is insecure, instead of just subtly implying it.
  • GRPCDelegateWrapper is now part of the Rx library (as GRXConcurrentWriteable), and independent of gRPC (or RPC systems in general).
  • GRPCMethodName is now part of the ProtoRPC library (as ProtoMethod). With this, the GRPCClient library is now completely independent of protocol buffers. For consistency with the protobuf syntax, its “interface” property is now called “service”.
  • GRXWriter is now an “abstract” class that writers have to inherit, instead of a protocol to which they have to conform. This way all writers get automatically extended with categories like transformations, or timeout. This also lets us add a helper class to simplify implementing a writer.
  • Related to headers and trailers:
    - The request and response metadata properties of a GRPCCall object don’t expose multiple values for the same header name anymore. This simplifies the usage of the common use case.
    - The “-bin” trick used to send and receive headers with binary values isn’t hidden anymore, for consistency with the other implementations of gRPC (all of which were exposing it): Now request headers with NSData values need a name ending in “-bin”, and the suffix isn’t stripped from the names of response metadata with binary values.
    - Request header names and values are now validated, and can’t be modified after an RPC is started. Not all methods of NSMutableDictionary are yet exposed again for them.
    - The dictionary of request headers can’t be set; instead it is initialized with the GRPCCall object (and can still be mutated).
    - Response headers and trailers are now different properties of the RPC object. This lets one access the response headers (e.g. using KVO) before the first response message is received, which is important for some use cases.
  • Non-breaking additions:
  • The domain and codes of NSError objects returned by the library are now part of the public API, and documented.
  • Connecting to test SSL servers is supported now.
  • New OAuth2 helpers ease setting an access token for an RPC and retrieving the challenge header if authentication failed.
  • Bazel can now be used instead of Cocoapods, if a BUILD file for OpenSSL is provided by the user.
  • When an RPC fails, the NSError object passed to the writeable now carries the response headers and trailers of the call. This simplifies error-handling code.
  • Fixes:
  • The names of the files generated by protoc have now correct casing, which is needed in Linux.
  • [GRXWriter emptyWriter] now returns a new non-started writer every time.
  • Fixed a race condition triggered when an RPC ended prematurely.
  • Stopped using a Cocoa method not supported by iOS 6.
  • Response trailers are now set.


  • Changed Server construction interface.
  • Changed server metadata handling to per-method.
  • Added per-message compression API.
  • Changed Client construction and Server port binding to require credentials objects.
  • Added Credentials.createInsecure and ServerCredentials.createInsecure to explicitly construct unsecured Clients and bind servers to unsecured ports.
  • Added grpc.waitForClientReady.
  • Added API for propagating parent call information to delegate gRPC calls on servers.
  • Changed Server#listen to Server#start.
  • Replaced Server#shutdown with asynchronous Server#tryShutdown and synchronous Server#forceShutdown.
  • Changed ServerCredentials.createSsl API to allow multiple key/cert pairs, and added a parameter.
  • Added a Metadata class, and changed all APIs to use it instead of bare objects.
Assets 3
You can’t perform that action at this time.