The Go language implementation of gRPC. HTTP/2 based RPC
use_generic_stream_experimental=true
option will cause the gRPC codegen to use prebuilt generic types to implement client and server stream objects, rather than generating new types and implementations for every RPC method. We intend to transition this to the default behavior in the next release. Please test it and provide any feedback.google.golang.org/protobuf
dependency to v1.34.1 to address CVE-2024-24786 (#7274)InPayload.Data
and OutPayload.Data
; they were experimental and will be deleted in the next release (#7121)GRPC_GO_ADVERTISE_COMPRESSORS
to suppress setting supported compressors in grpc-accept-encoding
header. Compressors will always be advertised, as they have been by default for some time (#7203)SetMinResolutionInterval
to set the minimum interval at which DNS re-resolutions may occur (#6962)
fmt.Stringer
interface for pretty printing Peer
, andfmt.Stringer
interface for pretty printing MD
(#7137)
OutPayload
, InPayload
, and End
(#7096)github.com/golang/protobuf
module (#7122)WithBlock
, WithReturnConnectionError
, FailOnNonTempDialError
which are ignored by NewClient
(#7097)
Dial
and DialContext
. These will continue to be supported throughout 1.x, but are deprecated to direct users to NewClient
(See #7090 for more information)resolver.Address.String()
(experimental) (#6923)ClientConn.CanonicalTarget()
to return the canonical target string. (#7006)grpc.NewClient
to allow users to create new clients in idle mode and with "dns" as the default resolver (#7010)
ClientConn.Target()
(#7006)grpc.Server
as an http.Handler
with the Go stdlib HTTP server (#6989)SetResolvingTimeout
to allow configuring the DNS resolver's global timeout (#6917)
no matching virtual host found
RPC errors due to a difference between the target and LDS resource names (#6997)InPayload.Length
for unary RPC calls (#6766)
RecvBufferPool
DialOption
and ServerOption
are now active during unary RPCs with compression (#6766)
accept-encoding
header before determining compressors
The latest released version of stackdriver depends upon an unstable version of prometheus. Symbols needed by stackdriver were moved inside of prometheus after this release. To address this, this release updates our dependencies to use an unreleased version of stackdriver (which is archived) that removed its dependency on prometheus entirely. Please see https://github.com/grpc/grpc-go/pull/7008 for more details.
x/net/trace
by using grpcnotrace
to enable dead code elimination (#6954)
grpcrand
by adopting math/rand
's top-level functions for go version 1.21.0 and newer. (#6925)
[!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 anil
message toMarshal
, while the newgoogle.golang.org/protobuf
library will successfully output zero bytes in this case. This means server method handlers that didreturn 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 sendingnil
messages used to fail without sending the RPC, and now they will send an empty message.