Skip to content

v0.12.0 Release

Compare
Choose a tag to compare
@ejona86 ejona86 released this 26 Jan 00:49
· 5486 commits to master since this release

General:

  • Commas are now permitted in metadata values
  • Header names are now verified to contain only permitted characters (A-Z, a-z, underscore, dash, and period)
  • Addition of {ManagedChannel,Server}Builder.directExecutor() for low-latency use cases, with specialized handling internally to remove unnecessary locking
  • Further Compression support
  • {Client,Server}Call.request() is now defined as thread-safe
  • Increased unit test code coverage
  • Bug fixes

Android:

  • Hostname verification on Android, when not providing your own SSLCertificateSocketFactory
  • OkHttpChannelBuilder.overrideHostForAuthority() is deprecated; use overrideAuthority() which is available on all ManagedChannelBuilders
  • The codegen now places codegen intended for use with JavaNano protobuf in a 'nano' subpackage by default, like JavaNano does, and also observes javanano_use_deprecated_package
  • Codegen object allocation optimization for JavaNano protobuf
  • No longer referencing internal OkHttp classes; grpc now has its own copy of such classes. This reduces grpc's dependence on a particular version of OkHttp

Servers/Datacenter:

  • A strong beginning to client-side load balancing support. No server-side portion is provided, so not widely usable at this time. Providing custom load balancers is supported via ManagedChannelBuilder.loadBalancerFactory. Expect more in this area in the future
  • A strong beginning to name resolution support, via ManagedChannel.forTarget(). Providing custom name resolvers is supported via ManagedChannelBuilder.nameResolverFactory. Currently only DNS is implemented. Expect more in this area in the future
  • Fixed potential for flow-control deadlocking when activity on one stream is based on another in Netty (#1175)
  • Fix Netty transport failing to close all calls when notified that the TCP connection dropped (#1251)

Context:

  • Context helpers for Executors: Context.wrap(Executor) and Context.propagate(Executor). The former uses the current context whereas the latter uses the current Context when Executor.execute() is called
  • Context no longer maintains a stack of attachments and now just maintains the "current". Now, attach() returns the previously-attached Context which is then required to be passed to Context.detach(). This allows naturally restoring a consistent state when applications have bugs when attached/detaching Contexts
  • During cancellation Context now notifies all its direct listeners before notifying child contexts
  • Initial support for Context on both client and server. For client, the current Context during new call creation will be the current context during callbacks. For server, a new Context is created for each incoming call and cancelled when server responds