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