Behavior Changes
- balancer/rls: Switch gauge metrics to asynchronous emission (once per collection cycle) to reduce telemetry noise and align with other gRPC language implementations. (#8808)
Dependencies
- Minimum supported Go version is now 1.25. (#8969)
Bug Fixes
- 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)
New Features
- 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
Performance Improvements
- 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)