grpc-go

The Go language implementation of gRPC. HTTP/2 based RPC

APACHE-2.0 License

Downloads
398
Stars
20.7K
Committers
465

Bot releases are hidden (Show)

grpc-go - Release 1.66.0 Latest Release

Published by arjan-bal about 2 months ago

New Features

  • metadata: stabilize ValueFromIncomingContext (#7368)
    • Special Thanks: @KarthikReddyPuli
  • client: stabilize the WaitForStateChange and GetState methods, which were previously experimental. (#7425)
  • xds: Implement ADS flow control mechanism (#7458)
  • balancer/rls: Add metrics for data cache and picker internals (#7484, #7495)
  • xds: LRS load reports now include the total_issued_requests field. (#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.Write returns 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 Codec which uses buffer recycling for encoded message (#7356)
    • introduce a mem package to facilitate buffer reuse (#7432)
    • Special Thanks: @PapaCharlie
grpc-go - protoc-gen-go-grpc v1.5.1

Published by dfawley 3 months ago

Dependencies

  • Removed replace directive (needed only for testing), since it is incompatible with go install (#7451).
grpc-go - protoc-gen-go-grpc v1.5.0

Published by arjan-bal 3 months ago

Security

  • The generated function 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)
    • Note: "Proper embedding" of the 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 ..
}

New Features

  • Generated code for services will produce streaming method definitions using one of six different generic types (e.g. 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)

Bug Fixes

  • A period (.) is added to the end of the service interface doc comment to comply with Godoc. (#7392)
grpc-go - Release 1.63.3

Published by arvindbr8 4 months ago

Dependencies

grpc-go - Release 1.64.1

Published by arvindbr8 4 months ago

Dependencies

  • Update x/net/http2 to address CVE-2023-45288 (#7352)
  • metadata: remove String method from MD to make printing consistent (#7374)
grpc-go - Release 1.65.0

Published by arvindbr8 4 months ago

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_ENABLED is 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 WithMaxCallAttempts to configure gRPC's retry behavior per-channel. (#7229)
    • Special Thanks: @imoore76

Bug Fixes

  • ringhash: properly apply endpoint weights instead of ignoring them (#7156)
  • xds: fix a bug that could cause xds-enabled servers to stop accepting new connections after handshaking errors (#7128)
    • Special Thanks: @bozaro
grpc-go - advancedtls 1.0.0

Published by gtcooke94 4 months ago

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.

grpc-go - protoc-gen-go-grpc v1.4.0

Published by arvindbr8 5 months ago

New Features

  • Add an optional implementation of streams using generics (Experimental) (#7057)
    • The new 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.
    • Special Thanks: @aarongable
  • 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

grpc-go - Release 1.64.0

Published by arvindbr8 5 months ago

API Changes

  • stats: Deprecate InPayload.Data and OutPayload.Data; they were experimental and will be deleted in the next release (#7121)

Behavior Changes

  • codec: Remove handling of environment variable 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)

New Features

  • resolver/dns: Add SetMinResolutionInterval to set the minimum interval at which DNS re-resolutions may occur (#6962)
    • Special Thanks: @HomayoonAlimohammadi
  • peer/peer: Implement the fmt.Stringer interface for pretty printing Peer, and
  • metadata/metadata: Implement the fmt.Stringer interface for pretty printing MD (#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, and End (#7096)

Dependencies

  • deps: Remove dependency on deprecated github.com/golang/protobuf module (#7122)

Documentation

  • grpc: Deprecate WithBlock, WithReturnConnectionError, FailOnNonTempDialError which are ignored by NewClient (#7097)
    • Special Thanks: @pellared
  • grpc: Deprecate 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)
  • examples: Add custom lb example (#6691)
grpc-go - Release 1.63.2

Published by ginayeh 6 months ago

Bugs

  • Fix the user agent string
grpc-go - Release 1.63.1

Published by ginayeh 6 months ago

Bugs

  • grpc: fixed subchannel log messages to properly reference the parent channel (#7101)
    • Special thanks: @daniel-weisse

API Changes

  • grpc: remove Deprecated tag from Dial and DialContext; these will be deprecated in v1.64 instead (#7103)
grpc-go - Release 1.61.2

Published by arvindbr8 7 months ago

Dependencies

grpc-go - Release 1.62.2

Published by arvindbr8 7 months ago

Dependencies

grpc-go - Release 1.63.0

Published by zasweq 7 months ago

Behavior Changes

  • grpc: Return canonical target string from resolver.Address.String() (experimental) (#6923)
  • client & server: when using write buffer pooling, use input value for buffer size instead of size*2 (#6983)
    • Special Thanks: @raghav-stripe

New Features

  • grpc: add ClientConn.CanonicalTarget() to return the canonical target string. (#7006)
  • xds: implement LRS named metrics support (gRFC A64) (#7027)
    • Special Thanks: @danielzhaotongliu
  • grpc: introduce grpc.NewClient to allow users to create new clients in idle mode and with "dns" as the default resolver (#7010)
    • Special Thanks: @bruuuuuuuce

API Changes

  • grpc: stabilize experimental method ClientConn.Target() (#7006)

Bug Fixes

  • xds: fix an issue that would cause the client to send an empty list of resources for LDS/CDS upon reconnecting with the management server (#7026)
  • server: Fix some errors returned by a server when using a grpc.Server as an http.Handler with the Go stdlib HTTP server (#6989)
  • resolver/dns: add SetResolvingTimeout to allow configuring the DNS resolver's global timeout (#6917)
    • Special Thanks: @and1truong
  • Set the security level of Windows named pipes to NoSecurity (#6956)
    • Special Thanks: @irsl
grpc-go - Release 1.62.1

Published by arvindbr8 8 months ago

Bug Fixes

  • xds: fix a bug that results in no matching virtual host found RPC errors due to a difference between the target and LDS resource names (#6997)
  • server: fixed stats handler data InPayload.Length for unary RPC calls (#6766)
    • Special Thanks: @hueypark
  • grpc: the experimental RecvBufferPool DialOption and ServerOption are now active during unary RPCs with compression (#6766)
    • Special Thanks: @hueypark
  • grpc: trim whitespaces in accept-encoding header before determining compressors
    • Special Thanks: @sercand
grpc-go - GCP Observability v1.0.1

Published by dfawley 8 months ago

Update dependencies

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.

grpc-go - Release 1.62.0

Published by ginayeh 8 months ago

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 using grpcnotrace to enable dead code elimination (#6954)
    • Special Thanks: @hugelgupf
  • rand: improve performance and simplify implementation of grpcrand by adopting math/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.

grpc-go - Release 1.61.1

Published by dfawley 8 months ago

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
grpc-go - Release 1.61.0

Published by zasweq 9 months ago

New Features

  • resolver: provide method, AuthorityOverrider, to allow resolver.Builders to override the default authority for a ClientConn. (EXPERIMENTAL) (#6752)
    • Special Thanks: @Aditya-Sood
  • xds: add support for mTLS Credentials in xDS bootstrap (gRFC A65) (#6757)
    • Special Thanks: @atollena
  • server: add grpc.WaitForHandlers ServerOption to cause Server.Stop to block until method handlers return. (EXPERIMENTAL) (#6922)

Performance Improvements

  • grpc: skip compression of empty messages as an optimization (#6842)
    • Special Thanks: @jroper
  • orca: use atomic pointer to improve performance in server metrics recorder (#6799)
    • Special Thanks: @danielzhaotongliu

Bug Fixes

  • client: correctly enable TCP keepalives with OS defaults on windows (#6863)
    • Special Thanks: @mmatczuk
  • server: change some stream operations to return UNAVAILABLE instead of UNKNOWN when underlying connection is broken (#6891)
    • Special Thanks: @mustafasen81
  • server: fix GracefulStop to block until all method handlers return (v1.60 regression). (#6922)
  • server: fix two bugs that could lead to panics at shutdown when using NumStreamWorkers (EXPERIMENTAL). (#6856)
  • reflection: do not send invalid descriptors to clients for files that cannot be fully resolved (#6771)
    • Special Thanks: @jhump
  • xds: don't fail channel/server startup when xds creds is specified, but bootstrap is missing certificate providers (#6848)
  • xds: Atomically read and write xDS security configuration client side (#6796)
  • xds/server: fix RDS handling for non-inline route configs (#6915)
grpc-go - Release v1.60.1

Published by zasweq 10 months ago

Bug Fixes

  • server: fix two bugs that could lead to panics at shutdown when using NumStreamWorkers (experimental feature).