Release 1.81.1
- xds/rbac: Fix a potential authorization bypass caused by incorrectly falling through URI/DNS SANs to Subject Distinguished Name (DN) when matching the authenticated principal name. With this fix, only the first non-empty identity source will be used, as per gRFC A41. (#9111)
- Special Thanks: @al4an444
- otel: Segregate client and server RPC information used for metrics and traces, to avoid one overwriting the other. (#9081)
Release 1.81.0
- balancer/rls: Switch gauge metrics to asynchronous emission (once per collection cycle) to reduce telemetry noise and align with other gRPC language implementations. (#8808)
- Minimum supported Go version is now 1.25. (#8969)
- xds: Use the leaf cluster's security config for the TLS handshake instead of the aggregate cluster's config. (#8956)
- transport: Send a
RST_STREAMwhen receiving anEND_STREAMwhen the stream is not already half-closed. (#8832) - xds: Fix ADS resource name validation to prevent a panic. (#8970)
- grpc/stats: Add support for custom labels in per-call metrics (gRFC A108). (#9008)
- xds: Add support for Server Name Indication (SNI) and SAN validation (gRFC A101). Disabled by default. To enable, set
GRPC_EXPERIMENTAL_XDS_SNI=trueenvironment variable. (#9016) - xds: Add support to control which fields get propagated from ORCA backend metric reports to LRS load reports (gRFC A85). Disabled by default. To enable, set
GRPC_EXPERIMENTAL_XDS_ORCA_LRS_PROPAGATION=true. (#9005) - xds: Add metrics to track xDS client connectivity and cached resource state (gRFC A78). (#8807)
- stats/otel: Enhance
grpc.subchannel.disconnectionsmetric by adding disconnection reason to thegrpc.disconnect_errorlabel (gRFC A94). This provides granular insights into why subchannels are closing. (#8973) - mem: Add
mem.Buffer.Slice()API to slice the buffer like a slice. (#8977)- Special Thanks: @ash2k
- alts: Pool read buffers to lower memory utilization when sockets are unreadable. (#8964)
- transport: Pool HTTP/2 framer read buffers to reduce idle memory consumption. Currently limited to Linux for ALTS and non-encrypted transports (TCP, Unix). To disable, set
GRPC_GO_EXPERIMENTAL_HTTP_FRAMER_READ_BUFFER_POOLING=falseand report any issues. (#9032)
Release 1.80.0
- balancer: log a warning if a balancer is registered with uppercase letters, as balancer names should be lowercase. In a future release, balancer names will be treated as case-insensitive; see #5288 for details. (#8837)
- xds: update resource error handling and re-resolution logic (#8907)
- Re-resolve all
LOGICAL_DNSclusters simultaneously when re-resolution is requested. - Fail all in-flight RPCs immediately upon receipt of listener or route resource errors, instead of allowing them to complete.
- Re-resolve all
- xds: support the LB policy configured in
LOGICAL_DNScluster resources instead of defaulting topick_first. (#8733) - credentials/tls: perform per-RPC authority validation against the leaf certificate instead of the entire peer certificate chain. (#8831)
- xds: enabling A76 ring hash endpoint keys no longer causes EDS resources with invalid proxy metadata to be NACKed when HTTP CONNECT (gRFC A86) is disabled. (#8875)
- xds: validate that the sum of endpoint weights in a locality does not exceed the maximum
uint32value. (#8899)- Special Thanks: @RAVEYUS
- xds: fix incorrect proto field access in the weighted round robin (WRR) configuration where
blackout_periodwas used instead ofweight_expiration_period. (#8915)- Special Thanks: @gregbarasch
- xds/rbac: handle addresses with ports in IP matchers. (#8990)
- ringhash: enable gRFC A76 (endpoint hash keys and request hash headers) by default. (#8922)
- credentials/alts: pool write buffers to reduce memory allocations and usage. (#8919)
- grpc: enable the use of pooled write buffers for buffering HTTP/2 frame writes by default. This reduces memory usage when connections are idle. Use the WithSharedWriteBuffer dial option or the SharedWriteBuffer server option to disable this feature. (#8957)
- xds/priority: stop caching child LB policies removed from the configuration. This will help reduce memory and cpu usage when localities are constantly switching between priorities. (#8997)
- mem: add a faster tiered buffer pool; use the experimental mem.NewBinaryTieredBufferPool function to create such pools. (#8775)
Release 1.79.2
- stats: Prevent redundant error logging in health/ORCA producers by skipping stats/tracing processing when no stats handler is configured. (https://github.com/grpc/grpc-go/pull/8874)
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