io.grpc
(not subpackages) were moved to a new artifact “grpc-api”, from grpc-core (#5590). This allows using the API without bringing in as many dependencies, and makes it easier for libraries to have an optional dependency on the rest of grpc. grpc-core now depends on grpc-api. Many users should be able to depend on grpc-api instead of grpc-core if they wish. grpc-core still contains the in-process transport, io.grpc.util
, and internal classes used elsewhere in grpc. Most users should still expect to have at least a transitive dependency on grpc-core.MethodDescriptor.Marshaller
NameResolverRegistry
(#5586). It is now possible to construct a NameResolverProvider
and register it into the global map manually. This is useful to inject dependencies into the name resolver.getService()
method on MethodDescriptor
(#5633)LoadBalancer.handleResolvedAddresses()
API for handling resolved addresses which includes service config explicitly (#5499). LoadBalancer.handleResolvedAddressGroups()
is deprecatedNameResolver.Args
that deprecates NameResolver.Helper
. (#5664)LoadBalancer.Helper
and Subchannel
further non-thread-safe (#5718)LoadBalancer.CreateSubchannelArgs
with custom options (#5640)ManagedChannelBuilder.loadBalancerFactory()
and all deprecated factories (#5480). Use LoadBalancerRegistry
and ManagedChannelBuilder.defaultLoadBalancingPolicy()
insteadClientStreamTracer.StreamInfo
to a final class with a builder (#5648)ForwardingClientStreamTracer
class for delegation use (#5589)StreamObserver.onNext()
is called after onCompleted()
(#5656)netty-transport-native-epoll
and epoll supported OS (linux) (#5581)Thanks to all of our contributors: