Skip to content

Releases: grpc/grpc-go

Release 1.79.2

06 Mar 06:17
8902ab6

Choose a tag to compare

Bug Fixes

  • stats: Prevent redundant error logging in health/ORCA producers by skipping stats/tracing processing when no stats handler is configured. (#8874)

Release 1.79.1

13 Feb 06:58
782f2de

Choose a tag to compare

Bug Fixes

  • grpc: Remove the -dev suffix from the User-Agent header. (#8902)

Release 1.79.0

12 Feb 15:05
68804be

Choose a tag to compare

API Changes

  • mem: Add experimental API SetDefaultBufferPool to change the default buffer pool. (#8806)
  • experimental/stats: Update MetricsRecorder to require embedding the new UnimplementedMetricsRecorder (a no-op struct) in all implementations for forward compatibility. (#8780)

Behavior Changes

  • balancer/weightedtarget: Remove handling of Addresses and only handle Endpoints in resolver updates. (#8841)

New Features

  • experimental/stats: Add support for asynchronous gauge metrics through the new AsyncMetricReporter and RegisterAsyncReporter APIs. (#8780)
  • pickfirst: Add support for weighted random shuffling of endpoints, as described in gRFC A113.
    • This is enabled by default, and can be turned off using the environment variable GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING. (#8864)
  • xds: Implement :authority rewriting, as specified in gRFC A81. (#8779)
  • balancer/randomsubsetting: Implement the random_subsetting LB policy, as specified in gRFC A68. (#8650)

Bug Fixes

  • credentials/tls: Fix a bug where the port was not stripped from the authority override before validation. (#8726)
  • xds/priority: Fix a bug causing delayed failover to lower-priority clusters when a higher-priority cluster is stuck in CONNECTING state. (#8813)
  • health: Fix a bug where health checks failed for clients using legacy compression options (WithDecompressor or RPCDecompressor). (#8765)
  • transport: Fix an issue where the HTTP/2 server could skip header size checks when terminating a stream early. (#8769)
  • server: Propagate status detail headers, if available, when terminating a stream during request header processing. (#8754)

Performance Improvements

  • credentials/alts: Optimize read buffer alignment to reduce copies. (#8791)
  • mem: Optimize pooling and creation of buffer objects. (#8784)
  • transport: Reduce slice re-allocations by reserving slice capacity. (#8797)

protoc-gen-go-grpc v1.6.1

04 Feb 10:31
830c909

Choose a tag to compare

Bug Fixes

  • Upgrade protobuf dependency to v1.36.11 to fix missing go_package errors for Editions feature protos (e.g. cpp_features.proto). (#8853)

Release 1.78.0

23 Dec 09:25
9df039e

Choose a tag to compare

Behavior Changes

  • client: Align URL validation with Go 1.26+ to now reject target URLs with unbracketed colons in the hostname. (#8716)
  • transport/client : Return status code Unknown on malformed grpc-status. (#8735)
    • 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)

New Features

  • stats/otel: Add backend service label to weighted round robin 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)
  • client: Add experimental.AcceptCompressors so callers can restrict the grpc-accept-encoding header advertised for a call. (#8718)

Bug Fixes

  • xds: Fix a bug in StringMatcher where regexes would match incorrectly when ignore_case is set to true. (#8723)
  • 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)

protoc-gen-go-grpc v1.6.0

27 Nov 08:27
749af0c

Choose a tag to compare

New Features

  • Add support for protobuf edition 2024. (#8685)

Release 1.77.0

17 Nov 23:11
805b1f8

Choose a tag to compare

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)
  • 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)
  • 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)
  • 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)
  • experimental/stats: Add support for up/down counters. (#8581)

Release 1.76.0

06 Oct 20:38
d96c2ef

Choose a tag to compare

Dependencies

  • Minimum supported Go version is now 1.24 (#8509)

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)
  • 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)

Performance Improvements

  • client: Improve HTTP/2 header size estimate to reduce re-allocations. (#8547)
  • encoding/proto: Avoid redundant message size calculation when marshaling. (#8569)

Release 1.73.1

10 Sep 09:00
a78a08d

Choose a tag to compare

Bug Fixes

  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#8528)

Release 1.72.3

10 Sep 09:50
7127ac2

Choose a tag to compare

Bug Fixes

  • server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (#8528)