grpc 1.71.0 → 1.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1444) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +96 -76
  3. data/include/grpc/event_engine/event_engine.h +125 -8
  4. data/include/grpc/event_engine/internal/write_event.h +34 -0
  5. data/include/grpc/event_engine/memory_request.h +3 -3
  6. data/include/grpc/impl/channel_arg_names.h +80 -52
  7. data/include/grpc/impl/compression_types.h +3 -2
  8. data/include/grpc/impl/slice_type.h +1 -1
  9. data/include/grpc/support/json.h +3 -21
  10. data/include/grpc/support/port_platform.h +8 -5
  11. data/include/grpc/support/workaround_list.h +1 -4
  12. data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
  13. data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
  14. data/src/core/{lib/transport → call}/call_destination.h +4 -4
  15. data/src/core/{lib/transport → call}/call_filters.cc +2 -2
  16. data/src/core/{lib/transport → call}/call_filters.h +53 -25
  17. data/src/core/{lib/channel → call}/call_finalization.h +3 -3
  18. data/src/core/{lib/transport → call}/call_spine.cc +1 -1
  19. data/src/core/{lib/transport → call}/call_spine.h +70 -26
  20. data/src/core/{lib/transport → call}/call_state.cc +1 -1
  21. data/src/core/{lib/transport → call}/call_state.h +3 -3
  22. data/src/core/{lib/surface → call}/client_call.cc +9 -7
  23. data/src/core/{lib/surface → call}/client_call.h +4 -4
  24. data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
  25. data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
  26. data/src/core/{lib/transport → call}/interception_chain.h +7 -7
  27. data/src/core/{lib/transport → call}/message.cc +1 -1
  28. data/src/core/{lib/transport → call}/message.h +7 -3
  29. data/src/core/{lib/transport → call}/metadata.cc +2 -2
  30. data/src/core/{lib/transport → call}/metadata.h +21 -4
  31. data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
  32. data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
  33. data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
  34. data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
  35. data/src/core/{lib/transport → call}/metadata_info.h +4 -4
  36. data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
  37. data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
  38. data/src/core/call/request_buffer.h +3 -3
  39. data/src/core/call/security_context.cc +125 -0
  40. data/src/core/call/security_context.h +114 -0
  41. data/src/core/{lib/surface → call}/server_call.cc +3 -3
  42. data/src/core/{lib/surface → call}/server_call.h +5 -5
  43. data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
  44. data/src/core/{lib/channel → call}/status_util.cc +1 -1
  45. data/src/core/{lib/channel → call}/status_util.h +3 -3
  46. data/src/core/channelz/channel_trace.cc +50 -42
  47. data/src/core/channelz/channel_trace.h +35 -4
  48. data/src/core/channelz/channelz.cc +338 -125
  49. data/src/core/channelz/channelz.h +276 -34
  50. data/src/core/channelz/channelz_registry.cc +322 -117
  51. data/src/core/channelz/channelz_registry.h +179 -21
  52. data/src/core/channelz/ztrace_collector.h +315 -0
  53. data/src/core/client_channel/client_channel.cc +54 -45
  54. data/src/core/client_channel/client_channel.h +4 -3
  55. data/src/core/client_channel/client_channel_filter.cc +31 -40
  56. data/src/core/client_channel/client_channel_filter.h +1 -3
  57. data/src/core/client_channel/client_channel_internal.h +1 -1
  58. data/src/core/client_channel/config_selector.h +2 -2
  59. data/src/core/client_channel/connector.h +0 -3
  60. data/src/core/client_channel/direct_channel.cc +2 -2
  61. data/src/core/client_channel/dynamic_filters.cc +0 -1
  62. data/src/core/client_channel/dynamic_filters.h +0 -1
  63. data/src/core/client_channel/global_subchannel_pool.cc +68 -7
  64. data/src/core/client_channel/global_subchannel_pool.h +37 -4
  65. data/src/core/client_channel/lb_metadata.h +1 -1
  66. data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
  67. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  68. data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
  69. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
  70. data/src/core/client_channel/retry_interceptor.h +1 -1
  71. data/src/core/client_channel/retry_service_config.cc +1 -1
  72. data/src/core/client_channel/retry_service_config.h +1 -1
  73. data/src/core/client_channel/retry_throttle.cc +30 -34
  74. data/src/core/client_channel/retry_throttle.h +10 -2
  75. data/src/core/client_channel/subchannel.cc +14 -17
  76. data/src/core/client_channel/subchannel.h +3 -10
  77. data/src/core/client_channel/subchannel_pool_interface.cc +5 -6
  78. data/src/core/client_channel/subchannel_pool_interface.h +11 -1
  79. data/src/core/client_channel/subchannel_stream_client.cc +14 -11
  80. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  81. data/src/core/config/config_vars.cc +11 -1
  82. data/src/core/config/config_vars.h +8 -0
  83. data/src/core/config/core_configuration.cc +50 -11
  84. data/src/core/config/core_configuration.h +91 -9
  85. data/src/core/credentials/call/call_credentials.h +157 -0
  86. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
  87. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
  88. data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
  89. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  90. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
  91. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
  92. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +4 -3
  93. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
  94. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
  95. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
  96. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
  97. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
  98. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +5 -4
  99. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
  100. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +4 -3
  101. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
  102. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
  103. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
  104. data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
  105. data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
  106. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
  107. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
  108. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
  109. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
  110. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +7 -6
  111. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
  112. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +8 -5
  113. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
  114. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
  115. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
  116. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
  117. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
  118. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
  119. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
  120. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +13 -12
  121. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
  122. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
  123. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
  124. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
  125. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
  126. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
  127. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
  128. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
  129. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
  130. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
  131. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
  132. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
  133. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  134. data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
  135. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
  136. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
  137. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
  138. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
  139. data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
  140. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +34 -22
  141. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
  142. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
  143. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
  144. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
  145. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
  146. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
  147. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
  148. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
  149. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
  150. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
  151. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
  152. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +4 -4
  153. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
  154. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +46 -16
  155. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +6 -5
  156. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
  157. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
  158. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
  159. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
  160. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
  161. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
  162. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
  163. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
  164. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
  165. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
  166. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
  167. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
  168. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
  169. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
  170. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
  171. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
  172. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
  173. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
  174. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
  175. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +21 -3
  176. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +9 -4
  177. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
  178. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
  179. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +8 -7
  180. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
  181. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
  182. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
  183. data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
  184. data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
  185. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
  186. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
  187. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  188. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +14 -8
  189. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
  190. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  191. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  192. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  193. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  194. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  195. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
  196. data/src/core/ext/filters/http/message_compress/compression_filter.h +35 -5
  197. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  198. data/src/core/ext/filters/http/server/http_server_filter.h +14 -3
  199. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  200. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
  201. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
  202. data/src/core/ext/transport/chttp2/chttp2_plugin.cc +40 -0
  203. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +14 -115
  204. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -0
  205. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +39 -965
  206. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -2
  207. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  208. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
  209. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +185 -102
  210. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  211. data/src/core/ext/transport/chttp2/transport/flow_control.h +18 -0
  212. data/src/core/ext/transport/chttp2/transport/frame.cc +300 -171
  213. data/src/core/ext/transport/chttp2/transport/frame.h +113 -5
  214. data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -0
  215. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -0
  216. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -3
  217. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
  218. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  219. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  220. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
  221. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +23 -3
  222. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -0
  223. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +7 -0
  224. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
  225. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
  226. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
  227. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  228. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  229. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
  230. data/src/core/ext/transport/chttp2/transport/http2_settings.h +28 -2
  231. data/src/core/ext/transport/chttp2/transport/http2_status.h +409 -0
  232. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +252 -0
  233. data/src/core/ext/transport/chttp2/transport/internal.h +41 -20
  234. data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
  235. data/src/core/ext/transport/chttp2/transport/parsing.cc +57 -29
  236. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +10 -9
  237. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +6 -0
  238. data/src/core/ext/transport/chttp2/transport/writing.cc +69 -57
  239. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -3
  240. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +7 -3
  241. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +4 -0
  242. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
  243. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
  244. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
  245. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
  246. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
  247. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  248. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
  249. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
  250. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +38 -26
  251. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
  252. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +228 -240
  253. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
  254. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
  255. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
  256. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +338 -350
  257. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
  258. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
  259. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
  260. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +50 -46
  261. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +41 -29
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +210 -259
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +58 -54
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +4 -0
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +88 -92
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +17 -17
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +112 -100
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +16 -12
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +126 -118
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +23 -19
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +31 -27
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
  281. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -37
  282. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
  283. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +49 -41
  284. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
  285. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
  286. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
  287. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +147 -139
  288. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
  289. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +73 -61
  290. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
  291. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
  292. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
  294. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
  295. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +53 -33
  296. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
  297. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +12 -0
  298. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +20 -36
  299. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
  300. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -77
  301. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
  302. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +684 -692
  303. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
  304. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +17 -13
  305. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
  306. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +15 -3
  307. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
  308. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +4 -0
  309. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
  310. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
  311. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +19 -15
  312. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
  313. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
  314. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
  315. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
  316. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
  317. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +310 -407
  318. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
  319. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +8 -0
  320. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +65 -61
  321. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
  322. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
  323. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
  324. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
  325. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
  326. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
  327. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
  328. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +7 -3
  329. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
  330. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +322 -294
  331. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
  332. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +7 -3
  333. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
  334. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
  335. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
  336. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +88 -84
  337. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
  338. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +4 -0
  339. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +99 -87
  340. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
  341. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +32 -24
  342. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
  343. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +138 -168
  344. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
  345. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
  346. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
  347. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +64 -60
  348. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
  349. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
  350. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
  351. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +4 -0
  352. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +4 -0
  353. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +10 -6
  354. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
  355. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +4 -0
  356. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +4 -0
  357. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +11 -7
  358. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
  359. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +4 -0
  360. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +4 -0
  361. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +8 -0
  362. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +8 -0
  363. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +15 -11
  364. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
  365. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +4 -0
  366. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +4 -0
  367. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +93 -133
  368. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
  369. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +92 -123
  370. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
  371. data/src/core/ext/upb-gen/google/api/http.upb.h +55 -51
  372. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
  373. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +516 -317
  374. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +150 -100
  375. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +5 -0
  376. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +13 -33
  377. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -28
  378. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +199 -142
  379. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +37 -31
  380. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +154 -0
  381. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +40 -2
  382. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +4 -0
  383. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +14 -6
  384. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
  385. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -40
  386. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
  387. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -108
  388. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
  389. data/src/core/ext/upb-gen/validate/validate.upb.h +380 -368
  390. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
  391. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +4 -0
  392. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -28
  393. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
  394. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
  395. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +20 -12
  396. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
  397. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -84
  398. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
  399. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
  400. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
  401. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
  402. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +42 -46
  403. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
  404. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +4 -0
  405. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +4 -0
  406. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +4 -0
  407. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
  408. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -1
  409. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
  410. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -1
  411. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
  412. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -1
  413. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -255
  414. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -1
  415. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
  416. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -1
  417. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
  418. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -1
  419. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
  420. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -1
  421. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
  422. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -1
  423. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
  424. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -1
  425. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -126
  426. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -1
  427. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
  428. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -1
  429. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
  430. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -1
  431. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
  432. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -1
  433. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
  434. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -1
  435. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
  436. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -1
  437. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
  438. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -1
  439. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -557
  440. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -1
  441. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
  442. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -1
  443. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
  444. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -1
  445. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
  446. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -1
  447. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
  448. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -1
  449. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
  450. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -1
  451. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -295
  452. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -1
  453. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
  454. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -1
  455. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
  456. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -1
  457. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
  458. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -1
  459. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
  460. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -1
  461. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
  462. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -1
  463. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
  464. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -1
  465. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
  466. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -1
  467. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
  468. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -1
  469. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -303
  470. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -1
  471. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
  472. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -1
  473. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
  474. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -1
  475. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +47 -25
  476. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +5 -1
  477. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -49
  478. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -1
  479. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
  480. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -1
  481. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
  482. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -1
  483. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
  484. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -1
  485. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
  486. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -1
  487. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
  488. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -1
  489. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
  490. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -1
  491. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
  492. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -1
  493. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -153
  494. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -1
  495. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +173 -90
  496. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -1
  497. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
  498. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -1
  499. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
  500. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -1
  501. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
  502. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -1
  503. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -118
  504. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -1
  505. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -210
  506. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -1
  507. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
  508. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -1
  509. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2003 -973
  510. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -1
  511. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
  512. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -1
  513. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
  514. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -1
  515. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
  516. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -1
  517. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
  518. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -1
  519. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
  520. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -1
  521. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
  522. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -1
  523. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
  524. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -1
  525. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
  526. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -1
  527. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
  528. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -1
  529. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +55 -32
  530. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -1
  531. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
  532. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -1
  533. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
  534. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -1
  535. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
  536. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -1
  537. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
  538. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -1
  539. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
  540. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -1
  541. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
  542. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -1
  543. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
  544. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +5 -1
  545. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
  546. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -1
  547. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
  548. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -1
  549. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
  550. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -1
  551. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -570
  552. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -1
  553. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
  554. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -1
  555. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +55 -29
  556. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +5 -1
  557. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
  558. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -1
  559. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
  560. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -1
  561. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
  562. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -1
  563. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -246
  564. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -1
  565. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -38
  566. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -1
  567. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
  568. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -1
  569. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
  570. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -1
  571. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -187
  572. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -1
  573. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
  574. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -1
  575. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -129
  576. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -1
  577. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
  578. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -1
  579. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
  580. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -1
  581. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +38 -20
  582. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +5 -1
  583. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +59 -32
  584. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -1
  585. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
  586. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  587. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
  588. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -1
  589. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
  590. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -1
  591. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
  592. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -1
  593. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
  594. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -1
  595. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
  596. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -1
  597. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
  598. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -1
  599. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
  600. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -1
  601. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
  602. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -1
  603. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
  604. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -1
  605. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
  606. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -1
  607. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
  608. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -1
  609. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
  610. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -1
  611. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
  612. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -1
  613. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
  614. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -1
  615. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
  616. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -1
  617. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
  618. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -1
  619. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
  620. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -1
  621. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
  622. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -1
  623. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
  624. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -1
  625. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
  626. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -1
  627. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
  628. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -1
  629. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
  630. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -1
  631. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
  632. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +5 -1
  633. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
  634. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -1
  635. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
  636. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -1
  637. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
  638. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -1
  639. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -497
  640. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -1
  641. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
  642. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -1
  643. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
  644. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -1
  645. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
  646. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -1
  647. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
  648. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -1
  649. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
  650. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -1
  651. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
  652. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -1
  653. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
  654. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -1
  655. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
  656. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -1
  657. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
  658. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -1
  659. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
  660. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -1
  661. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
  662. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -1
  663. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
  664. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -1
  665. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
  666. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -1
  667. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
  668. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -1
  669. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
  670. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -1
  671. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
  672. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -1
  673. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
  674. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -1
  675. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
  676. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -1
  677. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
  678. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -1
  679. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
  680. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -1
  681. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
  682. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -1
  683. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
  684. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -1
  685. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
  686. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -1
  687. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
  688. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -1
  689. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
  690. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -1
  691. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
  692. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -1
  693. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
  694. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -1
  695. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
  696. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -1
  697. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
  698. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  699. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
  700. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -1
  701. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
  702. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -1
  703. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
  704. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -1
  705. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
  706. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -1
  707. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
  708. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -1
  709. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
  710. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -1
  711. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
  712. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -1
  713. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
  714. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -1
  715. data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
  716. data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
  717. data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
  718. data/src/core/handshaker/handshaker.cc +0 -8
  719. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +7 -22
  720. data/src/core/handshaker/security/legacy_secure_endpoint.cc +596 -0
  721. data/src/core/handshaker/security/secure_endpoint.cc +769 -312
  722. data/src/core/handshaker/security/secure_endpoint.h +17 -0
  723. data/src/core/handshaker/security/security_handshaker.cc +4 -4
  724. data/src/core/handshaker/security/security_handshaker.h +1 -1
  725. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -5
  726. data/src/core/lib/channel/channel_args.h +53 -30
  727. data/src/core/lib/channel/channel_stack.cc +29 -0
  728. data/src/core/lib/channel/channel_stack.h +10 -2
  729. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  730. data/src/core/lib/channel/connected_channel.cc +2 -2
  731. data/src/core/lib/channel/promise_based_filter.h +710 -302
  732. data/src/core/lib/debug/trace_flags.cc +4 -6
  733. data/src/core/lib/debug/trace_flags.h +2 -3
  734. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +6 -2
  735. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +4 -4
  736. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
  737. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
  738. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
  739. data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
  740. data/src/core/lib/event_engine/extensions/channelz.h +62 -0
  741. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  742. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  743. data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -2
  744. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +4 -7
  745. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +3 -0
  746. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +6 -9
  747. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +28 -22
  748. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +23 -3
  749. data/src/core/lib/event_engine/posix_engine/posix_engine.h +15 -15
  750. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
  751. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
  752. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  753. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
  754. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
  755. data/src/core/lib/event_engine/query_extensions.h +10 -21
  756. data/src/core/lib/event_engine/shim.cc +9 -16
  757. data/src/core/lib/event_engine/shim.h +11 -0
  758. data/src/core/lib/event_engine/tcp_socket_utils.cc +10 -9
  759. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
  760. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
  761. data/src/core/lib/event_engine/utils.cc +34 -0
  762. data/src/core/lib/event_engine/utils.h +3 -0
  763. data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
  764. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  765. data/src/core/lib/event_engine/windows/windows_endpoint.cc +7 -12
  766. data/src/core/lib/event_engine/windows/windows_endpoint.h +9 -2
  767. data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
  768. data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
  769. data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
  770. data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
  771. data/src/core/lib/experiments/experiments.cc +369 -69
  772. data/src/core/lib/experiments/experiments.h +148 -48
  773. data/src/core/lib/iomgr/combiner.cc +3 -2
  774. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  775. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  776. data/src/core/lib/iomgr/error.cc +27 -43
  777. data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
  778. data/src/core/lib/iomgr/ev_poll_posix.cc +17 -0
  779. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +11 -8
  780. data/src/core/lib/iomgr/fork_posix.cc +0 -7
  781. data/src/core/lib/iomgr/iomgr.cc +0 -3
  782. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
  783. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  784. data/src/core/lib/iomgr/resolve_address_posix.cc +37 -47
  785. data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
  786. data/src/core/lib/iomgr/resolve_address_windows.cc +22 -45
  787. data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
  788. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  789. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
  790. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  791. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  792. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -21
  793. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  794. data/src/core/lib/iomgr/tcp_posix.cc +72 -43
  795. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  796. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
  797. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  798. data/src/core/lib/iomgr/tcp_server_windows.cc +41 -18
  799. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
  800. data/src/core/lib/promise/all_ok.h +31 -0
  801. data/src/core/lib/promise/detail/promise_like.h +24 -0
  802. data/src/core/lib/promise/detail/seq_state.h +741 -0
  803. data/src/core/lib/promise/loop.h +8 -5
  804. data/src/core/lib/promise/map.h +82 -2
  805. data/src/core/lib/promise/party.h +5 -1
  806. data/src/core/lib/promise/poll.h +22 -20
  807. data/src/core/lib/promise/promise.h +4 -2
  808. data/src/core/lib/promise/seq.h +2 -0
  809. data/src/core/lib/promise/sleep.cc +6 -3
  810. data/src/core/lib/promise/status_flag.h +23 -11
  811. data/src/core/lib/promise/try_seq.h +2 -0
  812. data/src/core/lib/resource_quota/memory_quota.cc +9 -0
  813. data/src/core/lib/resource_quota/memory_quota.h +1 -3
  814. data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
  815. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  816. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  817. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  818. data/src/core/lib/slice/slice.h +6 -0
  819. data/src/core/lib/slice/slice_buffer.h +6 -0
  820. data/src/core/lib/surface/call.cc +24 -18
  821. data/src/core/lib/surface/call_utils.cc +3 -3
  822. data/src/core/lib/surface/call_utils.h +3 -3
  823. data/src/core/lib/surface/channel.h +2 -2
  824. data/src/core/lib/surface/channel_create.cc +61 -1
  825. data/src/core/lib/surface/channel_init.h +2 -2
  826. data/src/core/lib/surface/completion_queue.cc +77 -17
  827. data/src/core/lib/surface/filter_stack_call.cc +40 -27
  828. data/src/core/lib/surface/filter_stack_call.h +1 -1
  829. data/src/core/lib/surface/init.cc +4 -5
  830. data/src/core/lib/surface/lame_client.cc +1 -1
  831. data/src/core/lib/surface/legacy_channel.cc +27 -23
  832. data/src/core/lib/surface/legacy_channel.h +1 -1
  833. data/src/core/lib/surface/version.cc +2 -2
  834. data/src/core/lib/transport/error_utils.cc +65 -11
  835. data/src/core/lib/transport/error_utils.h +2 -2
  836. data/src/core/lib/transport/status_conversion.cc +11 -36
  837. data/src/core/lib/transport/status_conversion.h +5 -4
  838. data/src/core/lib/transport/transport.cc +2 -2
  839. data/src/core/lib/transport/transport.h +8 -5
  840. data/src/core/lib/transport/transport_op_string.cc +1 -1
  841. data/src/core/load_balancing/backend_metric_parser.cc +12 -18
  842. data/src/core/load_balancing/delegating_helper.h +1 -1
  843. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
  844. data/src/core/load_balancing/grpclb/grpclb.cc +3 -4
  845. data/src/core/load_balancing/health_check_client.cc +2 -4
  846. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  847. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +4 -3
  848. data/src/core/load_balancing/pick_first/pick_first.cc +3 -958
  849. data/src/core/load_balancing/rls/rls.cc +37 -42
  850. data/src/core/load_balancing/round_robin/round_robin.cc +2 -3
  851. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +4 -4
  852. data/src/core/load_balancing/weighted_target/weighted_target.cc +4 -10
  853. data/src/core/load_balancing/xds/cds.cc +3 -10
  854. data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
  855. data/src/core/load_balancing/xds/xds_override_host.cc +55 -34
  856. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  857. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
  858. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  859. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  860. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
  861. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +2 -1
  862. data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
  863. data/src/core/resolver/xds/xds_resolver.cc +4 -3
  864. data/src/core/server/add_port.cc +87 -0
  865. data/src/core/server/server.cc +55 -57
  866. data/src/core/server/server.h +4 -6
  867. data/src/core/server/server_call_tracer_filter.cc +1 -1
  868. data/src/core/server/server_config_selector.h +1 -1
  869. data/src/core/server/server_config_selector_filter.cc +1 -1
  870. data/src/core/server/xds_server_config_fetcher.cc +5 -5
  871. data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
  872. data/src/core/telemetry/call_tracer.cc +4 -6
  873. data/src/core/telemetry/call_tracer.h +4 -4
  874. data/src/core/{ext/transport/chttp2/transport → telemetry}/context_list_entry.h +6 -6
  875. data/src/core/telemetry/default_tcp_tracer.cc +26 -0
  876. data/src/core/telemetry/default_tcp_tracer.h +44 -0
  877. data/src/core/telemetry/metrics.cc +30 -12
  878. data/src/core/telemetry/metrics.h +15 -3
  879. data/src/core/telemetry/stats.h +0 -5
  880. data/src/core/telemetry/stats_data.cc +400 -285
  881. data/src/core/telemetry/stats_data.h +279 -143
  882. data/src/core/telemetry/tcp_tracer.cc +38 -0
  883. data/src/core/telemetry/tcp_tracer.h +103 -99
  884. data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -97
  885. data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +5 -76
  886. data/src/core/transport/endpoint_transport.h +90 -0
  887. data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
  888. data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
  889. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +33 -1
  890. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -1
  891. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +76 -22
  892. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -3
  893. data/src/core/tsi/ssl_transport_security.cc +190 -72
  894. data/src/core/tsi/ssl_transport_security.h +6 -1
  895. data/src/core/tsi/transport_security.h +3 -0
  896. data/src/core/tsi/transport_security_grpc.h +7 -3
  897. data/src/core/tsi/transport_security_interface.h +30 -25
  898. data/src/core/util/backoff.cc +7 -14
  899. data/src/core/util/backoff.h +0 -1
  900. data/src/core/util/check_class_size.h +48 -0
  901. data/src/core/util/dual_ref_counted.h +48 -0
  902. data/src/core/util/function_signature.h +66 -0
  903. data/src/core/util/gcp_metadata_query.cc +4 -3
  904. data/src/core/util/http_client/httpcli.cc +3 -3
  905. data/src/core/util/http_client/httpcli_security_connector.cc +5 -4
  906. data/src/core/util/json/json_object_loader.h +3 -3
  907. data/src/core/util/latent_see.cc +28 -2
  908. data/src/core/util/latent_see.h +11 -23
  909. data/src/core/util/linux/env.cc +3 -1
  910. data/src/core/util/load_file.cc +26 -14
  911. data/src/core/util/ref_counted_ptr.h +26 -0
  912. data/src/core/util/shared_bit_gen.cc +21 -0
  913. data/src/core/util/shared_bit_gen.h +44 -0
  914. data/src/core/util/single_set_ptr.h +35 -4
  915. data/src/core/util/status_helper.cc +86 -63
  916. data/src/core/util/status_helper.h +9 -26
  917. data/src/core/util/uri.cc +75 -17
  918. data/src/core/util/uri.h +13 -8
  919. data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
  920. data/src/core/xds/grpc/certificate_provider_store.h +3 -3
  921. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  922. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  923. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
  924. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  925. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  926. data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
  927. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  928. data/src/core/xds/grpc/xds_cluster.h +3 -3
  929. data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
  930. data/src/core/xds/grpc/xds_common_types_parser.cc +1 -9
  931. data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
  932. data/src/core/xds/grpc/xds_http_filter.h +1 -1
  933. data/src/core/xds/grpc/xds_http_filter_registry.cc +1 -3
  934. data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
  935. data/src/core/xds/grpc/xds_http_rbac_filter.cc +10 -17
  936. data/src/core/xds/grpc/xds_metadata_parser.cc +40 -64
  937. data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
  938. data/src/core/xds/grpc/xds_route_config.h +1 -1
  939. data/src/core/xds/grpc/xds_route_config_parser.cc +56 -78
  940. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  941. data/src/core/xds/grpc/xds_routing.h +1 -1
  942. data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
  943. data/src/core/xds/grpc/xds_server_grpc.h +23 -13
  944. data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
  945. data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
  946. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  947. data/src/core/xds/xds_client/lrs_client.cc +6 -5
  948. data/src/core/xds/xds_client/lrs_client.h +7 -7
  949. data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
  950. data/src/core/xds/xds_client/xds_client.cc +26 -24
  951. data/src/core/xds/xds_client/xds_client.h +3 -1
  952. data/src/core/xds/xds_client/xds_resource_type.h +1 -2
  953. data/src/core/xds/xds_client/xds_transport.h +1 -1
  954. data/src/ruby/ext/grpc/extconf.rb +2 -2
  955. data/src/ruby/lib/grpc/version.rb +1 -1
  956. data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
  957. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  958. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
  959. data/third_party/abseil-cpp/absl/algorithm/container.h +79 -48
  960. data/third_party/abseil-cpp/absl/base/attributes.h +66 -16
  961. data/third_party/abseil-cpp/absl/base/call_once.h +8 -5
  962. data/third_party/abseil-cpp/absl/base/config.h +4 -4
  963. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +17 -56
  964. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
  965. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
  966. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
  967. data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  968. data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  969. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
  970. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -0
  971. data/third_party/abseil-cpp/absl/base/macros.h +35 -4
  972. data/third_party/abseil-cpp/absl/base/nullability.h +72 -16
  973. data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
  974. data/third_party/abseil-cpp/absl/base/options.h +5 -2
  975. data/third_party/abseil-cpp/absl/base/policy_checks.h +2 -0
  976. data/third_party/abseil-cpp/absl/container/btree_map.h +889 -0
  977. data/third_party/abseil-cpp/absl/container/btree_set.h +824 -0
  978. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -1
  979. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +17 -3
  980. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +17 -3
  981. data/third_party/abseil-cpp/absl/container/inlined_vector.h +2 -1
  982. data/third_party/abseil-cpp/absl/container/internal/btree.h +3046 -0
  983. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +763 -0
  984. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +9 -0
  985. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -0
  986. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +4 -2
  987. data/third_party/abseil-cpp/absl/container/internal/layout.h +1 -1
  988. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +142 -114
  989. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +397 -231
  990. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
  991. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
  992. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +4 -2
  993. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
  994. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +17 -1
  995. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
  996. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +9 -6
  997. data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  998. data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  999. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
  1000. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +48 -9
  1001. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
  1002. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +7 -0
  1003. data/third_party/abseil-cpp/absl/flags/flag.h +14 -12
  1004. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +12 -4
  1005. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -5
  1006. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
  1007. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
  1008. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
  1009. data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
  1010. data/third_party/abseil-cpp/absl/hash/hash.h +26 -2
  1011. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +17 -17
  1012. data/third_party/abseil-cpp/absl/hash/internal/hash.h +196 -91
  1013. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +2 -4
  1014. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
  1015. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +27 -22
  1016. data/third_party/abseil-cpp/absl/log/internal/check_op.h +102 -80
  1017. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +90 -38
  1018. data/third_party/abseil-cpp/absl/log/internal/log_message.h +80 -48
  1019. data/third_party/abseil-cpp/absl/log/internal/proto.cc +0 -3
  1020. data/third_party/abseil-cpp/absl/log/internal/proto.h +25 -15
  1021. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  1022. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
  1023. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
  1024. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
  1025. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
  1026. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -6
  1027. data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
  1028. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
  1029. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
  1030. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
  1031. data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
  1032. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +2 -1
  1033. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
  1034. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
  1035. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
  1036. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +2 -1
  1037. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -1
  1038. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
  1039. data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
  1040. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +56 -5
  1041. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
  1042. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
  1043. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
  1044. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
  1045. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
  1046. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
  1047. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
  1048. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
  1049. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
  1050. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
  1051. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +8 -4
  1052. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -1
  1053. data/third_party/abseil-cpp/absl/status/status.h +1 -1
  1054. data/third_party/abseil-cpp/absl/strings/ascii.cc +41 -26
  1055. data/third_party/abseil-cpp/absl/strings/ascii.h +48 -8
  1056. data/third_party/abseil-cpp/absl/strings/charconv.cc +4 -7
  1057. data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
  1058. data/third_party/abseil-cpp/absl/strings/cord.h +5 -19
  1059. data/third_party/abseil-cpp/absl/strings/escaping.cc +56 -48
  1060. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
  1061. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +48 -15
  1062. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
  1063. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
  1064. data/third_party/abseil-cpp/absl/strings/match.h +21 -11
  1065. data/third_party/abseil-cpp/absl/strings/numbers.cc +2 -1
  1066. data/third_party/abseil-cpp/absl/strings/str_cat.h +11 -0
  1067. data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
  1068. data/third_party/abseil-cpp/absl/strings/string_view.h +20 -19
  1069. data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
  1070. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
  1071. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
  1072. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
  1073. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +38 -12
  1074. data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
  1075. data/third_party/abseil-cpp/absl/synchronization/notification.h +11 -1
  1076. data/third_party/abseil-cpp/absl/time/duration.cc +6 -51
  1077. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1078. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1079. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
  1080. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
  1081. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
  1082. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
  1083. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
  1084. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1085. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
  1086. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +3 -2
  1087. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
  1088. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
  1089. data/third_party/abseil-cpp/absl/time/time.h +84 -23
  1090. data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
  1091. data/third_party/abseil-cpp/absl/types/optional.h +4 -2
  1092. data/third_party/abseil-cpp/absl/types/span.h +85 -43
  1093. data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
  1094. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +16 -0
  1095. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +15 -0
  1096. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +19 -3
  1097. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +79 -48
  1098. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +11 -19
  1099. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +3 -7
  1100. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +0 -35
  1101. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +0 -2
  1102. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +3 -5
  1103. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +0 -3
  1104. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +0 -2
  1105. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +31 -47
  1106. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
  1107. data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
  1108. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
  1109. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +14 -8
  1110. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +1 -1
  1111. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +3 -3
  1112. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +4 -4
  1113. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +13 -15
  1114. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
  1115. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +179 -102
  1116. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +3 -3
  1117. data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
  1118. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
  1119. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
  1120. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
  1121. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
  1122. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
  1123. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
  1124. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
  1125. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +28 -6
  1126. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +11 -9
  1127. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +0 -6
  1128. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +1 -3
  1129. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +3 -3
  1130. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +3 -3
  1131. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +13 -14
  1132. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +27 -61
  1133. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +16 -8
  1134. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +112 -122
  1135. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +23 -35
  1136. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  1137. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +47 -63
  1138. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +60 -68
  1139. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +3 -3
  1140. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +11 -17
  1141. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +0 -2
  1142. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +10 -11
  1143. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +10 -11
  1144. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +3 -3
  1145. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +6 -6
  1146. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +6 -6
  1147. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +6 -6
  1148. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +6 -6
  1149. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +6 -6
  1150. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +23 -42
  1151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +29 -18
  1152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +10 -10
  1153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +16 -45
  1154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -4
  1155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +15 -6
  1156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +3 -3
  1157. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +101 -5
  1158. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +96 -187
  1159. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +24 -512
  1160. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +58 -80
  1161. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +29 -45
  1162. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +27 -25
  1163. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +7 -16
  1164. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +27 -48
  1165. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +34 -34
  1166. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +102 -154
  1167. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +3 -3
  1168. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +3 -8
  1169. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +1 -78
  1170. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +10 -17
  1171. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +3 -3
  1172. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +15 -8
  1173. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +40 -53
  1174. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +57 -76
  1175. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +4 -10
  1176. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +3 -3
  1177. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +3 -3
  1178. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +37 -52
  1179. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +13 -20
  1180. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +3 -3
  1181. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +28 -39
  1182. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +3 -3
  1183. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +6 -11
  1184. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +3 -3
  1185. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  1186. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +335 -28
  1187. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  1188. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +265 -33
  1189. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +3 -3
  1190. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +1 -1
  1191. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +3 -3
  1192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +19 -26
  1193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +7 -7
  1194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +121 -138
  1195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +96 -83
  1196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +3 -3
  1197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +8 -20
  1198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  1199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +235 -60
  1200. data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +3 -3
  1202. data/third_party/boringssl-with-bazel/src/crypto/internal.h +59 -33
  1203. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +3 -3
  1204. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +3 -3
  1205. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +0 -2
  1206. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +2 -8
  1207. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +3 -3
  1208. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +8 -13
  1209. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +22 -8
  1210. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +19 -17
  1211. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +134 -136
  1212. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -8
  1213. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +25 -21
  1214. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +36 -52
  1215. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +97 -79
  1216. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +3 -3
  1217. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +3 -3
  1218. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +1 -1
  1219. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +2 -2
  1220. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +1 -1
  1221. data/third_party/boringssl-with-bazel/src/crypto/rand/{sysrand_internal.h → internal.h} +22 -4
  1222. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +1 -1
  1223. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +1 -1
  1224. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +1 -1
  1225. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +1 -5
  1226. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +3 -3
  1227. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +14 -22
  1228. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +3 -3
  1229. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +0 -2
  1230. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +3 -3
  1231. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +3 -5
  1232. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +8 -12
  1233. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +15 -3
  1234. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +16 -24
  1235. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +18 -21
  1236. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +10 -3
  1237. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +9 -0
  1238. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +10 -1
  1239. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +64 -85
  1240. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +16 -32
  1241. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +576 -567
  1242. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +16 -8
  1243. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +1 -1
  1244. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
  1245. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -54
  1246. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +1 -1
  1247. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +8 -4
  1248. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +1 -1
  1249. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +1 -1
  1250. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +1 -1
  1251. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
  1252. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +1 -1
  1253. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1 -1
  1254. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +1 -1
  1255. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +7 -1
  1256. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +1 -1
  1257. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1258. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +1 -1
  1259. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
  1260. data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
  1261. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +1 -1
  1262. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +23 -3
  1263. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
  1264. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
  1265. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +1 -1
  1266. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +1 -1
  1267. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -7
  1268. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +1 -1
  1269. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
  1270. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +1 -1
  1271. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +1 -1
  1272. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +1 -1
  1273. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -1
  1274. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
  1275. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -1
  1276. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
  1277. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  1278. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
  1279. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
  1280. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +1 -1
  1281. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +4 -4
  1282. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
  1283. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
  1284. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +1 -1
  1285. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +1 -1
  1286. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +1 -1
  1287. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +1 -1
  1288. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +1 -1
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +1 -1
  1291. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +1 -1
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +10 -4
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +19 -6
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  1300. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +1 -1
  1301. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +1 -1
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +2 -2
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +1 -1
  1304. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +1 -1
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +1 -1
  1307. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +1 -1
  1308. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +291 -40
  1309. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +1 -1
  1310. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +0 -5
  1311. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -1
  1312. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +9 -1
  1313. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
  1314. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +1 -1
  1315. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +7 -4
  1316. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +2 -0
  1317. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +32 -26
  1318. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +49 -49
  1319. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +256 -57
  1320. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +12 -12
  1321. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +7 -5
  1322. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +3 -2
  1323. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +25 -33
  1324. data/third_party/boringssl-with-bazel/src/ssl/internal.h +106 -10
  1325. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +6 -12
  1326. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +18 -4
  1327. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +85 -8
  1328. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -1
  1329. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +173 -19
  1330. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +5 -18
  1331. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +28 -15
  1332. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +1 -1
  1333. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +31 -7
  1334. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +14 -2
  1335. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -11
  1336. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +14 -12
  1337. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +2 -5
  1338. data/third_party/upb/upb/base/internal/log2.h +3 -1
  1339. data/third_party/upb/upb/base/string_view.h +10 -0
  1340. data/third_party/upb/upb/hash/common.c +312 -187
  1341. data/third_party/upb/upb/hash/common.h +44 -43
  1342. data/third_party/upb/upb/hash/int_table.h +29 -5
  1343. data/third_party/upb/upb/hash/str_table.h +6 -0
  1344. data/third_party/upb/upb/json/decode.c +2 -2
  1345. data/third_party/upb/upb/json/decode.h +0 -1
  1346. data/third_party/upb/upb/mem/alloc.h +5 -0
  1347. data/third_party/upb/upb/mem/arena.c +437 -160
  1348. data/third_party/upb/upb/mem/arena.h +57 -11
  1349. data/third_party/upb/upb/mem/arena.hpp +4 -20
  1350. data/third_party/upb/upb/mem/internal/arena.h +65 -29
  1351. data/third_party/upb/upb/message/accessors.c +1 -5
  1352. data/third_party/upb/upb/message/accessors.h +41 -0
  1353. data/third_party/upb/upb/message/array.c +7 -6
  1354. data/third_party/upb/upb/message/array.h +4 -4
  1355. data/third_party/upb/upb/message/compat.c +11 -14
  1356. data/third_party/upb/upb/message/compat.h +4 -3
  1357. data/third_party/upb/upb/message/copy.c +35 -30
  1358. data/third_party/upb/upb/message/internal/accessors.h +142 -13
  1359. data/third_party/upb/upb/message/internal/extension.c +16 -25
  1360. data/third_party/upb/upb/message/internal/extension.h +17 -5
  1361. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  1362. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  1363. data/third_party/upb/upb/message/internal/map.h +76 -22
  1364. data/third_party/upb/upb/message/internal/map_sorter.h +13 -4
  1365. data/third_party/upb/upb/message/internal/message.c +48 -29
  1366. data/third_party/upb/upb/message/internal/message.h +203 -25
  1367. data/third_party/upb/upb/message/map.c +68 -20
  1368. data/third_party/upb/upb/message/map.h +8 -1
  1369. data/third_party/upb/upb/message/map_gencode_util.h +3 -45
  1370. data/third_party/upb/upb/message/map_sorter.c +52 -16
  1371. data/third_party/upb/upb/message/merge.h +3 -3
  1372. data/third_party/upb/upb/message/message.c +200 -42
  1373. data/third_party/upb/upb/message/message.h +69 -4
  1374. data/third_party/upb/upb/message/value.h +9 -0
  1375. data/third_party/upb/upb/mini_descriptor/build_enum.c +16 -6
  1376. data/third_party/upb/upb/mini_descriptor/decode.c +115 -138
  1377. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  1378. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  1379. data/third_party/upb/upb/mini_descriptor/link.c +4 -0
  1380. data/third_party/upb/upb/mini_table/extension.h +8 -1
  1381. data/third_party/upb/upb/mini_table/extension_registry.c +25 -13
  1382. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  1383. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  1384. data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
  1385. data/third_party/upb/upb/mini_table/internal/field.h +4 -4
  1386. data/third_party/upb/upb/mini_table/internal/message.h +1 -1
  1387. data/third_party/upb/upb/mini_table/message.c +21 -13
  1388. data/third_party/upb/upb/port/atomic.h +134 -7
  1389. data/third_party/upb/upb/port/def.inc +163 -45
  1390. data/third_party/upb/upb/port/undef.inc +12 -1
  1391. data/third_party/upb/upb/reflection/def.hpp +5 -1
  1392. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  1393. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  1394. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +4 -4
  1395. data/third_party/upb/upb/reflection/enum_def.c +4 -4
  1396. data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
  1397. data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
  1398. data/third_party/upb/upb/reflection/extension_range.c +1 -2
  1399. data/third_party/upb/upb/reflection/field_def.c +3 -5
  1400. data/third_party/upb/upb/reflection/field_def.h +1 -1
  1401. data/third_party/upb/upb/reflection/file_def.c +16 -10
  1402. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  1403. data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
  1404. data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
  1405. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  1406. data/third_party/upb/upb/reflection/message.c +19 -16
  1407. data/third_party/upb/upb/reflection/message.h +3 -1
  1408. data/third_party/upb/upb/reflection/message_def.c +4 -7
  1409. data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
  1410. data/third_party/upb/upb/reflection/method_def.c +1 -1
  1411. data/third_party/upb/upb/reflection/oneof_def.c +3 -3
  1412. data/third_party/upb/upb/reflection/service_def.c +2 -5
  1413. data/third_party/upb/upb/text/encode.c +17 -13
  1414. data/third_party/upb/upb/text/internal/encode.c +25 -6
  1415. data/third_party/upb/upb/text/internal/encode.h +6 -1
  1416. data/third_party/upb/upb/wire/decode.c +154 -107
  1417. data/third_party/upb/upb/wire/decode.h +4 -2
  1418. data/third_party/upb/upb/wire/encode.c +114 -55
  1419. data/third_party/upb/upb/wire/encode.h +2 -0
  1420. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  1421. data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
  1422. data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
  1423. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  1424. data/third_party/utf8_range/utf8_range.c +15 -275
  1425. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  1426. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  1427. data/third_party/zlib/deflate.c +40 -15
  1428. data/third_party/zlib/deflate.h +33 -2
  1429. data/third_party/zlib/gzguts.h +2 -6
  1430. data/third_party/zlib/inflate.c +1 -1
  1431. data/third_party/zlib/inftrees.c +3 -3
  1432. data/third_party/zlib/inftrees.h +2 -2
  1433. data/third_party/zlib/trees.c +18 -4
  1434. data/third_party/zlib/zconf.h +1 -9
  1435. data/third_party/zlib/zlib.h +12 -12
  1436. data/third_party/zlib/zutil.h +4 -25
  1437. metadata +196 -150
  1438. data/include/grpc/grpc_cronet.h +0 -37
  1439. data/src/core/lib/iomgr/executor.cc +0 -441
  1440. data/src/core/lib/iomgr/executor.h +0 -119
  1441. data/src/core/lib/transport/http2_errors.h +0 -43
  1442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +0 -89
  1443. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  1444. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -21,14 +21,17 @@
21
21
  // Must be last.
22
22
  #include "upb/port/def.inc"
23
23
 
24
- static UPB_ATOMIC(size_t) max_block_size = 32 << 10;
24
+ static UPB_ATOMIC(size_t) g_max_block_size = UPB_DEFAULT_MAX_BLOCK_SIZE;
25
25
 
26
- void upb_Arena_SetMaxBlockSize(size_t max) { max_block_size = max; }
26
+ void upb_Arena_SetMaxBlockSize(size_t max) {
27
+ upb_Atomic_Store(&g_max_block_size, max, memory_order_relaxed);
28
+ }
27
29
 
28
30
  typedef struct upb_MemBlock {
29
- // Atomic only for the benefit of SpaceAllocated().
30
- UPB_ATOMIC(struct upb_MemBlock*) next;
31
- uint32_t size;
31
+ struct upb_MemBlock* next;
32
+ // If this block is the head of the list, tracks a growing hint of what the
33
+ // *next* block should be; otherwise tracks the size of the actual allocation.
34
+ size_t size_or_hint;
32
35
  // Data follows.
33
36
  } upb_MemBlock;
34
37
 
@@ -37,6 +40,10 @@ typedef struct upb_ArenaInternal {
37
40
  // block.
38
41
  uintptr_t block_alloc;
39
42
 
43
+ // The cleanup for the allocator. This is called after all the blocks are
44
+ // freed in an arena.
45
+ upb_AllocCleanupFunc* upb_alloc_cleanup;
46
+
40
47
  // When multiple arenas are fused together, each arena points to a parent
41
48
  // arena (root points to itself). The root tracks how many live arenas
42
49
  // reference it.
@@ -50,15 +57,22 @@ typedef struct upb_ArenaInternal {
50
57
  // == NULL at end of list.
51
58
  UPB_ATOMIC(struct upb_ArenaInternal*) next;
52
59
 
53
- // The last element of the linked list. This is present only as an
54
- // optimization, so that we do not have to iterate over all members for every
55
- // fuse. Only significant for an arena root. In other cases it is ignored.
56
- // == self when no other list members.
57
- UPB_ATOMIC(struct upb_ArenaInternal*) tail;
60
+ // - If the low bit is set, is a pointer to the tail of the list (populated
61
+ // for roots, set to self for roots with no fused arenas). This is best
62
+ // effort, and it may not always reflect the true tail, but it will always
63
+ // be a valid node in the list. This is useful for finding the list tail
64
+ // without having to walk the entire list.
65
+ // - If the low bit is not set, is a pointer to the previous node in the list,
66
+ // such that a->previous_or_tail->next == a.
67
+ UPB_ATOMIC(uintptr_t) previous_or_tail;
68
+
69
+ // Linked list of blocks to free/cleanup.
70
+ upb_MemBlock* blocks;
71
+
72
+ // Total space allocated in blocks, atomic only for SpaceAllocated
73
+ UPB_ATOMIC(uintptr_t) space_allocated;
58
74
 
59
- // Linked list of blocks to free/cleanup. Atomic only for the benefit of
60
- // upb_Arena_SpaceAllocated().
61
- UPB_ATOMIC(upb_MemBlock*) blocks;
75
+ UPB_TSAN_PUBLISHED_MEMBER
62
76
  } upb_ArenaInternal;
63
77
 
64
78
  // All public + private state for an arena.
@@ -73,13 +87,19 @@ typedef struct {
73
87
  } upb_ArenaRoot;
74
88
 
75
89
  static const size_t kUpb_MemblockReserve =
76
- UPB_ALIGN_UP(sizeof(upb_MemBlock), UPB_MALLOC_ALIGN);
90
+ UPB_ALIGN_MALLOC(sizeof(upb_MemBlock));
77
91
 
78
92
  // Extracts the (upb_ArenaInternal*) from a (upb_Arena*)
79
93
  static upb_ArenaInternal* upb_Arena_Internal(const upb_Arena* a) {
80
94
  return &((upb_ArenaState*)a)->body;
81
95
  }
82
96
 
97
+ // Extracts the (upb_Arena*) from a (upb_ArenaInternal*)
98
+ static upb_Arena* upb_Arena_FromInternal(const upb_ArenaInternal* ai) {
99
+ ptrdiff_t offset = -offsetof(upb_ArenaState, body);
100
+ return UPB_PTR_AT(ai, offset, upb_Arena);
101
+ }
102
+
83
103
  static bool _upb_Arena_IsTaggedRefcount(uintptr_t parent_or_count) {
84
104
  return (parent_or_count & 1) == 1;
85
105
  }
@@ -111,6 +131,38 @@ static uintptr_t _upb_Arena_TaggedFromPointer(upb_ArenaInternal* ai) {
111
131
  return parent_or_count;
112
132
  }
113
133
 
134
+ static bool _upb_Arena_IsTaggedTail(uintptr_t previous_or_tail) {
135
+ return (previous_or_tail & 1) == 1;
136
+ }
137
+
138
+ static bool _upb_Arena_IsTaggedPrevious(uintptr_t previous_or_tail) {
139
+ return (previous_or_tail & 1) == 0;
140
+ }
141
+
142
+ static upb_ArenaInternal* _upb_Arena_TailFromTagged(
143
+ uintptr_t previous_or_tail) {
144
+ UPB_ASSERT(_upb_Arena_IsTaggedTail(previous_or_tail));
145
+ return (upb_ArenaInternal*)(previous_or_tail ^ 1);
146
+ }
147
+
148
+ static uintptr_t _upb_Arena_TaggedFromTail(upb_ArenaInternal* tail) {
149
+ uintptr_t previous_or_tail = (uintptr_t)tail | 1;
150
+ UPB_ASSERT(_upb_Arena_IsTaggedTail(previous_or_tail));
151
+ return previous_or_tail;
152
+ }
153
+
154
+ static upb_ArenaInternal* _upb_Arena_PreviousFromTagged(
155
+ uintptr_t previous_or_tail) {
156
+ UPB_ASSERT(_upb_Arena_IsTaggedPrevious(previous_or_tail));
157
+ return (upb_ArenaInternal*)previous_or_tail;
158
+ }
159
+
160
+ static uintptr_t _upb_Arena_TaggedFromPrevious(upb_ArenaInternal* ai) {
161
+ uintptr_t previous = (uintptr_t)ai;
162
+ UPB_ASSERT(_upb_Arena_IsTaggedPrevious(previous));
163
+ return previous;
164
+ }
165
+
114
166
  static upb_alloc* _upb_ArenaInternal_BlockAlloc(upb_ArenaInternal* ai) {
115
167
  return (upb_alloc*)(ai->block_alloc & ~0x1);
116
168
  }
@@ -157,56 +209,79 @@ void upb_Arena_LogFree(const upb_Arena* arena) {
157
209
  }
158
210
  #endif // UPB_TRACING_ENABLED
159
211
 
160
- static upb_ArenaRoot _upb_Arena_FindRoot(upb_Arena* a) {
161
- upb_ArenaInternal* ai = upb_Arena_Internal(a);
162
- uintptr_t poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
163
- while (_upb_Arena_IsTaggedPointer(poc)) {
212
+ // If the param a is already the root, provides no memory order of refcount.
213
+ // If it has a parent, then acquire memory order is provided for both the root
214
+ // and the refcount. Thread safe.
215
+ static upb_ArenaRoot _upb_Arena_FindRoot(upb_ArenaInternal* ai) {
216
+ uintptr_t poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_relaxed);
217
+ if (_upb_Arena_IsTaggedRefcount(poc)) {
218
+ // Fast, relaxed path - arenas that have never been fused to a parent only
219
+ // need relaxed memory order, since they're returning themselves and the
220
+ // refcount.
221
+ return (upb_ArenaRoot){.root = ai, .tagged_count = poc};
222
+ }
223
+ // Slow path needs acquire order; reloading is cheaper than a fence on ARM
224
+ // (LDA vs DMB ISH). Even though this is a reread, we know it must be a tagged
225
+ // pointer because if this Arena isn't a root, it can't ever become one.
226
+ poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
227
+ do {
164
228
  upb_ArenaInternal* next = _upb_Arena_PointerFromTagged(poc);
229
+ UPB_TSAN_CHECK_PUBLISHED(next);
165
230
  UPB_ASSERT(ai != next);
166
- uintptr_t next_poc =
167
- upb_Atomic_Load(&next->parent_or_count, memory_order_acquire);
231
+ poc = upb_Atomic_Load(&next->parent_or_count, memory_order_acquire);
168
232
 
169
- if (_upb_Arena_IsTaggedPointer(next_poc)) {
233
+ if (_upb_Arena_IsTaggedPointer(poc)) {
170
234
  // To keep complexity down, we lazily collapse levels of the tree. This
171
235
  // keeps it flat in the final case, but doesn't cost much incrementally.
172
236
  //
173
237
  // Path splitting keeps time complexity down, see:
174
238
  // https://en.wikipedia.org/wiki/Disjoint-set_data_structure
175
- //
176
- // We can safely use a relaxed atomic here because all threads doing this
177
- // will converge on the same value and we don't need memory orderings to
178
- // be visible.
179
- //
180
- // This is true because:
181
- // - If no fuses occur, this will eventually become the root.
182
- // - If fuses are actively occurring, the root may change, but the
183
- // invariant is that `parent_or_count` merely points to *a* parent.
184
- //
185
- // In other words, it is moving towards "the" root, and that root may move
186
- // further away over time, but the path towards that root will continue to
187
- // be valid and the creation of the path carries all the memory orderings
188
- // required.
189
- UPB_ASSERT(ai != _upb_Arena_PointerFromTagged(next_poc));
190
- upb_Atomic_Store(&ai->parent_or_count, next_poc, memory_order_relaxed);
239
+ UPB_ASSERT(ai != _upb_Arena_PointerFromTagged(poc));
240
+ upb_Atomic_Store(&ai->parent_or_count, poc, memory_order_release);
191
241
  }
192
242
  ai = next;
193
- poc = next_poc;
194
- }
243
+ } while (_upb_Arena_IsTaggedPointer(poc));
195
244
  return (upb_ArenaRoot){.root = ai, .tagged_count = poc};
196
245
  }
197
246
 
198
- size_t upb_Arena_SpaceAllocated(upb_Arena* arena, size_t* fused_count) {
199
- upb_ArenaInternal* ai = _upb_Arena_FindRoot(arena).root;
200
- size_t memsize = 0;
247
+ uintptr_t upb_Arena_SpaceAllocated(const upb_Arena* arena,
248
+ size_t* fused_count) {
249
+ upb_ArenaInternal* ai = upb_Arena_Internal(arena);
250
+ uintptr_t memsize = 0;
201
251
  size_t local_fused_count = 0;
202
-
252
+ // Our root would get updated by any racing fuses before our target arena
253
+ // became reachable from the root via the linked list; in order to preserve
254
+ // monotonic output (any arena counted by a previous invocation is counted by
255
+ // this one), we instead iterate forwards and backwards so that we only see
256
+ // the results of completed fuses.
257
+ uintptr_t previous_or_tail =
258
+ upb_Atomic_Load(&ai->previous_or_tail, memory_order_acquire);
259
+ while (_upb_Arena_IsTaggedPrevious(previous_or_tail)) {
260
+ upb_ArenaInternal* previous =
261
+ _upb_Arena_PreviousFromTagged(previous_or_tail);
262
+ UPB_ASSERT(previous != ai);
263
+ UPB_TSAN_CHECK_PUBLISHED(previous);
264
+ // Unfortunate macro behavior; prior to C11 when using nonstandard atomics
265
+ // this returns a void* and can't be used with += without an intermediate
266
+ // conversion to an integer.
267
+ // Relaxed is safe - no subsequent reads depend this one
268
+ uintptr_t allocated =
269
+ upb_Atomic_Load(&previous->space_allocated, memory_order_relaxed);
270
+ memsize += allocated;
271
+ previous_or_tail =
272
+ upb_Atomic_Load(&previous->previous_or_tail, memory_order_acquire);
273
+ local_fused_count++;
274
+ }
203
275
  while (ai != NULL) {
204
- upb_MemBlock* block = upb_Atomic_Load(&ai->blocks, memory_order_relaxed);
205
- while (block != NULL) {
206
- memsize += sizeof(upb_MemBlock) + block->size;
207
- block = upb_Atomic_Load(&block->next, memory_order_relaxed);
208
- }
209
- ai = upb_Atomic_Load(&ai->next, memory_order_relaxed);
276
+ UPB_TSAN_CHECK_PUBLISHED(ai);
277
+ // Unfortunate macro behavior; prior to C11 when using nonstandard atomics
278
+ // this returns a void* and can't be used with += without an intermediate
279
+ // conversion to an integer.
280
+ // Relaxed is safe - no subsequent reads depend this one
281
+ uintptr_t allocated =
282
+ upb_Atomic_Load(&ai->space_allocated, memory_order_relaxed);
283
+ memsize += allocated;
284
+ ai = upb_Atomic_Load(&ai->next, memory_order_acquire);
210
285
  local_fused_count++;
211
286
  }
212
287
 
@@ -214,98 +289,143 @@ size_t upb_Arena_SpaceAllocated(upb_Arena* arena, size_t* fused_count) {
214
289
  return memsize;
215
290
  }
216
291
 
217
- bool UPB_PRIVATE(_upb_Arena_Contains)(const upb_Arena* a, void* ptr) {
218
- upb_ArenaInternal* ai = upb_Arena_Internal(a);
219
- UPB_ASSERT(ai);
220
-
221
- upb_MemBlock* block = upb_Atomic_Load(&ai->blocks, memory_order_relaxed);
222
- while (block) {
223
- uintptr_t beg = (uintptr_t)block;
224
- uintptr_t end = beg + block->size;
225
- if ((uintptr_t)ptr >= beg && (uintptr_t)ptr < end) return true;
226
- block = upb_Atomic_Load(&block->next, memory_order_relaxed);
227
- }
228
-
229
- return false;
230
- }
231
-
232
- uint32_t upb_Arena_DebugRefCount(upb_Arena* a) {
233
- upb_ArenaInternal* ai = upb_Arena_Internal(a);
234
- // These loads could probably be relaxed, but given that this is debug-only,
235
- // it's not worth introducing a new variant for it.
236
- uintptr_t poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
237
- while (_upb_Arena_IsTaggedPointer(poc)) {
238
- ai = _upb_Arena_PointerFromTagged(poc);
239
- poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
240
- }
241
- return _upb_Arena_RefCountFromTagged(poc);
292
+ uint32_t upb_Arena_DebugRefCount(const upb_Arena* a) {
293
+ uintptr_t tagged = _upb_Arena_FindRoot(upb_Arena_Internal(a)).tagged_count;
294
+ return (uint32_t)_upb_Arena_RefCountFromTagged(tagged);
242
295
  }
243
296
 
244
- static void _upb_Arena_AddBlock(upb_Arena* a, void* ptr, size_t size) {
297
+ // Adds an allocated block to the head of the list.
298
+ static void _upb_Arena_AddBlock(upb_Arena* a, void* ptr, size_t offset,
299
+ size_t block_size) {
245
300
  upb_ArenaInternal* ai = upb_Arena_Internal(a);
246
301
  upb_MemBlock* block = ptr;
247
302
 
248
- // Insert into linked list.
249
- block->size = (uint32_t)size;
250
- upb_Atomic_Init(&block->next, ai->blocks);
251
- upb_Atomic_Store(&ai->blocks, block, memory_order_release);
252
-
253
- a->UPB_PRIVATE(ptr) = UPB_PTR_AT(block, kUpb_MemblockReserve, char);
254
- a->UPB_PRIVATE(end) = UPB_PTR_AT(block, size, char);
255
-
256
- UPB_POISON_MEMORY_REGION(a->UPB_PRIVATE(ptr),
257
- a->UPB_PRIVATE(end) - a->UPB_PRIVATE(ptr));
303
+ block->size_or_hint = block_size;
304
+ UPB_ASSERT(offset >= kUpb_MemblockReserve);
305
+ char* start = UPB_PTR_AT(block, offset, char);
306
+ upb_MemBlock* head = ai->blocks;
307
+ if (head && head->next) {
308
+ // Fix up size to match actual allocation size
309
+ head->size_or_hint = a->UPB_PRIVATE(end) - (char*)head;
310
+ }
311
+ block->next = head;
312
+ ai->blocks = block;
313
+ a->UPB_PRIVATE(ptr) = start;
314
+ a->UPB_PRIVATE(end) = UPB_PTR_AT(block, block_size, char);
315
+ UPB_POISON_MEMORY_REGION(start, a->UPB_PRIVATE(end) - start);
316
+ UPB_ASSERT(UPB_PRIVATE(_upb_ArenaHas)(a) >= block_size - offset);
258
317
  }
259
318
 
260
- static bool _upb_Arena_AllocBlock(upb_Arena* a, size_t size) {
319
+ // Fulfills the allocation request by allocating a new block. Returns NULL on
320
+ // allocation failure.
321
+ void* UPB_PRIVATE(_upb_Arena_SlowMalloc)(upb_Arena* a, size_t size) {
261
322
  upb_ArenaInternal* ai = upb_Arena_Internal(a);
262
- if (!ai->block_alloc) return false;
263
- upb_MemBlock* last_block = upb_Atomic_Load(&ai->blocks, memory_order_acquire);
264
- size_t last_size = last_block != NULL ? last_block->size : 128;
323
+ if (!ai->block_alloc) return NULL;
324
+ size_t last_size = 128;
325
+ size_t current_free = 0;
326
+ upb_MemBlock* last_block = ai->blocks;
327
+ if (last_block) {
328
+ last_size = a->UPB_PRIVATE(end) - (char*)last_block;
329
+ current_free = a->UPB_PRIVATE(end) - a->UPB_PRIVATE(ptr);
330
+ }
265
331
 
266
- // Don't naturally grow beyond the max block size.
267
- size_t clamped_size = UPB_MIN(last_size * 2, max_block_size);
332
+ // Relaxed order is safe here as we don't need any ordering with the setter.
333
+ size_t max_block_size =
334
+ upb_Atomic_Load(&g_max_block_size, memory_order_relaxed);
268
335
 
336
+ // Don't naturally grow beyond the max block size.
337
+ size_t target_size = UPB_MIN(last_size * 2, max_block_size);
338
+ size_t future_free = UPB_MAX(size, target_size - kUpb_MemblockReserve) - size;
339
+ // We want to preserve exponential growth in block size without wasting too
340
+ // much unused space at the end of blocks. Once the head of our blocks list is
341
+ // large enough to always trigger a max-sized block for all subsequent
342
+ // allocations, allocate blocks that would net reduce free space behind it.
343
+ if (last_block && current_free > future_free &&
344
+ target_size < max_block_size) {
345
+ last_size = last_block->size_or_hint;
346
+ // Recalculate sizes with possibly larger last_size
347
+ target_size = UPB_MIN(last_size * 2, max_block_size);
348
+ future_free = UPB_MAX(size, target_size - kUpb_MemblockReserve) - size;
349
+ }
350
+ bool insert_after_head = false;
351
+ // Only insert after head if an allocated block is present; we don't want to
352
+ // continue allocating out of the initial block because we'll have no way of
353
+ // restoring the size of our allocated block if we add another.
354
+ if (last_block && current_free >= future_free) {
355
+ // If we're still going to net reduce free space with this new block, then
356
+ // only allocate the precise size requested and keep the current last block
357
+ // as the active block for future allocations.
358
+ insert_after_head = true;
359
+ target_size = size + kUpb_MemblockReserve;
360
+ // Add something to our previous size each time, so that eventually we
361
+ // will reach the max block size. Allocations larger than the max block size
362
+ // will always get their own backing allocation, so don't include them.
363
+ if (target_size <= max_block_size) {
364
+ last_block->size_or_hint =
365
+ UPB_MIN(last_block->size_or_hint + (size >> 1), max_block_size >> 1);
366
+ }
367
+ }
269
368
  // We may need to exceed the max block size if the user requested a large
270
369
  // allocation.
271
- size_t block_size = UPB_MAX(size, clamped_size) + kUpb_MemblockReserve;
370
+ size_t block_size = UPB_MAX(kUpb_MemblockReserve + size, target_size);
272
371
 
273
372
  upb_MemBlock* block =
274
373
  upb_malloc(_upb_ArenaInternal_BlockAlloc(ai), block_size);
275
374
 
276
- if (!block) return false;
277
- _upb_Arena_AddBlock(a, block, block_size);
278
- UPB_ASSERT(UPB_PRIVATE(_upb_ArenaHas)(a) >= size);
279
- return true;
280
- }
281
-
282
- void* UPB_PRIVATE(_upb_Arena_SlowMalloc)(upb_Arena* a, size_t size) {
283
- if (!_upb_Arena_AllocBlock(a, size)) return NULL; // OOM
284
- return upb_Arena_Malloc(a, size - UPB_ASAN_GUARD_SIZE);
375
+ if (!block) return NULL;
376
+ // Atomic add not required here, as threads won't race allocating blocks, plus
377
+ // atomic fetch-add is slower than load/add/store on arm devices compiled
378
+ // targetting pre-v8.1. Relaxed order is safe as nothing depends on order of
379
+ // size allocated.
380
+
381
+ uintptr_t old_space_allocated =
382
+ upb_Atomic_Load(&ai->space_allocated, memory_order_relaxed);
383
+ upb_Atomic_Store(&ai->space_allocated, old_space_allocated + block_size,
384
+ memory_order_relaxed);
385
+ if (UPB_UNLIKELY(insert_after_head)) {
386
+ upb_ArenaInternal* ai = upb_Arena_Internal(a);
387
+ block->size_or_hint = block_size;
388
+ upb_MemBlock* head = ai->blocks;
389
+ block->next = head->next;
390
+ head->next = block;
391
+
392
+ char* allocated = UPB_PTR_AT(block, kUpb_MemblockReserve, char);
393
+ UPB_POISON_MEMORY_REGION(allocated + size, UPB_ASAN_GUARD_SIZE);
394
+ return allocated;
395
+ } else {
396
+ _upb_Arena_AddBlock(a, block, kUpb_MemblockReserve, block_size);
397
+ UPB_ASSERT(UPB_PRIVATE(_upb_ArenaHas)(a) >= size);
398
+ return upb_Arena_Malloc(a, size - UPB_ASAN_GUARD_SIZE);
399
+ }
285
400
  }
286
401
 
287
- static upb_Arena* _upb_Arena_InitSlow(upb_alloc* alloc) {
402
+ static upb_Arena* _upb_Arena_InitSlow(upb_alloc* alloc, size_t first_size) {
288
403
  const size_t first_block_overhead =
289
- sizeof(upb_ArenaState) + kUpb_MemblockReserve;
404
+ UPB_ALIGN_MALLOC(kUpb_MemblockReserve + sizeof(upb_ArenaState));
290
405
  upb_ArenaState* a;
291
406
 
292
407
  // We need to malloc the initial block.
293
408
  char* mem;
294
- size_t n = first_block_overhead + 256;
295
- if (!alloc || !(mem = upb_malloc(alloc, n))) {
409
+ size_t block_size =
410
+ first_block_overhead +
411
+ UPB_MAX(256, UPB_ALIGN_MALLOC(first_size) + UPB_ASAN_GUARD_SIZE);
412
+ if (!alloc || !(mem = upb_malloc(alloc, block_size))) {
296
413
  return NULL;
297
414
  }
298
415
 
299
- a = UPB_PTR_AT(mem, n - sizeof(upb_ArenaState), upb_ArenaState);
300
- n -= sizeof(upb_ArenaState);
416
+ a = UPB_PTR_AT(mem, kUpb_MemblockReserve, upb_ArenaState);
301
417
 
302
418
  a->body.block_alloc = _upb_Arena_MakeBlockAlloc(alloc, 0);
303
419
  upb_Atomic_Init(&a->body.parent_or_count, _upb_Arena_TaggedFromRefcount(1));
304
420
  upb_Atomic_Init(&a->body.next, NULL);
305
- upb_Atomic_Init(&a->body.tail, &a->body);
306
- upb_Atomic_Init(&a->body.blocks, NULL);
421
+ upb_Atomic_Init(&a->body.previous_or_tail,
422
+ _upb_Arena_TaggedFromTail(&a->body));
423
+ upb_Atomic_Init(&a->body.space_allocated, block_size);
424
+ a->body.blocks = NULL;
425
+ a->body.upb_alloc_cleanup = NULL;
426
+ UPB_TSAN_INIT_PUBLISHED(&a->body);
307
427
 
308
- _upb_Arena_AddBlock(&a->head, mem, n);
428
+ _upb_Arena_AddBlock(&a->head, mem, first_block_overhead, block_size);
309
429
 
310
430
  return &a->head;
311
431
  }
@@ -314,38 +434,34 @@ upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc) {
314
434
  UPB_ASSERT(sizeof(void*) * UPB_ARENA_SIZE_HACK >= sizeof(upb_ArenaState));
315
435
  upb_ArenaState* a;
316
436
 
317
- if (n) {
437
+ if (mem) {
318
438
  /* Align initial pointer up so that we return properly-aligned pointers. */
319
- void* aligned = (void*)UPB_ALIGN_UP((uintptr_t)mem, UPB_MALLOC_ALIGN);
439
+ void* aligned = (void*)UPB_ALIGN_MALLOC((uintptr_t)mem);
320
440
  size_t delta = (uintptr_t)aligned - (uintptr_t)mem;
321
441
  n = delta <= n ? n - delta : 0;
322
442
  mem = aligned;
323
443
  }
324
-
325
- /* Round block size down to alignof(*a) since we will allocate the arena
326
- * itself at the end. */
327
- n = UPB_ALIGN_DOWN(n, UPB_ALIGN_OF(upb_ArenaState));
328
-
329
- if (UPB_UNLIKELY(n < sizeof(upb_ArenaState))) {
444
+ if (UPB_UNLIKELY(n < sizeof(upb_ArenaState) || !mem)) {
445
+ upb_Arena* ret = _upb_Arena_InitSlow(alloc, mem ? 0 : n);
330
446
  #ifdef UPB_TRACING_ENABLED
331
- upb_Arena* ret = _upb_Arena_InitSlow(alloc);
332
447
  upb_Arena_LogInit(ret, n);
333
- return ret;
334
- #else
335
- return _upb_Arena_InitSlow(alloc);
336
448
  #endif
449
+ return ret;
337
450
  }
338
451
 
339
- a = UPB_PTR_AT(mem, n - sizeof(upb_ArenaState), upb_ArenaState);
452
+ a = mem;
340
453
 
341
454
  upb_Atomic_Init(&a->body.parent_or_count, _upb_Arena_TaggedFromRefcount(1));
342
455
  upb_Atomic_Init(&a->body.next, NULL);
343
- upb_Atomic_Init(&a->body.tail, &a->body);
344
- upb_Atomic_Init(&a->body.blocks, NULL);
345
-
456
+ upb_Atomic_Init(&a->body.previous_or_tail,
457
+ _upb_Arena_TaggedFromTail(&a->body));
458
+ upb_Atomic_Init(&a->body.space_allocated, 0);
459
+ a->body.blocks = NULL;
460
+ a->body.upb_alloc_cleanup = NULL;
346
461
  a->body.block_alloc = _upb_Arena_MakeBlockAlloc(alloc, 1);
347
- a->head.UPB_PRIVATE(ptr) = mem;
348
- a->head.UPB_PRIVATE(end) = UPB_PTR_AT(mem, n - sizeof(upb_ArenaState), char);
462
+ a->head.UPB_PRIVATE(ptr) = (void*)UPB_ALIGN_MALLOC((uintptr_t)(a + 1));
463
+ a->head.UPB_PRIVATE(end) = UPB_PTR_AT(mem, n, char);
464
+ UPB_TSAN_INIT_PUBLISHED(&a->body);
349
465
  #ifdef UPB_TRACING_ENABLED
350
466
  upb_Arena_LogInit(&a->head, n);
351
467
  #endif
@@ -355,28 +471,44 @@ upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc) {
355
471
  static void _upb_Arena_DoFree(upb_ArenaInternal* ai) {
356
472
  UPB_ASSERT(_upb_Arena_RefCountFromTagged(ai->parent_or_count) == 1);
357
473
  while (ai != NULL) {
474
+ UPB_TSAN_CHECK_PUBLISHED(ai);
358
475
  // Load first since arena itself is likely from one of its blocks.
359
476
  upb_ArenaInternal* next_arena =
360
477
  (upb_ArenaInternal*)upb_Atomic_Load(&ai->next, memory_order_acquire);
478
+ // Freeing may have memory barriers that confuse tsan, so assert immediately
479
+ // after load here
480
+ if (next_arena) {
481
+ UPB_TSAN_CHECK_PUBLISHED(next_arena);
482
+ }
361
483
  upb_alloc* block_alloc = _upb_ArenaInternal_BlockAlloc(ai);
362
- upb_MemBlock* block = upb_Atomic_Load(&ai->blocks, memory_order_acquire);
484
+ upb_MemBlock* block = ai->blocks;
485
+ if (block && block->next) {
486
+ block->size_or_hint =
487
+ upb_Arena_FromInternal(ai)->UPB_PRIVATE(end) - (char*)block;
488
+ }
489
+ upb_AllocCleanupFunc* alloc_cleanup = *ai->upb_alloc_cleanup;
363
490
  while (block != NULL) {
364
491
  // Load first since we are deleting block.
365
- upb_MemBlock* next_block =
366
- upb_Atomic_Load(&block->next, memory_order_acquire);
367
- upb_free(block_alloc, block);
492
+ upb_MemBlock* next_block = block->next;
493
+ upb_free_sized(block_alloc, block, block->size_or_hint);
368
494
  block = next_block;
369
495
  }
496
+ if (alloc_cleanup != NULL) {
497
+ alloc_cleanup(block_alloc);
498
+ }
370
499
  ai = next_arena;
371
500
  }
372
501
  }
373
502
 
374
503
  void upb_Arena_Free(upb_Arena* a) {
375
504
  upb_ArenaInternal* ai = upb_Arena_Internal(a);
505
+ // Cannot be replaced with _upb_Arena_FindRoot, as that provides only a
506
+ // relaxed read of the refcount if ai is already the root.
376
507
  uintptr_t poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
377
508
  retry:
378
509
  while (_upb_Arena_IsTaggedPointer(poc)) {
379
510
  ai = _upb_Arena_PointerFromTagged(poc);
511
+ UPB_TSAN_CHECK_PUBLISHED(ai);
380
512
  poc = upb_Atomic_Load(&ai->parent_or_count, memory_order_acquire);
381
513
  }
382
514
 
@@ -404,34 +536,126 @@ retry:
404
536
  goto retry;
405
537
  }
406
538
 
407
- static void _upb_Arena_DoFuseArenaLists(upb_ArenaInternal* const parent,
408
- upb_ArenaInternal* child) {
539
+ // Logically performs the following operation, in a way that is safe against
540
+ // racing fuses:
541
+ // ret = TAIL(parent)
542
+ // ret->next = child
543
+ // return ret
544
+ //
545
+ // The caller is therefore guaranteed that ret->next == child.
546
+ static upb_ArenaInternal* _upb_Arena_LinkForward(
547
+ upb_ArenaInternal* const parent, upb_ArenaInternal* child) {
548
+ UPB_TSAN_CHECK_PUBLISHED(parent);
549
+ uintptr_t parent_previous_or_tail =
550
+ upb_Atomic_Load(&parent->previous_or_tail, memory_order_acquire);
551
+
552
+ // Optimization: use parent->previous_or_tail to skip to TAIL(parent) in O(1)
553
+ // time when possible. This is the common case because we just fused into
554
+ // parent, suggesting that it should be a root with a cached tail.
555
+ //
556
+ // However, if there was a racing fuse, parent may no longer be a root, in
557
+ // which case we need to walk the entire list to find the tail. The tail
558
+ // pointer is also not guaranteed to be the true tail, so even when the
559
+ // optimization is taken, we still need to walk list nodes to find the true
560
+ // tail.
409
561
  upb_ArenaInternal* parent_tail =
410
- upb_Atomic_Load(&parent->tail, memory_order_relaxed);
562
+ _upb_Arena_IsTaggedTail(parent_previous_or_tail)
563
+ ? _upb_Arena_TailFromTagged(parent_previous_or_tail)
564
+ : parent;
565
+
566
+ UPB_TSAN_CHECK_PUBLISHED(parent_tail);
567
+ upb_ArenaInternal* parent_tail_next =
568
+ upb_Atomic_Load(&parent_tail->next, memory_order_acquire);
411
569
 
412
570
  do {
413
- // Our tail might be stale, but it will always converge to the true tail.
414
- upb_ArenaInternal* parent_tail_next =
415
- upb_Atomic_Load(&parent_tail->next, memory_order_relaxed);
571
+ // Walk the list to find the true tail (a node with next == NULL).
416
572
  while (parent_tail_next != NULL) {
417
573
  parent_tail = parent_tail_next;
574
+ UPB_TSAN_CHECK_PUBLISHED(parent_tail);
418
575
  parent_tail_next =
419
- upb_Atomic_Load(&parent_tail->next, memory_order_relaxed);
576
+ upb_Atomic_Load(&parent_tail->next, memory_order_acquire);
420
577
  }
578
+ } while (!upb_Atomic_CompareExchangeWeak( // Replace a NULL next with child.
579
+ &parent_tail->next, &parent_tail_next, child, memory_order_release,
580
+ memory_order_acquire));
421
581
 
422
- upb_ArenaInternal* displaced =
423
- upb_Atomic_Exchange(&parent_tail->next, child, memory_order_relaxed);
424
- parent_tail = upb_Atomic_Load(&child->tail, memory_order_relaxed);
582
+ return parent_tail;
583
+ }
425
584
 
426
- // If we displaced something that got installed racily, we can simply
427
- // reinstall it on our new tail.
428
- child = displaced;
429
- } while (child != NULL);
585
+ // Updates parent->previous_or_tail = child->previous_or_tail in hopes that the
586
+ // latter represents the true tail of the newly-combined list.
587
+ //
588
+ // This is a best-effort operation that may set the tail to a stale value, and
589
+ // may fail to update the tail at all.
590
+ void _upb_Arena_UpdateParentTail(upb_ArenaInternal* parent,
591
+ upb_ArenaInternal* child) {
592
+ // We are guaranteed that child->previous_or_tail is tagged, because we have
593
+ // just transitioned child from root -> non-root, which is an exclusive
594
+ // operation that can only happen once. So we are the exclusive updater of
595
+ // child->previous_or_tail that can transition it from tagged to untagged.
596
+ //
597
+ // However, we are not guaranteed that child->previous_or_tail is the true
598
+ // tail. A racing fuse may have appended to child's list but not yet updated
599
+ // child->previous_or_tail.
600
+ uintptr_t child_previous_or_tail =
601
+ upb_Atomic_Load(&child->previous_or_tail, memory_order_acquire);
602
+ upb_ArenaInternal* new_parent_tail =
603
+ _upb_Arena_TailFromTagged(child_previous_or_tail);
604
+ UPB_TSAN_CHECK_PUBLISHED(new_parent_tail);
605
+
606
+ // If another thread fused with parent, such that it is no longer a root,
607
+ // don't overwrite their previous pointer with our tail. Relaxed order is fine
608
+ // here as we only inspect the tag bit.
609
+ uintptr_t parent_previous_or_tail =
610
+ upb_Atomic_Load(&parent->previous_or_tail, memory_order_relaxed);
611
+ if (_upb_Arena_IsTaggedTail(parent_previous_or_tail)) {
612
+ upb_Atomic_CompareExchangeStrong(
613
+ &parent->previous_or_tail, &parent_previous_or_tail,
614
+ _upb_Arena_TaggedFromTail(new_parent_tail), memory_order_release,
615
+ memory_order_relaxed);
616
+ }
617
+ }
618
+
619
+ static void _upb_Arena_LinkBackward(upb_ArenaInternal* child,
620
+ upb_ArenaInternal* old_parent_tail) {
621
+ // Link child to parent going backwards, for SpaceAllocated. This transitions
622
+ // child->previous_or_tail from tail (tagged) to previous (untagged), after
623
+ // which its value is immutable.
624
+ //
625
+ // - We are guaranteed that no other threads are also attempting to perform
626
+ // this transition (tail -> previous), because we just updated
627
+ // old_parent_tail->next from NULL to non-NULL, an exclusive operation that
628
+ // can only happen once.
629
+ //
630
+ // - _upb_Arena_UpdateParentTail() uses CAS to ensure that it
631
+ // does not perform the reverse transition (previous -> tail).
632
+ //
633
+ // - We are guaranteed that old_parent_tail is the correct "previous" pointer,
634
+ // even in the presence of racing fuses that are adding more nodes to the
635
+ // list, because _upb_Arena_LinkForward() guarantees that:
636
+ // old_parent_tail->next == child.
637
+ upb_Atomic_Store(&child->previous_or_tail,
638
+ _upb_Arena_TaggedFromPrevious(old_parent_tail),
639
+ memory_order_release);
640
+ }
430
641
 
431
- upb_Atomic_Store(&parent->tail, parent_tail, memory_order_relaxed);
642
+ static void _upb_Arena_DoFuseArenaLists(upb_ArenaInternal* const parent,
643
+ upb_ArenaInternal* child) {
644
+ upb_ArenaInternal* old_parent_tail = _upb_Arena_LinkForward(parent, child);
645
+ _upb_Arena_UpdateParentTail(parent, child);
646
+ _upb_Arena_LinkBackward(child, old_parent_tail);
647
+ }
648
+
649
+ void upb_Arena_SetAllocCleanup(upb_Arena* a, upb_AllocCleanupFunc* func) {
650
+ UPB_TSAN_CHECK_READ(a->UPB_ONLYBITS(ptr));
651
+ upb_ArenaInternal* ai = upb_Arena_Internal(a);
652
+ UPB_ASSERT(ai->upb_alloc_cleanup == NULL);
653
+ ai->upb_alloc_cleanup = func;
432
654
  }
433
655
 
434
- static upb_ArenaInternal* _upb_Arena_DoFuse(upb_Arena* a1, upb_Arena* a2,
656
+ // Thread safe.
657
+ static upb_ArenaInternal* _upb_Arena_DoFuse(upb_ArenaInternal** ai1,
658
+ upb_ArenaInternal** ai2,
435
659
  uintptr_t* ref_delta) {
436
660
  // `parent_or_count` has two distinct modes
437
661
  // - parent pointer mode
@@ -440,11 +664,14 @@ static upb_ArenaInternal* _upb_Arena_DoFuse(upb_Arena* a1, upb_Arena* a2,
440
664
  // In parent pointer mode, it may change what pointer it refers to in the
441
665
  // tree, but it will always approach a root. Any operation that walks the
442
666
  // tree to the root may collapse levels of the tree concurrently.
443
- upb_ArenaRoot r1 = _upb_Arena_FindRoot(a1);
444
- upb_ArenaRoot r2 = _upb_Arena_FindRoot(a2);
667
+ upb_ArenaRoot r1 = _upb_Arena_FindRoot(*ai1);
668
+ upb_ArenaRoot r2 = _upb_Arena_FindRoot(*ai2);
445
669
 
446
670
  if (r1.root == r2.root) return r1.root; // Already fused.
447
671
 
672
+ *ai1 = r1.root;
673
+ *ai2 = r2.root;
674
+
448
675
  // Avoid cycles by always fusing into the root with the lower address.
449
676
  if ((uintptr_t)r1.root > (uintptr_t)r2.root) {
450
677
  upb_ArenaRoot tmp = r1;
@@ -490,20 +717,33 @@ static upb_ArenaInternal* _upb_Arena_DoFuse(upb_Arena* a1, upb_Arena* a2,
490
717
  return r1.root;
491
718
  }
492
719
 
720
+ // Thread safe.
493
721
  static bool _upb_Arena_FixupRefs(upb_ArenaInternal* new_root,
494
722
  uintptr_t ref_delta) {
495
723
  if (ref_delta == 0) return true; // No fixup required.
724
+ // Relaxed order is safe here as if the value is a pointer, we don't deref it
725
+ // or publish it anywhere else. The refcount does provide memory order
726
+ // between allocations on arenas and the eventual free and thus normally
727
+ // requires acquire/release; but in this case any edges provided by the refs
728
+ // we are cleaning up were already provided by the fuse operation itself. It's
729
+ // not valid for a decrement that could cause the overall fused arena to reach
730
+ // a zero refcount to race with this function, as that could result in a
731
+ // use-after-free anyway.
496
732
  uintptr_t poc =
497
733
  upb_Atomic_Load(&new_root->parent_or_count, memory_order_relaxed);
498
734
  if (_upb_Arena_IsTaggedPointer(poc)) return false;
499
735
  uintptr_t with_refs = poc - ref_delta;
500
736
  UPB_ASSERT(!_upb_Arena_IsTaggedPointer(with_refs));
737
+ // Relaxed order on success is safe here, for the same reasons as the relaxed
738
+ // read above. Relaxed order is safe on failure because the updated value is
739
+ // stored in a local variable which goes immediately out of scope; the retry
740
+ // loop will reread what it needs with proper memory order.
501
741
  return upb_Atomic_CompareExchangeStrong(&new_root->parent_or_count, &poc,
502
742
  with_refs, memory_order_relaxed,
503
743
  memory_order_relaxed);
504
744
  }
505
745
 
506
- bool upb_Arena_Fuse(upb_Arena* a1, upb_Arena* a2) {
746
+ bool upb_Arena_Fuse(const upb_Arena* a1, const upb_Arena* a2) {
507
747
  if (a1 == a2) return true; // trivial fuse
508
748
 
509
749
  #ifdef UPB_TRACING_ENABLED
@@ -523,25 +763,46 @@ bool upb_Arena_Fuse(upb_Arena* a1, upb_Arena* a2) {
523
763
  // The number of refs we ultimately need to transfer to the new root.
524
764
  uintptr_t ref_delta = 0;
525
765
  while (true) {
526
- upb_ArenaInternal* new_root = _upb_Arena_DoFuse(a1, a2, &ref_delta);
766
+ upb_ArenaInternal* new_root = _upb_Arena_DoFuse(&ai1, &ai2, &ref_delta);
527
767
  if (new_root != NULL && _upb_Arena_FixupRefs(new_root, ref_delta)) {
528
768
  return true;
529
769
  }
530
770
  }
531
771
  }
532
772
 
533
- bool upb_Arena_IncRefFor(upb_Arena* a, const void* owner) {
773
+ bool upb_Arena_IsFused(const upb_Arena* a, const upb_Arena* b) {
774
+ if (a == b) return true; // trivial fuse
775
+ upb_ArenaInternal* ra = _upb_Arena_FindRoot(upb_Arena_Internal(a)).root;
776
+ upb_ArenaInternal* rb = upb_Arena_Internal(b);
777
+ while (true) {
778
+ rb = _upb_Arena_FindRoot(rb).root;
779
+ if (ra == rb) return true;
780
+ upb_ArenaInternal* tmp = _upb_Arena_FindRoot(ra).root;
781
+ if (ra == tmp) return false;
782
+ // a's root changed since we last checked. Retry.
783
+ ra = tmp;
784
+ }
785
+ }
786
+
787
+ bool upb_Arena_IncRefFor(const upb_Arena* a, const void* owner) {
534
788
  upb_ArenaInternal* ai = upb_Arena_Internal(a);
535
789
  if (_upb_ArenaInternal_HasInitialBlock(ai)) return false;
536
790
  upb_ArenaRoot r;
791
+ r.root = ai;
537
792
 
538
793
  retry:
539
- r = _upb_Arena_FindRoot(a);
794
+ r = _upb_Arena_FindRoot(r.root);
540
795
  if (upb_Atomic_CompareExchangeWeak(
541
796
  &r.root->parent_or_count, &r.tagged_count,
542
797
  _upb_Arena_TaggedFromRefcount(
543
798
  _upb_Arena_RefCountFromTagged(r.tagged_count) + 1),
544
- memory_order_release, memory_order_acquire)) {
799
+ // Relaxed order is safe on success, incrementing the refcount
800
+ // need not perform any synchronization with the eventual free of the
801
+ // arena - that's provided by decrements.
802
+ memory_order_relaxed,
803
+ // Relaxed order is safe on failure as r.tagged_count is immediately
804
+ // overwritten by retrying the find root operation.
805
+ memory_order_relaxed)) {
545
806
  // We incremented it successfully, so we are done.
546
807
  return true;
547
808
  }
@@ -549,7 +810,15 @@ retry:
549
810
  goto retry;
550
811
  }
551
812
 
552
- void upb_Arena_DecRefFor(upb_Arena* a, const void* owner) { upb_Arena_Free(a); }
813
+ void upb_Arena_DecRefFor(const upb_Arena* a, const void* owner) {
814
+ upb_Arena_Free((upb_Arena*)a);
815
+ }
816
+
817
+ upb_alloc* upb_Arena_GetUpbAlloc(upb_Arena* a) {
818
+ UPB_TSAN_CHECK_READ(a->UPB_ONLYBITS(ptr));
819
+ upb_ArenaInternal* ai = upb_Arena_Internal(a);
820
+ return _upb_ArenaInternal_BlockAlloc(ai);
821
+ }
553
822
 
554
823
  void UPB_PRIVATE(_upb_Arena_SwapIn)(upb_Arena* des, const upb_Arena* src) {
555
824
  upb_ArenaInternal* desi = upb_Arena_Internal(des);
@@ -557,8 +826,7 @@ void UPB_PRIVATE(_upb_Arena_SwapIn)(upb_Arena* des, const upb_Arena* src) {
557
826
 
558
827
  *des = *src;
559
828
  desi->block_alloc = srci->block_alloc;
560
- upb_MemBlock* blocks = upb_Atomic_Load(&srci->blocks, memory_order_relaxed);
561
- upb_Atomic_Init(&desi->blocks, blocks);
829
+ desi->blocks = srci->blocks;
562
830
  }
563
831
 
564
832
  void UPB_PRIVATE(_upb_Arena_SwapOut)(upb_Arena* des, const upb_Arena* src) {
@@ -566,6 +834,15 @@ void UPB_PRIVATE(_upb_Arena_SwapOut)(upb_Arena* des, const upb_Arena* src) {
566
834
  upb_ArenaInternal* srci = upb_Arena_Internal(src);
567
835
 
568
836
  *des = *src;
569
- upb_MemBlock* blocks = upb_Atomic_Load(&srci->blocks, memory_order_relaxed);
570
- upb_Atomic_Store(&desi->blocks, blocks, memory_order_relaxed);
837
+ desi->blocks = srci->blocks;
838
+ }
839
+
840
+ bool _upb_Arena_WasLastAlloc(struct upb_Arena* a, void* ptr, size_t oldsize) {
841
+ upb_ArenaInternal* ai = upb_Arena_Internal(a);
842
+ upb_MemBlock* block = ai->blocks;
843
+ if (block == NULL) return false;
844
+ block = block->next;
845
+ if (block == NULL) return false;
846
+ char* start = UPB_PTR_AT(block, kUpb_MemblockReserve, char);
847
+ return ptr == start && oldsize == block->size_or_hint - kUpb_MemblockReserve;
571
848
  }