Releases: grpc/grpc-go
Releases · grpc/grpc-go
Release 1.66.0
New Features
- metadata: stabilize
ValueFromIncomingContext(#7368)- Special Thanks: @KarthikReddyPuli
- client: stabilize the
WaitForStateChangeandGetStatemethods, which were previously experimental. (#7425) - xds: Implement ADS flow control mechanism (#7458)
- See grpc/grpc#34099 for context.
- balancer/rls: Add metrics for data cache and picker internals (#7484, #7495)
- xds: LRS load reports now include the
total_issued_requestsfield. (#7544)
Bug Fixes
- grpc: Clients now return status code INTERNAL instead of UNIMPLEMENTED when the server uses an unsupported compressor. This is consistent with the gRPC compression spec. (#7461)
- Special Thanks: @Gayathri625
- transport: Fix a bug which could result in writes busy looping when the underlying
conn.Writereturns errors (#7394)- Special Thanks: @veshij
- client: fix race that could lead to orphaned connections and associated resources. (#7390)
- xds: use locality from the connected address for load reporting with pick_first (#7378)
- without this fix, if a priority contains multiple localities with pick_first, load was reported for the wrong locality
- client: prevent hanging during ClientConn.Close() when the network is unreachable (#7540)
Performance Improvements
- transport: double buffering is avoided when using an http connect proxy and the target server waits for client to send the first message. (#7424)
- codec: Implement a new
Codecwhich uses buffer recycling for encoded message (#7356)- introduce a
mempackage to facilitate buffer reuse (#7432) - Special Thanks: @PapaCharlie
- introduce a
protoc-gen-go-grpc v1.5.1
Dependencies
- Removed
replacedirective (needed only for testing), since it is incompatible withgo install(#7451).
protoc-gen-go-grpc v1.5.0
Security
- The generated function
Register<Service>Servernow panics if theUnimplemented<Service>Serverstruct 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 theUnimplementedstruct for their service, and to regenerate their proto files to confirm. (#7438)- Note: "Proper embedding" of the
Unimplementedstruct means either embedding the struct by value (preferred) or ensuring it is always initialized to a valid pointer. E.g.
- Note: "Proper embedding" of the
struct MyServiceImpl {
pb.UnimplementedMyServiceServer // embedded by value, not pointer
// .. other struct fields ..
}New Features
- Generated code for services will produce streaming method definitions using one of six different generic types (e.g.
BidiStreamingServerorClientStreamingClient) instead of producing complete interfaces and implementations for the streaming methods. This can be disabled by settinguse_generic_streams_experimental=false. Please file a bug if you encounter any issues with this behavior. (#7387)
Bug Fixes
- A period (.) is added to the end of the service interface doc comment to comply with Godoc. (#7392)
Release 1.65.0
Dependencies
- Change support policy to cover only the latest TWO releases of Go, matching the policy for Go itself. See #7249 for more information. (#7250)
- Update x/net/http2 to address CVE-2023-45288 (#7282)
Behavior Changes
- credentials/tls: clients and servers will now reject connections that don't support ALPN when environment variable
GRPC_ENFORCE_ALPN_ENABLEDis set to "true" (case insensitive). (#7184)- NOTE: this behavior will become the default in a future release.
- metadata: remove String method from MD to make printing more consistent (#7373)
New Features
- grpc: add
WithMaxCallAttemptsto configure gRPC's retry behavior per-channel. (#7229)- Special Thanks: @imoore76
Bug Fixes
Release 1.64.1
Dependencies
- Update x/net/http2 to address CVE-2023-45288 (#7352)
- metadata: remove String method from MD to make printing consistent (#7374)
Release 1.63.3
Dependencies
- Update x/net/http2 to address CVE-2023-45288 (#7352)
advancedtls 1.0.0
Background
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.
Incompatible changes from experimental APIs
See #7303 for the APIs that have been removed from previous experimental versions of the package.
protoc-gen-go-grpc v1.4.0
New Features
- Add an optional implementation of streams using generics (Experimental) (#7057)
- The new
use_generic_stream_experimental=trueoption 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. - Special Thanks: @aarongable
- The new
- Copy service comments to interfaces in generated code (#7243)
- Special Thanks: @silves-xiang
- Generated code includes static method gRPC call options for integration with the upcoming OpenTelemetry metrics support (#6960)
Dependencies
- Update
google.golang.org/protobufdependency to v1.34.1 to address CVE-2024-24786 (#7274)
Release 1.64.0
API Changes
- stats: Deprecate
InPayload.DataandOutPayload.Data; they were experimental and will be deleted in the next release (#7121)
Behavior Changes
- codec: Remove handling of environment variable
GRPC_GO_ADVERTISE_COMPRESSORSto suppress setting supported compressors ingrpc-accept-encodingheader. Compressors will always be advertised, as they have been by default for some time (#7203)
New Features
- resolver/dns: Add
SetMinResolutionIntervalto set the minimum interval at which DNS re-resolutions may occur (#6962)- Special Thanks: @HomayoonAlimohammadi
- peer/peer: Implement the
fmt.Stringerinterface for pretty printingPeer, and - metadata/metadata: Implement the
fmt.Stringerinterface for pretty printingMD(#7137)- Special Thanks: @AnomalRoil
Performance Improvements
- client: Improve RPC performance by reducing work while holding a lock (#7132)
Bug Fixes
- transport/server: Display the proper timeout value when keepalive pings are not ack'd in time (#7038)
- Special Thanks: @BatmanAoD
- channelz: Fix bug that was causing the subchannel's target to be unset (#7189)
- stats: Fix bug where peer was not set in context when calling stats handler for
OutPayload,InPayload, andEnd(#7096)
Dependencies
- deps: Remove dependency on deprecated
github.com/golang/protobufmodule (#7122)
Documentation
- grpc: Deprecate
WithBlock,WithReturnConnectionError,FailOnNonTempDialErrorwhich are ignored byNewClient(#7097)- Special Thanks: @pellared
- grpc: Deprecate
DialandDialContext. These will continue to be supported throughout 1.x, but are deprecated to direct users toNewClient(See #7090 for more information) - examples: Add custom lb example (#6691)
Release 1.63.2
Bugs
- Fix the user agent string