Release 1.79.1
- grpc: Remove the
-devsuffix from the User-Agent header. (https://github.com/grpc/grpc-go/pull/8902)
Release 1.79.0
- mem: Add experimental API
SetDefaultBufferPoolto change the default buffer pool. (#8806)- Special Thanks: @vanja-p
- experimental/stats: Update
MetricsRecorderto require embedding the newUnimplementedMetricsRecorder(a no-op struct) in all implementations for forward compatibility. (#8780)
- balancer/weightedtarget: Remove handling of
Addressesand only handleEndpointsin resolver updates. (#8841)
- experimental/stats: Add support for asynchronous gauge metrics through the new
AsyncMetricReporterandRegisterAsyncReporterAPIs. (#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)
- This is enabled by default, and can be turned off using the environment variable
- xds: Implement
:authorityrewriting, as specified in gRFC A81. (#8779) - balancer/randomsubsetting: Implement the
random_subsettingLB policy, as specified in gRFC A68. (#8650)- Special Thanks: @marek-szews
- server: Include status detail headers, if available, when terminating a stream during request header processing. (#8754)
- Special Thanks: @joybestourous
- credentials/tls: Fix a bug where the port was not stripped from the authority override before validation. (#8726)
- Special Thanks: @Atul1710
- xds/priority: Fix a bug causing delayed failover to lower-priority clusters when a higher-priority cluster is stuck in
CONNECTINGstate. (#8813) - health: Fix a bug where health checks failed for clients using legacy compression options (
WithDecompressororRPCDecompressor). (#8765)- Special Thanks: @sanki92
- transport: Fix an issue where the HTTP/2 server could skip header size checks when terminating a stream early. (#8769)
- Special Thanks: @joybestourous
- credentials/alts: Optimize read buffer alignment to reduce copies. (#8791)
- mem: Optimize pooling and creation of
bufferobjects. (#8784) - transport: Reduce slice re-allocations by reserving slice capacity. (#8797)
Release 1.78.0
- client: Reject target URLs containing unbracketed colons in the hostname in Go version 1.26+. (#8716)
- Special Thanks: @neild
- 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
- transport/client : Return status code
Unknownon malformed grpc-status. (#8735) - client: Add
experimental.AcceptCompressorsso callers can restrict thegrpc-accept-encodingheader advertised for a call. (#8718)- Special Thanks: @iblancasa
- xds: Fix a bug in
StringMatcherwhere 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
OnFinishcall 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)
- mem: Round up to nearest 4KiB for pool allocations larger than 1MiB. (#8705)
- Special Thanks: @cjc25
Release 1.77.0
- mem: Replace the
Readerinterface with a struct for better performance and maintainability. (#8669)
- balancer/pickfirst: Remove support for the old
pick_firstLB policy via the environment variableGRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=false. The newpick_firsthas been the default sincev1.71.0. (#8672)
- xdsclient: Fix a race condition in the ADS stream implementation that could result in
resource-not-founderrors, causing the gRPC client channel to move toTransientFailure. (#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=falsedisables this change; please file a bug if any problems are encountered as we will remove this option soon. (#8613)
- Setting environment variable
- 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_firstbut don't set endpoints. (#8610) - mem: Clear large buffers before re-using. (#8670)
- 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)
- outlierdetection: Add metrics specified in gRFC A91. (#8644)
- Special Thanks: @davinci26, @PardhuKonakanchi
- stats/opentelemetry: Add support for optional label
grpc.lb.backend_servicein 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=trueto enable this feature. (#8536)- Special Thanks: @dimpavloff
- experimental/stats: Add support for up/down counters. (#8581)
Release 1.76.0
- Minimum supported Go version is now 1.24 (#8509)
- Special Thanks: @kevinGC
- client: Return status
INTERNALwhen a server sends zero response messages for a unary or client-streaming RPC. (#8523) - client: Fail RPCs with status
INTERNALinstead ofUNKNOWNupon receiving http headers with status 1xx andEND_STREAMflag set. (#8518)- Special Thanks: @vinothkumarr227
- pick_first: Fix race condition that could cause pick_first to get stuck in
IDLEstate on backend address change. (#8615)
- credentials: Add
credentials/jwtpackage providing file-based JWT PerRPCCredentials (A97). (#8431)- Special Thanks: @dimpavloff
- 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
Release 1.72.3
- server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (https://github.com/grpc/grpc-go/pull/8528)
Release 1.73.1
- server: Fix a regression preventing streams from being cancelled or timed out when blocked on flow control. (https://github.com/grpc/grpc-go/pull/8528)