The Go language implementation of gRPC. HTTP/2 based RPC
APACHE-2.0 License
Bot releases are hidden (Show)
ValueFromIncomingContext
(#7368)
WaitForStateChange
and GetState
methods, which were previously experimental. (#7425)total_issued_requests
field. (#7544)conn.Write
returns errors (#7394)
Codec
which uses buffer recycling for encoded message (#7356)
mem
package to facilitate buffer reuse (#7432)Published by dfawley 3 months ago
replace
directive (needed only for testing), since it is incompatible with go install
(#7451).Published by arjan-bal 3 months ago
Register<Service>Server
now panics if the Unimplemented<Service>Server
struct is embedded in a way that would otherwise lead to runtime panics if an unimplemented method was called. Users are advised to ensure they are properly embedding the Unimplemented
struct for their service, and to regenerate their proto files to confirm. (#7438)
Unimplemented
struct means either embedding the struct by value (preferred) or ensuring it is always initialized to a valid pointer. E.g.struct MyServiceImpl {
pb.UnimplementedMyServiceServer // embedded by value, not pointer
// .. other struct fields ..
}
BidiStreamingServer
or ClientStreamingClient
) instead of producing complete interfaces and implementations for the streaming methods. This can be disabled by setting use_generic_streams_experimental=false
. Please file a bug if you encounter any issues with this behavior. (#7387)Published by arvindbr8 4 months ago
Published by arvindbr8 4 months ago
Published by arvindbr8 4 months ago
GRPC_ENFORCE_ALPN_ENABLED
is set to "true" (case insensitive). (#7184)
WithMaxCallAttempts
to configure gRPC's retry behavior per-channel. (#7229)
Published by gtcooke94 4 months ago
This is the first major release of the advancedtls
package for configuring advanced security features in grpc-go. This has previously been an experimental API.
See #7303 for the APIs that have been removed from previous experimental versions of the package.
Published by arvindbr8 5 months ago
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)Published by arvindbr8 5 months ago
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)Published by ginayeh 6 months ago
Published by ginayeh 6 months ago
Published by arvindbr8 7 months ago
Published by arvindbr8 7 months ago
Published by zasweq 7 months ago
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)
Published by arvindbr8 8 months ago
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
Published by dfawley 8 months ago
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.
Published by ginayeh 8 months ago
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 oldgithub.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.
Published by dfawley 8 months ago
Published by zasweq 9 months ago
AuthorityOverrider
, to allow resolver.Builders to override the default authority for a ClientConn
. (EXPERIMENTAL) (#6752)
grpc.WaitForHandlers
ServerOption
to cause Server.Stop
to block until method handlers return. (EXPERIMENTAL) (#6922)UNAVAILABLE
instead of UNKNOWN
when underlying connection is broken (#6891)
GracefulStop
to block until all method handlers return (v1.60 regression). (#6922)NumStreamWorkers
(EXPERIMENTAL). (#6856)Published by zasweq 10 months ago