grpc/grpc-go
 Watch   
 Star   
 Fork   
1 days ago
grpc-go

Release 1.78.0

Behavior Changes

  • client: Reject target URLs containing unbracketed colons in the hostname in Go version 1.26+. (#8716)
    • Special Thanks: @neild

New Features

  • stats/otel: Add backend service label to wrr metrics as part of A89. (#8737)
  • stats/otel: Add subchannel metrics (without the disconnection reason) to eventually replace the pickfirst metrics. (#8738)
  • client: Wait for all pending goroutines to complete when closing a graceful switch balancer. (#8746)
    • Special Thanks: @twz123

Bug Fixes

  • transport/client : Return status code Unknown on malformed grpc-status. (#8735)
  • client: Add experimental.AcceptCompressors so callers can restrict the grpc-accept-encoding header advertised for a call. (#8718)
    • Special Thanks: @iblancasa
  • xds: Fix a bug in StringMatcher where regexes would match incorrectly when ignore_case is set to true. (#8723)
  • xds/resolver:
    • Drop previous route resources and report an error when no matching virtual host is found.
    • Only log LDS/RDS configuration errors following a successful update and retain the last valid resource to prevent transient failures. (#8711)
  • client:
    • Change connectivity state to CONNECTING when creating the name resolver (as part of exiting IDLE).
    • Change connectivity state to TRANSIENT_FAILURE if name resolver creation fails (as part of exiting IDLE).
    • Change connectivity state to IDLE after idle timeout expires even when current state is TRANSIENT_FAILURE.
    • Fix a bug that resulted in OnFinish call option not being invoked for RPCs where stream creation failed. (#8710)
  • xdsclient: Fix a race in the xdsClient that could lead to resource-not-found errors. (#8627)

Performance Improvements

  • mem: Round up to nearest 4KiB for pool allocations larger than 1MiB. (#8705)
    • Special Thanks: @cjc25
27 days ago
grpc-go

protoc-gen-go-grpc v1.6.0

New Features

  • Add support for protobuf edition 2024. (#8685)
2025-11-18 07:10:58
grpc-go

Release 1.77.0

API Changes

  • mem: Replace the Reader interface with a struct for better performance and maintainability. (#8669)

Behavior Changes

  • balancer/pickfirst: Remove support for the old pick_first LB policy via the environment variable GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=false. The new pick_first has been the default since v1.71.0. (#8672)

Bug Fixes

  • xdsclient: Fix a race condition in the ADS stream implementation that could result in resource-not-found errors, causing the gRPC client channel to move to TransientFailure. (#8605)
  • client: Ignore HTTP status header for gRPC streams. (#8548)
  • client: Set a read deadline when closing a transport to prevent it from blocking indefinitely on a broken connection. (#8534)
    • Special Thanks: @jgold2-stripe
  • client: Fix a bug where default port 443 was not automatically added to addresses without a specified port when sent to a proxy.
    • Setting environment variable GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET=false disables this change; please file a bug if any problems are encountered as we will remove this option soon. (#8613)
  • balancer/pickfirst: Fix a bug where duplicate addresses were not being ignored as intended. (#8611)
  • server: Fix a bug that caused overcounting of channelz metrics for successful and failed streams. (#8573)
    • Special Thanks: @hugehoo
  • balancer/pickfirst: When configured, shuffle addresses in resolver updates that lack endpoints. Since gRPC automatically adds endpoints to resolver updates, this bug only affects custom LB policies that delegate to pick_first but don't set endpoints. (#8610)
  • mem: Clear large buffers before re-using. (#8670)

Performance Improvements

  • transport: Reduce heap allocations to reduce time spent in garbage collection. (#8624, #8630, #8639, #8668)
  • transport: Avoid copies when reading and writing Data frames. (#8657, #8667)
  • mem: Avoid clearing newly allocated buffers. (#8670)

New Features

  • outlierdetection: Add metrics specified in gRFC A91. (#8644)
    • Special Thanks: @davinci26, @PardhuKonakanchi
  • stats/opentelemetry: Add support for optional label grpc.lb.backend_service in per-call metrics (#8637)
  • xds: Add support for JWT Call Credentials as specified in gRFC A97. Set environment variable GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS=true to enable this feature. (#8536)
    • Special Thanks: @dimpavloff
  • experimental/stats: Add support for up/down counters. (#8581)
2025-10-07 04:38:31
grpc-go

Release 1.76.0

Dependencies

  • Minimum supported Go version is now 1.24 (#8509)
    • Special Thanks: @kevinGC

Bug Fixes

  • client: Return status INTERNAL when a server sends zero response messages for a unary or client-streaming RPC. (#8523)
  • client: Fail RPCs with status INTERNAL instead of UNKNOWN upon receiving http headers with status 1xx and END_STREAM flag set. (#8518)
    • Special Thanks: @vinothkumarr227
  • pick_first: Fix race condition that could cause pick_first to get stuck in IDLE state on backend address change. (#8615)

New Features

  • credentials: Add credentials/jwt package providing file-based JWT PerRPCCredentials (A97). (#8431)
    • Special Thanks: @dimpavloff

Performance Improvements

  • client: Improve HTTP/2 header size estimate to reduce re-allocations. (#8547)
  • encoding/proto: Avoid redundant message size calculation when marshaling. (#8569)
    • Special Thanks: @rs-unity
2025-09-10 17:49:59
grpc-go

Release 1.72.3

Bug Fixes

2025-09-10 17:00:30
grpc-go

Release 1.73.1

Bug Fixes

2025-09-09 23:15:47
grpc-go

Release 1.74.3

Bug Fixes

  • xds: Fix a regression preventing empty node IDs in the bootstrap configuration. (#8476 , #8483)
  • xdsclient: Fix a data race caused while reporting load to LRS. (#8483)
  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#8528)
2025-09-08 18:08:58
grpc-go

Release 1.75.1

Bug Fixes

  • transport: Fix a data race while copying headers for stats handlers in the std lib http2 server transport. (#8519)
  • xdsclient:
    • Fix a data race caused while reporting load to LRS. (#8483)
    • Fix regression preventing empty node IDs when creating an LRS client. (#8483)
  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#8528)
2025-08-20 02:25:33
grpc-go

Release 1.75.0

Behavior Changes

  • xds: Remove support for GRPC_EXPERIMENTAL_XDS_FALLBACK environment variable. Fallback support can no longer be disabled. (#8482)
  • stats: Introduce DelayedPickComplete event, a type alias of PickerUpdated. (#8465)
    • This (combined) event will now be emitted only once per call, when a transport is successfully selected for the attempt.
    • OpenTelemetry metrics will no longer have multiple "Delayed LB pick complete" events in Go, matching other gRPC languages.
    • A future release will delete the PickerUpdated symbol.
  • credentials: Properly apply grpc.WithAuthority as the highest-priority option for setting authority, above the setting in the credentials themselves. (#8488)
    • Now that this WithAuthority is available, the credentials should not be used to override the authority.
  • round_robin: Randomize the order in which addresses are connected to in order to spread out initial RPC load between clients. (#8438)
  • server: Return status code INTERNAL when a client sends more than one request in unary and server streaming RPC. (#8385)
    • This is a behavior change but also a bug fix to bring gRPC-Go in line with the gRPC spec.

New Features

  • dns: Add an environment variable (GRPC_ENABLE_TXT_SERVICE_CONFIG) to provide a way to disable TXT lookups in the DNS resolver (by setting it to false). By default, TXT lookups are enabled, as they were previously. (#8377)

Bug Fixes

  • xds: Fix regression preventing empty node IDs in xDS bootstrap configuration. (#8476)
    • Special Thanks: @davinci26
  • xds: Fix possible panic when certain invalid resources are encountered. (#8412)
    • Special Thanks: @wooffie
  • xdsclient: Fix a rare panic caused by processing a response from a closed server. (#8389)
  • stats: Fix metric unit formatting by enclosing non-standard units like call and endpoint in curly braces to comply with UCUM and gRPC OpenTelemetry guidelines. (#8481)
  • xds: Fix possible panic when clusters are removed from the xds configuration. (#8428)
  • xdsclient: Fix a race causing "resource doesn not exist" when rapidly subscribing and unsubscribing to the same resource. (#8369)
  • client: When determining the authority, properly percent-encode (if needed, which is unlikely) when the target string omits the hostname and only specifies a port (grpc.NewClient(":<port-number-or-name>")). (#8488)
2025-07-23 02:22:00
grpc-go

Release 1.74.2

API Changes

  • balancer: add ExitIdle method to Balancer interface. Earlier, implementing this method was optional. (#8367)

Behavior Changes

  • xds: Remove the GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST environment variable that allows disabling the least request balancer with xDS. Least request was made available by default with xDS in v1.72.0. (#8248)
    • Special Thanks: @atollena
  • server: allow 0s grpc-timeout header values, which older gRPC-Java versions could send. This restores the behavior of grpc-go before v1.73.0. (#8439)

Bug Fixes

  • googledirectpath: avoid logging the error message Attempt to set a bootstrap configuration... when creating multiple directpath channels. (#8419)

Performance Improvements

  • transport: reduce heap allocations by pooling objects and avoiding method-to-closure conversions. (#8361)
  • transport: reduce heap allocations by re-using mem.Reader objects. (#8360)

Documentation

  • examples: add examples to demonstrate enabling experimental metrics using the OpenTelemetry plugin. (#8388)
    • Special Thanks: @vinothkumarr227