New Features
- grpc: Add StaticMethod CallOption as a signal to stats handler that a method is safe to use as an instrument key (#6986)
Behavior Changes
- grpc: Return canonical target string from ClientConn.Target() and resolver.Address.String() (#6923)
Bug Fixes
- server: wait to close connection until incoming socket is drained (with timeout) to prevent data loss on client-side (#6977)
- Special Thanks: @s-matyukevich for discovering the root cause
Performance Improvements
- *: Allow building without
x/net/trace
by usinggrpcnotrace
to enable dead code elimination (#6954)- Special Thanks: @hugelgupf
- rand: improve performance and simplify implementation of
grpcrand
by adoptingmath/rand
's top-level functions for go version 1.21.0 and newer. (#6925)- Special Thanks: @kmirzavaziri
Dependencies
- *: Use google.golang.org/protobuf/proto instead of github.com/golang/protobuf. (#6919)
- Special Thanks: @Clement-Jean
Note
The above change in proto library usage introduces a minor behavior change within those libraries. The old github.com/golang/protobuf
library would error if given a nil
message to Marshal
, while the new google.golang.org/protobuf
library will successfully output zero bytes in this case. This means server method handlers that did return nil, nil
will now return an empty message and no error, while it used to return an error. This also affects the client side, where clients sending nil
messages used to fail without sending the RPC, and now they will send an empty message.