grpc 1.67.0 → 1.69.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2045) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +58 -46
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +1 -2
  5. data/include/grpc/event_engine/endpoint_config.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +12 -9
  7. data/include/grpc/event_engine/extensible.h +2 -2
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  9. data/include/grpc/event_engine/memory_allocator.h +3 -4
  10. data/include/grpc/event_engine/memory_request.h +1 -2
  11. data/include/grpc/event_engine/slice.h +3 -4
  12. data/include/grpc/event_engine/slice_buffer.h +6 -7
  13. data/include/grpc/grpc.h +1 -2
  14. data/include/grpc/grpc_audit_logging.h +3 -3
  15. data/include/grpc/grpc_crl_provider.h +4 -4
  16. data/include/grpc/grpc_posix.h +1 -2
  17. data/include/grpc/grpc_security.h +1 -2
  18. data/include/grpc/impl/call.h +2 -2
  19. data/include/grpc/impl/channel_arg_names.h +2 -0
  20. data/include/grpc/impl/grpc_types.h +1 -2
  21. data/include/grpc/impl/slice_type.h +1 -2
  22. data/include/grpc/passive_listener.h +2 -2
  23. data/include/grpc/support/alloc.h +1 -2
  24. data/include/grpc/support/json.h +1 -2
  25. data/include/grpc/support/log.h +1 -2
  26. data/include/grpc/support/metrics.h +7 -3
  27. data/include/grpc/support/port_platform.h +6 -1
  28. data/include/grpc/support/sync_posix.h +1 -2
  29. data/include/grpc/support/time.h +1 -2
  30. data/src/core/channelz/channel_trace.cc +5 -6
  31. data/src/core/channelz/channel_trace.h +5 -7
  32. data/src/core/channelz/channelz.cc +5 -6
  33. data/src/core/channelz/channelz.h +8 -10
  34. data/src/core/channelz/channelz_registry.cc +6 -7
  35. data/src/core/channelz/channelz_registry.h +4 -5
  36. data/src/core/client_channel/backup_poller.cc +21 -11
  37. data/src/core/client_channel/client_channel.cc +24 -20
  38. data/src/core/client_channel/client_channel.h +4 -2
  39. data/src/core/client_channel/client_channel_factory.cc +2 -2
  40. data/src/core/client_channel/client_channel_factory.h +1 -2
  41. data/src/core/client_channel/client_channel_filter.cc +27 -24
  42. data/src/core/client_channel/client_channel_filter.h +11 -11
  43. data/src/core/client_channel/client_channel_internal.h +2 -3
  44. data/src/core/client_channel/client_channel_plugin.cc +2 -4
  45. data/src/core/client_channel/client_channel_service_config.cc +2 -3
  46. data/src/core/client_channel/client_channel_service_config.h +4 -6
  47. data/src/core/client_channel/config_selector.h +4 -7
  48. data/src/core/client_channel/connector.h +3 -3
  49. data/src/core/client_channel/direct_channel.cc +3 -3
  50. data/src/core/client_channel/dynamic_filters.cc +10 -8
  51. data/src/core/client_channel/dynamic_filters.h +8 -7
  52. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  53. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  54. data/src/core/client_channel/lb_metadata.h +2 -3
  55. data/src/core/client_channel/load_balanced_call_destination.cc +2 -3
  56. data/src/core/client_channel/load_balanced_call_destination.h +0 -1
  57. data/src/core/client_channel/local_subchannel_pool.cc +2 -3
  58. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  59. data/src/core/client_channel/retry_filter.cc +5 -7
  60. data/src/core/client_channel/retry_filter.h +4 -7
  61. data/src/core/client_channel/retry_filter_legacy_call_data.cc +12 -12
  62. data/src/core/client_channel/retry_filter_legacy_call_data.h +11 -12
  63. data/src/core/client_channel/retry_service_config.cc +6 -8
  64. data/src/core/client_channel/retry_service_config.h +3 -5
  65. data/src/core/client_channel/retry_throttle.cc +3 -4
  66. data/src/core/client_channel/retry_throttle.h +4 -7
  67. data/src/core/client_channel/subchannel.cc +12 -15
  68. data/src/core/client_channel/subchannel.h +17 -16
  69. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  70. data/src/core/client_channel/subchannel_pool_interface.cc +1 -3
  71. data/src/core/client_channel/subchannel_pool_interface.h +2 -3
  72. data/src/core/client_channel/subchannel_stream_client.cc +6 -9
  73. data/src/core/client_channel/subchannel_stream_client.h +8 -10
  74. data/src/core/{lib/config → config}/config_vars.cc +4 -5
  75. data/src/core/{lib/config → config}/config_vars.h +4 -5
  76. data/src/core/{lib/config → config}/config_vars_non_generated.cc +3 -3
  77. data/src/core/{lib/config → config}/core_configuration.cc +4 -4
  78. data/src/core/{lib/config → config}/core_configuration.h +5 -6
  79. data/src/core/{lib/config → config}/load_config.cc +3 -5
  80. data/src/core/{lib/config → config}/load_config.h +4 -5
  81. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +9 -9
  82. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +0 -1
  83. data/src/core/ext/filters/census/grpc_context.cc +1 -2
  84. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  85. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  86. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -18
  87. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +6 -8
  88. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +10 -7
  89. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -3
  90. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -3
  91. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +4 -7
  92. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +55 -17
  93. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +28 -13
  94. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +2 -3
  95. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +2 -3
  96. data/src/core/ext/filters/http/client/http_client_filter.cc +12 -7
  97. data/src/core/ext/filters/http/client/http_client_filter.h +0 -1
  98. data/src/core/ext/filters/http/client_authority_filter.cc +7 -6
  99. data/src/core/ext/filters/http/client_authority_filter.h +0 -1
  100. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  101. data/src/core/ext/filters/http/message_compress/compression_filter.cc +24 -10
  102. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -4
  103. data/src/core/ext/filters/http/server/http_server_filter.cc +11 -6
  104. data/src/core/ext/filters/http/server/http_server_filter.h +0 -1
  105. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  106. data/src/core/ext/filters/message_size/message_size_filter.h +2 -4
  107. data/src/core/ext/filters/rbac/rbac_filter.cc +6 -6
  108. data/src/core/ext/filters/rbac/rbac_filter.h +0 -2
  109. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +14 -8
  110. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +2 -4
  111. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +11 -6
  112. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +2 -4
  113. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +2 -3
  114. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -5
  115. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -2
  116. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  117. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +20 -24
  118. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +4 -5
  119. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +151 -90
  120. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  122. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  123. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  124. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  125. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  126. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  127. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +152 -95
  128. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -6
  129. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -2
  130. data/src/core/ext/transport/chttp2/transport/decode_huff.h +4 -4
  131. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -5
  132. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -4
  133. data/src/core/ext/transport/chttp2/transport/frame.cc +22 -4
  134. data/src/core/ext/transport/chttp2/transport/frame.h +13 -4
  135. data/src/core/ext/transport/chttp2/transport/frame_data.cc +17 -13
  136. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -4
  137. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -5
  138. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  139. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -4
  140. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  141. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
  142. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  143. data/src/core/ext/transport/chttp2/transport/frame_security.cc +82 -0
  144. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  145. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -5
  146. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  147. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +21 -3
  148. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  149. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  150. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +10 -11
  151. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +6 -8
  152. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -2
  153. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +4 -5
  154. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  155. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -6
  156. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +4 -6
  157. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -5
  158. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -3
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -4
  160. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -2
  161. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -4
  162. data/src/core/ext/transport/chttp2/transport/internal.h +37 -99
  163. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  164. data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -9
  165. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +3 -3
  166. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  167. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  168. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -5
  169. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +4 -5
  170. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +2 -4
  171. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +4 -3
  172. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  173. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  174. data/src/core/ext/transport/chttp2/transport/varint.h +1 -2
  175. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  176. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +3 -4
  177. data/src/core/ext/transport/chttp2/transport/writing.cc +11 -11
  178. data/src/core/ext/transport/inproc/inproc_transport.cc +6 -7
  179. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +12 -14
  180. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +35 -4
  181. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +25 -18
  182. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  183. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +36 -4
  184. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +24 -18
  185. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  186. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +39 -4
  187. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +29 -22
  188. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  189. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +137 -4
  190. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +105 -84
  191. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  192. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +10 -4
  193. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +8 -4
  194. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  195. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +17 -4
  196. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +12 -8
  197. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  198. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +5 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +4 -1
  200. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  201. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +5 -4
  202. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -1
  203. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  204. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +5 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +4 -1
  206. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  207. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +19 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +16 -12
  209. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  210. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +7 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +7 -4
  212. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  213. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +5 -4
  214. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  215. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  216. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +7 -6
  217. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +10 -6
  218. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  219. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +61 -4
  220. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +66 -48
  221. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  222. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +183 -4
  223. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +131 -106
  224. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +28 -4
  225. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +31 -4
  226. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +22 -17
  227. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  228. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +185 -4
  229. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +149 -122
  230. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +30 -4
  231. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +9 -4
  232. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +8 -5
  233. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  234. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +56 -4
  235. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +30 -27
  236. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  237. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +96 -4
  238. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +80 -63
  239. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +44 -4
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +36 -26
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  243. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +9 -4
  244. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +8 -5
  245. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  246. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +109 -4
  247. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +108 -77
  248. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +34 -4
  249. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +46 -4
  250. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +36 -27
  251. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +7 -4
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +7 -4
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +7 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +7 -4
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +10 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +8 -4
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +71 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +61 -45
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +92 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +55 -44
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +12 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +8 -5
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +7 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +7 -4
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +99 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +85 -67
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +7 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +8 -4
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +12 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +9 -5
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +10 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +8 -4
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +7 -4
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +16 -4
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +11 -7
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +9 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +8 -5
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  291. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +35 -4
  292. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +23 -17
  293. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  294. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +48 -4
  295. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +41 -32
  296. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  297. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +44 -4
  298. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +27 -19
  299. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +11 -4
  300. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +7 -4
  301. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +7 -4
  302. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  303. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +83 -4
  304. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +53 -41
  305. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  306. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +66 -4
  307. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +47 -38
  308. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +12 -4
  309. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +27 -4
  310. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +17 -14
  311. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  312. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +11 -4
  313. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +10 -6
  314. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  315. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +9 -4
  316. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +8 -5
  317. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  318. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -4
  319. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +34 -24
  320. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  321. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +51 -4
  322. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +41 -29
  323. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  324. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +96 -4
  325. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +68 -55
  326. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +16 -4
  327. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -4
  328. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +24 -19
  329. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  330. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +435 -4
  331. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +306 -246
  332. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +63 -4
  333. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +14 -4
  334. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +13 -8
  335. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  336. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +69 -4
  337. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +59 -45
  338. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  339. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +9 -4
  340. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +11 -7
  341. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +7 -4
  342. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +7 -4
  343. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +7 -4
  344. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  345. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +9 -4
  346. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +11 -7
  347. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  348. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +7 -4
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +7 -4
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +11 -4
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +9 -6
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +6 -4
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +16 -4
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +10 -7
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +7 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +7 -4
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +11 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +12 -8
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -1
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -4
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +13 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +13 -9
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +7 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +7 -4
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  372. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +102 -4
  373. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +72 -54
  374. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  375. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  376. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +4 -1
  377. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  378. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +17 -4
  379. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +18 -11
  380. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  381. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +24 -4
  382. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +18 -13
  383. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  384. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +17 -4
  385. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +17 -11
  386. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +9 -4
  387. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +15 -4
  388. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +14 -10
  389. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +21 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +14 -10
  392. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +9 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +11 -7
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +181 -4
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +132 -109
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  399. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +7 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +7 -4
  401. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  402. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +17 -4
  403. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +12 -9
  404. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +6 -4
  405. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +21 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +24 -17
  407. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  408. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +5 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +4 -1
  410. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  411. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +15 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +11 -8
  413. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  414. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +7 -4
  415. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +7 -4
  416. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  417. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +106 -0
  418. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +52 -0
  419. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  420. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  422. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  423. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +59 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +42 -32
  425. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +13 -4
  426. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +17 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +18 -13
  428. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  429. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +77 -4
  430. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +52 -43
  431. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +11 -7
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  435. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +42 -4
  436. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +32 -26
  437. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  438. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  439. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +4 -1
  440. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  441. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +86 -4
  442. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +63 -47
  443. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +19 -4
  444. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +14 -4
  445. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +12 -8
  446. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  447. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +45 -4
  448. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +32 -25
  449. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  450. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -4
  451. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +7 -4
  452. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  453. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +14 -4
  454. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +14 -8
  455. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  456. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +7 -4
  457. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +7 -4
  458. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  459. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +5 -4
  460. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +8 -1
  461. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  462. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +12 -4
  463. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +9 -5
  464. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  465. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +12 -4
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +8 -5
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +7 -4
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +7 -4
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +7 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +7 -4
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +11 -4
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +15 -10
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +5 -1
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +14 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +12 -8
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +12 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +9 -5
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +22 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +20 -14
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  489. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +18 -4
  490. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +19 -10
  491. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  492. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +17 -4
  493. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +18 -11
  494. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  495. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +9 -4
  496. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +10 -5
  497. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  498. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  499. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  500. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  501. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +5 -4
  502. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +4 -1
  503. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  504. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +5 -4
  505. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +5 -1
  506. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  507. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +5 -4
  508. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +6 -1
  509. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  510. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +9 -4
  511. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +9 -5
  512. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  513. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  515. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  516. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +5 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +4 -1
  518. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  519. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +9 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +8 -5
  521. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  522. data/src/core/ext/upb-gen/google/api/annotations.upb.h +7 -6
  523. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  524. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  525. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +87 -4
  526. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +69 -54
  527. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  528. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +85 -4
  529. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +71 -53
  530. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +21 -4
  531. data/src/core/ext/upb-gen/google/api/http.upb.h +18 -4
  532. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +13 -8
  533. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  534. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +10 -4
  535. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +7 -4
  536. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  537. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +6 -4
  538. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +4 -1
  539. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  540. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +202 -4
  541. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +241 -206
  542. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +55 -21
  543. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +6 -4
  544. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +4 -1
  545. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  546. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  547. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +4 -1
  548. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  549. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +27 -4
  550. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +20 -14
  551. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  552. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +6 -4
  553. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +4 -1
  554. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  555. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +6 -4
  556. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +12 -1
  557. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  558. data/src/core/ext/upb-gen/google/rpc/status.upb.h +10 -4
  559. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +7 -4
  560. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  561. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +12 -4
  562. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +12 -6
  563. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +9 -4
  564. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +13 -4
  565. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +9 -5
  566. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  567. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +63 -4
  568. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +51 -37
  569. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  570. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +10 -4
  571. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +9 -5
  572. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  573. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +6 -4
  574. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +5 -1
  575. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  576. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +29 -4
  577. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +31 -20
  578. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  579. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +9 -4
  581. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  582. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +57 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +33 -22
  584. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  585. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +15 -14
  586. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +22 -12
  587. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  588. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +7 -6
  589. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +10 -6
  590. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  591. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +5 -4
  592. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  593. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  594. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +7 -6
  595. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +10 -6
  596. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  597. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +7 -6
  598. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +10 -6
  599. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  600. data/src/core/ext/upb-gen/validate/validate.upb.h +89 -6
  601. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +116 -87
  602. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  603. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +15 -14
  604. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +22 -12
  605. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  606. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +7 -6
  607. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +10 -6
  608. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  609. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +5 -4
  610. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  611. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  612. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +11 -10
  613. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +20 -11
  614. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  615. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +7 -6
  616. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +10 -6
  617. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  618. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +5 -4
  619. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +4 -1
  620. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  621. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +7 -4
  622. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +7 -4
  623. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  624. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +11 -4
  625. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +12 -8
  626. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  627. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  628. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +8 -4
  629. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  630. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +7 -4
  631. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +7 -4
  632. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  633. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +9 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +8 -5
  635. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  636. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +14 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +12 -8
  638. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +7 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +7 -4
  641. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  642. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +23 -4
  643. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +12 -6
  644. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  645. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +7 -4
  646. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +7 -4
  647. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  648. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -4
  649. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +7 -4
  650. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  651. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +12 -4
  652. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +11 -7
  653. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  654. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  655. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +4 -1
  656. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  657. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +17 -4
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +12 -8
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +63 -4
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +55 -43
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +41 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +30 -22
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +7 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +8 -4
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +12 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +11 -7
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  672. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +13 -4
  673. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +13 -9
  674. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  675. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +6 -4
  676. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +6 -1
  677. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  678. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +7 -4
  679. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +7 -4
  680. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  681. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  682. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  683. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  684. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  685. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  686. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  687. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +2 -1
  688. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  689. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  690. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  692. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  720. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  721. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  724. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +2 -1
  726. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  730. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +2 -1
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  763. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -4
  767. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +2 -1
  768. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  774. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +2 -1
  778. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  781. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2 -1
  782. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  785. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  792. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +2 -1
  796. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +5 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  800. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +2 -1
  820. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +53 -0
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -4
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  843. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  845. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +2 -1
  846. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -4
  847. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +2 -1
  850. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  851. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  859. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  862. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  863. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  890. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +486 -484
  912. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  914. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  915. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  916. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  920. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  922. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  923. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  930. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  931. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  989. data/src/core/filter/blackboard.cc +33 -0
  990. data/src/core/filter/blackboard.h +70 -0
  991. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +4 -5
  992. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  993. data/src/core/handshaker/handshaker.cc +8 -11
  994. data/src/core/handshaker/handshaker.h +8 -10
  995. data/src/core/handshaker/handshaker_registry.cc +1 -2
  996. data/src/core/handshaker/handshaker_registry.h +2 -2
  997. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +14 -11
  998. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  999. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +7 -9
  1000. data/src/core/handshaker/http_connect/http_proxy_mapper.h +3 -4
  1001. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1002. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1003. data/src/core/handshaker/proxy_mapper.h +2 -3
  1004. data/src/core/handshaker/proxy_mapper_registry.cc +2 -2
  1005. data/src/core/handshaker/proxy_mapper_registry.h +2 -3
  1006. data/src/core/handshaker/security/secure_endpoint.cc +12 -14
  1007. data/src/core/handshaker/security/secure_endpoint.h +2 -3
  1008. data/src/core/handshaker/security/security_handshaker.cc +15 -21
  1009. data/src/core/handshaker/security/security_handshaker.h +3 -4
  1010. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +10 -11
  1011. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1012. data/src/core/lib/address_utils/parse_address.cc +3 -4
  1013. data/src/core/lib/address_utils/parse_address.h +2 -4
  1014. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -6
  1015. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1016. data/src/core/lib/channel/call_finalization.h +2 -2
  1017. data/src/core/lib/channel/channel_args.cc +4 -6
  1018. data/src/core/lib/channel/channel_args.h +11 -13
  1019. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1020. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  1021. data/src/core/lib/channel/channel_stack.cc +5 -4
  1022. data/src/core/lib/channel/channel_stack.h +17 -17
  1023. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1024. data/src/core/lib/channel/channel_stack_builder.h +3 -4
  1025. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -7
  1026. data/src/core/lib/channel/channel_stack_builder_impl.h +15 -3
  1027. data/src/core/lib/channel/connected_channel.cc +9 -11
  1028. data/src/core/lib/channel/promise_based_filter.cc +33 -24
  1029. data/src/core/lib/channel/promise_based_filter.h +45 -16
  1030. data/src/core/lib/channel/status_util.cc +1 -3
  1031. data/src/core/lib/channel/status_util.h +3 -3
  1032. data/src/core/lib/compression/compression.cc +3 -5
  1033. data/src/core/lib/compression/compression_internal.cc +5 -7
  1034. data/src/core/lib/compression/compression_internal.h +3 -5
  1035. data/src/core/lib/compression/message_compress.cc +3 -6
  1036. data/src/core/lib/debug/trace.cc +5 -6
  1037. data/src/core/lib/debug/trace_flags.cc +1 -2
  1038. data/src/core/lib/debug/trace_impl.h +2 -2
  1039. data/src/core/lib/event_engine/ares_resolver.cc +11 -15
  1040. data/src/core/lib/event_engine/ares_resolver.h +7 -10
  1041. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -4
  1042. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  1043. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +1 -2
  1044. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +4 -6
  1045. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +9 -7
  1046. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -5
  1047. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +3 -4
  1048. data/src/core/lib/event_engine/channel_args_endpoint_config.h +2 -3
  1049. data/src/core/lib/event_engine/common_closures.h +3 -3
  1050. data/src/core/lib/event_engine/default_event_engine.cc +7 -8
  1051. data/src/core/lib/event_engine/default_event_engine.h +4 -4
  1052. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -2
  1053. data/src/core/lib/event_engine/default_event_engine_factory.h +2 -2
  1054. data/src/core/lib/event_engine/event_engine.cc +2 -2
  1055. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  1056. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -2
  1057. data/src/core/lib/event_engine/extensions/supports_fd.h +20 -3
  1058. data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -1
  1059. data/src/core/lib/event_engine/forkable.cc +3 -3
  1060. data/src/core/lib/event_engine/forkable.h +2 -2
  1061. data/src/core/lib/event_engine/grpc_polled_fd.h +3 -4
  1062. data/src/core/lib/event_engine/handle_containers.h +2 -3
  1063. data/src/core/lib/event_engine/memory_allocator_factory.h +3 -4
  1064. data/src/core/lib/event_engine/nameser.h +1 -1
  1065. data/src/core/lib/event_engine/poller.h +2 -2
  1066. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -12
  1067. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +4 -5
  1068. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +17 -20
  1069. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +4 -5
  1070. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -4
  1071. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +4 -5
  1072. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  1073. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -6
  1074. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -3
  1075. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +1 -2
  1076. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +5 -6
  1077. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -3
  1078. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -3
  1079. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -3
  1080. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +15 -17
  1081. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -9
  1082. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +44 -28
  1083. data/src/core/lib/event_engine/posix_engine/posix_engine.h +16 -14
  1084. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
  1085. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +7 -9
  1086. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +12 -11
  1087. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -6
  1088. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  1089. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +8 -11
  1090. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -8
  1091. data/src/core/lib/event_engine/posix_engine/timer.cc +4 -4
  1092. data/src/core/lib/event_engine/posix_engine/timer.h +5 -7
  1093. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -3
  1094. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  1095. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -4
  1096. data/src/core/lib/event_engine/posix_engine/timer_manager.h +5 -7
  1097. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +5 -7
  1098. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -5
  1099. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +5 -6
  1100. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -3
  1101. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +4 -5
  1102. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -3
  1103. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  1104. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -3
  1105. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  1106. data/src/core/lib/event_engine/query_extensions.h +2 -2
  1107. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +3 -5
  1108. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  1109. data/src/core/lib/event_engine/slice.cc +3 -5
  1110. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  1111. data/src/core/lib/event_engine/tcp_socket_utils.cc +3 -10
  1112. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -3
  1113. data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
  1114. data/src/core/lib/event_engine/thread_pool/thread_count.h +5 -6
  1115. data/src/core/lib/event_engine/thread_pool/thread_pool.h +2 -4
  1116. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -3
  1117. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +9 -11
  1118. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +7 -9
  1119. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +5 -5
  1120. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
  1121. data/src/core/lib/event_engine/time_util.cc +2 -2
  1122. data/src/core/lib/event_engine/time_util.h +1 -2
  1123. data/src/core/lib/event_engine/utils.cc +19 -5
  1124. data/src/core/lib/event_engine/utils.h +10 -4
  1125. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +5 -8
  1126. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -6
  1127. data/src/core/lib/event_engine/windows/iocp.cc +4 -5
  1128. data/src/core/lib/event_engine/windows/iocp.h +1 -2
  1129. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +4 -6
  1130. data/src/core/lib/event_engine/windows/win_socket.cc +4 -5
  1131. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  1132. data/src/core/lib/event_engine/windows/windows_endpoint.cc +28 -15
  1133. data/src/core/lib/event_engine/windows/windows_engine.cc +10 -11
  1134. data/src/core/lib/event_engine/windows/windows_engine.h +8 -9
  1135. data/src/core/lib/event_engine/windows/windows_listener.cc +2 -3
  1136. data/src/core/lib/event_engine/windows/windows_listener.h +4 -5
  1137. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +3 -3
  1138. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +3 -5
  1139. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -3
  1140. data/src/core/lib/experiments/config.cc +9 -12
  1141. data/src/core/lib/experiments/config.h +1 -2
  1142. data/src/core/lib/experiments/experiments.cc +203 -28
  1143. data/src/core/lib/experiments/experiments.h +76 -15
  1144. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  1145. data/src/core/lib/iomgr/buffer_list.h +2 -3
  1146. data/src/core/lib/iomgr/call_combiner.cc +2 -4
  1147. data/src/core/lib/iomgr/call_combiner.h +6 -8
  1148. data/src/core/lib/iomgr/cfstream_handle.cc +2 -4
  1149. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1150. data/src/core/lib/iomgr/closure.cc +2 -2
  1151. data/src/core/lib/iomgr/closure.h +9 -9
  1152. data/src/core/lib/iomgr/combiner.cc +4 -6
  1153. data/src/core/lib/iomgr/combiner.h +2 -3
  1154. data/src/core/lib/iomgr/endpoint.h +1 -2
  1155. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -4
  1156. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -4
  1157. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -2
  1158. data/src/core/lib/iomgr/error.cc +6 -8
  1159. data/src/core/lib/iomgr/error.h +6 -8
  1160. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1161. data/src/core/lib/iomgr/ev_apple.cc +3 -4
  1162. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -9
  1163. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -5
  1164. data/src/core/lib/iomgr/ev_posix.cc +4 -6
  1165. data/src/core/lib/iomgr/ev_posix.h +1 -2
  1166. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
  1167. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1168. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +10 -11
  1169. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1170. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -3
  1171. data/src/core/lib/iomgr/exec_ctx.cc +4 -5
  1172. data/src/core/lib/iomgr/exec_ctx.h +6 -8
  1173. data/src/core/lib/iomgr/executor.cc +6 -8
  1174. data/src/core/lib/iomgr/executor.h +1 -1
  1175. data/src/core/lib/iomgr/fork_posix.cc +5 -7
  1176. data/src/core/lib/iomgr/fork_windows.cc +2 -2
  1177. data/src/core/lib/iomgr/internal_errqueue.cc +2 -3
  1178. data/src/core/lib/iomgr/iocp_windows.cc +4 -6
  1179. data/src/core/lib/iomgr/iomgr.cc +7 -9
  1180. data/src/core/lib/iomgr/iomgr.h +1 -2
  1181. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1182. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1183. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1184. data/src/core/lib/iomgr/iomgr_windows.cc +4 -3
  1185. data/src/core/lib/iomgr/lockfree_event.cc +3 -4
  1186. data/src/core/lib/iomgr/nameser.h +1 -1
  1187. data/src/core/lib/iomgr/polling_entity.cc +3 -4
  1188. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1189. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  1190. data/src/core/lib/iomgr/port.h +2 -2
  1191. data/src/core/lib/iomgr/resolve_address.cc +3 -4
  1192. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1193. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1194. data/src/core/lib/iomgr/resolve_address_posix.cc +6 -7
  1195. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1196. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -10
  1197. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1198. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1199. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -5
  1200. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  1201. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1202. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1203. data/src/core/lib/iomgr/socket_utils_common_posix.cc +5 -7
  1204. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -1
  1205. data/src/core/lib/iomgr/socket_utils_posix.cc +4 -6
  1206. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -1
  1207. data/src/core/lib/iomgr/socket_windows.cc +3 -5
  1208. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1209. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  1210. data/src/core/lib/iomgr/tcp_client_posix.cc +5 -7
  1211. data/src/core/lib/iomgr/tcp_client_windows.cc +6 -8
  1212. data/src/core/lib/iomgr/tcp_posix.cc +14 -17
  1213. data/src/core/lib/iomgr/tcp_posix.h +1 -1
  1214. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1215. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -11
  1216. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1217. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -5
  1218. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -6
  1219. data/src/core/lib/iomgr/tcp_server_windows.cc +11 -13
  1220. data/src/core/lib/iomgr/tcp_windows.cc +4 -6
  1221. data/src/core/lib/iomgr/timer.h +2 -2
  1222. data/src/core/lib/iomgr/timer_generic.cc +9 -11
  1223. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1224. data/src/core/lib/iomgr/timer_manager.cc +4 -6
  1225. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1226. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -4
  1227. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1228. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -2
  1229. data/src/core/lib/iomgr/vsock.cc +2 -4
  1230. data/src/core/lib/iomgr/vsock.h +3 -4
  1231. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -2
  1232. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -4
  1233. data/src/core/lib/promise/activity.cc +2 -4
  1234. data/src/core/lib/promise/activity.h +10 -12
  1235. data/src/core/lib/promise/all_ok.h +40 -4
  1236. data/src/core/lib/promise/arena_promise.h +2 -4
  1237. data/src/core/lib/promise/cancel_callback.h +4 -4
  1238. data/src/core/lib/promise/context.h +7 -8
  1239. data/src/core/lib/promise/detail/basic_seq.h +33 -19
  1240. data/src/core/lib/promise/detail/join_state.h +4 -5
  1241. data/src/core/lib/promise/detail/promise_factory.h +7 -8
  1242. data/src/core/lib/promise/detail/promise_like.h +26 -4
  1243. data/src/core/lib/promise/detail/seq_state.h +183 -185
  1244. data/src/core/lib/promise/detail/status.h +5 -5
  1245. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1246. data/src/core/lib/promise/for_each.h +9 -10
  1247. data/src/core/lib/promise/if.h +9 -9
  1248. data/src/core/lib/promise/interceptor_list.h +3 -5
  1249. data/src/core/lib/promise/latch.h +1 -3
  1250. data/src/core/lib/promise/loop.h +13 -5
  1251. data/src/core/lib/promise/map.h +57 -7
  1252. data/src/core/lib/promise/observable.h +3 -4
  1253. data/src/core/lib/promise/party.cc +42 -76
  1254. data/src/core/lib/promise/party.h +60 -40
  1255. data/src/core/lib/promise/pipe.h +3 -5
  1256. data/src/core/lib/promise/poll.h +19 -7
  1257. data/src/core/lib/promise/prioritized_race.h +2 -2
  1258. data/src/core/lib/promise/promise.h +5 -6
  1259. data/src/core/lib/promise/race.h +4 -4
  1260. data/src/core/lib/promise/seq.h +17 -39
  1261. data/src/core/lib/promise/sleep.cc +3 -3
  1262. data/src/core/lib/promise/sleep.h +4 -5
  1263. data/src/core/lib/promise/status_flag.h +9 -3
  1264. data/src/core/lib/promise/try_join.h +5 -5
  1265. data/src/core/lib/promise/try_seq.h +45 -47
  1266. data/src/core/lib/resource_quota/api.cc +4 -6
  1267. data/src/core/lib/resource_quota/api.h +2 -3
  1268. data/src/core/lib/resource_quota/arena.cc +3 -4
  1269. data/src/core/lib/resource_quota/arena.h +4 -5
  1270. data/src/core/lib/resource_quota/connection_quota.cc +2 -2
  1271. data/src/core/lib/resource_quota/connection_quota.h +5 -6
  1272. data/src/core/lib/resource_quota/memory_quota.cc +20 -11
  1273. data/src/core/lib/resource_quota/memory_quota.h +21 -13
  1274. data/src/core/lib/resource_quota/periodic_update.cc +4 -4
  1275. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1276. data/src/core/lib/resource_quota/resource_quota.h +7 -8
  1277. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  1278. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1279. data/src/core/lib/security/authorization/audit_logging.cc +5 -6
  1280. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1281. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1282. data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -4
  1283. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  1284. data/src/core/lib/security/authorization/evaluate_args.cc +4 -6
  1285. data/src/core/lib/security/authorization/evaluate_args.h +3 -4
  1286. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -3
  1287. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1288. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -3
  1289. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +2 -3
  1290. data/src/core/lib/security/authorization/matchers.cc +2 -4
  1291. data/src/core/lib/security/authorization/matchers.h +2 -4
  1292. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1293. data/src/core/lib/security/authorization/rbac_policy.h +3 -5
  1294. data/src/core/lib/security/authorization/stdout_logger.cc +4 -4
  1295. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1296. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +6 -7
  1297. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -2
  1298. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1299. data/src/core/lib/security/context/security_context.cc +6 -8
  1300. data/src/core/lib/security/context/security_context.h +16 -10
  1301. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1302. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  1303. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +2 -3
  1304. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1305. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +1 -2
  1306. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -4
  1307. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -2
  1308. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +2 -2
  1309. data/src/core/lib/security/credentials/call_creds_util.cc +6 -5
  1310. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1311. data/src/core/lib/security/credentials/channel_creds_registry.h +5 -6
  1312. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -11
  1313. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -4
  1314. data/src/core/lib/security/credentials/composite/composite_credentials.h +8 -9
  1315. data/src/core/lib/security/credentials/credentials.cc +1 -4
  1316. data/src/core/lib/security/credentials/credentials.h +11 -12
  1317. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +10 -12
  1318. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +7 -6
  1319. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1320. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1321. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -16
  1322. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -7
  1323. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -7
  1324. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -5
  1325. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -10
  1326. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +8 -7
  1327. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1328. data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -7
  1329. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +5 -6
  1330. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +7 -7
  1331. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -4
  1332. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -21
  1333. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +7 -5
  1334. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -4
  1335. data/src/core/lib/security/credentials/iam/iam_credentials.h +5 -6
  1336. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1337. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1338. data/src/core/lib/security/credentials/jwt/json_token.cc +11 -14
  1339. data/src/core/lib/security/credentials/jwt/json_token.h +1 -2
  1340. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -10
  1341. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +7 -9
  1342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +19 -22
  1343. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  1344. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1345. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  1346. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +14 -16
  1347. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +12 -13
  1348. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +3 -4
  1349. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +9 -11
  1350. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +4 -6
  1351. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -6
  1352. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -3
  1353. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -5
  1354. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1355. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +79 -9
  1356. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +13 -11
  1357. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +4 -6
  1358. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +8 -9
  1359. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  1360. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1361. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  1362. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +8 -10
  1363. data/src/core/lib/security/credentials/tls/tls_credentials.cc +6 -7
  1364. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1365. data/src/core/lib/security/credentials/tls/tls_utils.cc +1 -2
  1366. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1367. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +29 -22
  1368. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +15 -10
  1369. data/src/core/lib/security/credentials/xds/xds_credentials.cc +2 -3
  1370. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1371. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +9 -11
  1372. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1373. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -11
  1374. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1375. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -6
  1376. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1377. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -7
  1378. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +3 -4
  1379. data/src/core/lib/security/security_connector/local/local_security_connector.cc +17 -13
  1380. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1381. data/src/core/lib/security/security_connector/security_connector.cc +2 -4
  1382. data/src/core/lib/security/security_connector/security_connector.h +7 -8
  1383. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +6 -8
  1384. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1385. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -14
  1386. data/src/core/lib/security/security_connector/ssl_utils.h +7 -9
  1387. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +8 -10
  1388. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +7 -8
  1389. data/src/core/lib/security/transport/auth_filters.h +2 -3
  1390. data/src/core/lib/security/transport/client_auth_filter.cc +8 -10
  1391. data/src/core/lib/security/transport/server_auth_filter.cc +10 -11
  1392. data/src/core/lib/security/util/json_util.cc +4 -5
  1393. data/src/core/lib/slice/percent_encoding.cc +2 -4
  1394. data/src/core/lib/slice/slice.cc +4 -6
  1395. data/src/core/lib/slice/slice.h +5 -7
  1396. data/src/core/lib/slice/slice_buffer.cc +5 -6
  1397. data/src/core/lib/slice/slice_buffer.h +3 -4
  1398. data/src/core/lib/slice/slice_internal.h +3 -5
  1399. data/src/core/lib/slice/slice_refcount.h +2 -3
  1400. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1401. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1402. data/src/core/lib/surface/byte_buffer_reader.cc +3 -5
  1403. data/src/core/lib/surface/call.cc +22 -24
  1404. data/src/core/lib/surface/call.h +6 -8
  1405. data/src/core/lib/surface/call_log_batch.cc +3 -5
  1406. data/src/core/lib/surface/call_test_only.h +1 -2
  1407. data/src/core/lib/surface/call_utils.cc +16 -59
  1408. data/src/core/lib/surface/call_utils.h +57 -19
  1409. data/src/core/lib/surface/channel.cc +1 -2
  1410. data/src/core/lib/surface/channel.h +11 -12
  1411. data/src/core/lib/surface/channel_create.cc +2 -3
  1412. data/src/core/lib/surface/channel_create.h +2 -3
  1413. data/src/core/lib/surface/channel_init.cc +4 -6
  1414. data/src/core/lib/surface/channel_init.h +4 -6
  1415. data/src/core/lib/surface/client_call.cc +66 -54
  1416. data/src/core/lib/surface/client_call.h +27 -19
  1417. data/src/core/lib/surface/completion_queue.cc +12 -14
  1418. data/src/core/lib/surface/completion_queue.h +4 -5
  1419. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  1420. data/src/core/lib/surface/connection_context.cc +77 -0
  1421. data/src/core/lib/surface/connection_context.h +156 -0
  1422. data/src/core/lib/surface/event_string.cc +2 -2
  1423. data/src/core/lib/surface/event_string.h +2 -2
  1424. data/src/core/lib/surface/filter_stack_call.cc +18 -20
  1425. data/src/core/lib/surface/filter_stack_call.h +16 -18
  1426. data/src/core/lib/surface/init.cc +28 -7
  1427. data/src/core/lib/surface/init.h +5 -0
  1428. data/src/core/lib/surface/lame_client.cc +10 -11
  1429. data/src/core/lib/surface/lame_client.h +4 -5
  1430. data/src/core/lib/surface/legacy_channel.cc +11 -12
  1431. data/src/core/lib/surface/legacy_channel.h +6 -7
  1432. data/src/core/lib/surface/metadata_array.cc +1 -2
  1433. data/src/core/lib/surface/server_call.cc +22 -18
  1434. data/src/core/lib/surface/server_call.h +19 -20
  1435. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1436. data/src/core/lib/surface/validate_metadata.h +2 -4
  1437. data/src/core/lib/surface/version.cc +2 -2
  1438. data/src/core/lib/transport/bdp_estimator.cc +2 -3
  1439. data/src/core/lib/transport/bdp_estimator.h +3 -5
  1440. data/src/core/lib/transport/call_arena_allocator.cc +2 -2
  1441. data/src/core/lib/transport/call_arena_allocator.h +2 -3
  1442. data/src/core/lib/transport/call_destination.h +1 -1
  1443. data/src/core/lib/transport/call_filters.cc +5 -117
  1444. data/src/core/lib/transport/call_filters.h +402 -35
  1445. data/src/core/lib/transport/call_final_info.cc +2 -2
  1446. data/src/core/lib/transport/call_final_info.h +3 -3
  1447. data/src/core/lib/transport/call_spine.cc +1 -6
  1448. data/src/core/lib/transport/call_spine.h +29 -12
  1449. data/src/core/lib/transport/call_state.h +145 -41
  1450. data/src/core/lib/transport/connectivity_state.cc +3 -4
  1451. data/src/core/lib/transport/connectivity_state.h +5 -6
  1452. data/src/core/lib/transport/error_utils.cc +3 -4
  1453. data/src/core/lib/transport/error_utils.h +4 -5
  1454. data/src/core/lib/transport/interception_chain.cc +3 -3
  1455. data/src/core/lib/transport/interception_chain.h +17 -8
  1456. data/src/core/lib/transport/message.cc +2 -2
  1457. data/src/core/lib/transport/message.h +5 -0
  1458. data/src/core/lib/transport/metadata_batch.cc +12 -5
  1459. data/src/core/lib/transport/metadata_batch.h +17 -11
  1460. data/src/core/lib/transport/metadata_compression_traits.h +3 -4
  1461. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1462. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1463. data/src/core/lib/transport/status_conversion.h +1 -1
  1464. data/src/core/lib/transport/timeout_encoding.cc +7 -7
  1465. data/src/core/lib/transport/timeout_encoding.h +2 -4
  1466. data/src/core/lib/transport/transport.cc +4 -6
  1467. data/src/core/lib/transport/transport.h +7 -9
  1468. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1469. data/src/core/lib/transport/transport_op_string.cc +4 -5
  1470. data/src/core/load_balancing/address_filtering.cc +2 -4
  1471. data/src/core/load_balancing/address_filtering.h +4 -5
  1472. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1473. data/src/core/load_balancing/backend_metric_parser.cc +1 -2
  1474. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1475. data/src/core/load_balancing/child_policy_handler.cc +5 -6
  1476. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1477. data/src/core/load_balancing/delegating_helper.h +6 -7
  1478. data/src/core/load_balancing/endpoint_list.cc +7 -9
  1479. data/src/core/load_balancing/endpoint_list.h +6 -8
  1480. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +10 -4
  1481. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -2
  1482. data/src/core/load_balancing/grpclb/grpclb.cc +20 -22
  1483. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -2
  1484. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1485. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1486. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  1487. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1488. data/src/core/load_balancing/health_check_client.cc +20 -20
  1489. data/src/core/load_balancing/health_check_client.h +3 -3
  1490. data/src/core/load_balancing/health_check_client_internal.h +8 -9
  1491. data/src/core/load_balancing/lb_policy.h +13 -15
  1492. data/src/core/load_balancing/lb_policy_factory.h +4 -5
  1493. data/src/core/load_balancing/lb_policy_registry.cc +3 -4
  1494. data/src/core/load_balancing/lb_policy_registry.h +4 -5
  1495. data/src/core/load_balancing/oob_backend_metric.cc +14 -16
  1496. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1497. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1498. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +31 -26
  1499. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -5
  1500. data/src/core/load_balancing/pick_first/pick_first.cc +28 -25
  1501. data/src/core/load_balancing/priority/priority.cc +12 -14
  1502. data/src/core/load_balancing/ring_hash/ring_hash.cc +13 -15
  1503. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -4
  1504. data/src/core/load_balancing/rls/rls.cc +27 -29
  1505. data/src/core/load_balancing/round_robin/round_robin.cc +9 -15
  1506. data/src/core/load_balancing/subchannel_interface.h +13 -6
  1507. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  1508. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -3
  1509. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +15 -19
  1510. data/src/core/load_balancing/weighted_target/weighted_target.cc +11 -13
  1511. data/src/core/load_balancing/xds/cds.cc +23 -20
  1512. data/src/core/load_balancing/xds/xds_cluster_impl.cc +42 -45
  1513. data/src/core/load_balancing/xds/xds_cluster_manager.cc +10 -12
  1514. data/src/core/load_balancing/xds/xds_override_host.cc +15 -17
  1515. data/src/core/load_balancing/xds/xds_override_host.h +3 -4
  1516. data/src/core/load_balancing/xds/xds_wrr_locality.cc +11 -12
  1517. data/src/core/plugin_registry/grpc_plugin_registry.cc +1 -7
  1518. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +3 -1
  1519. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +13 -16
  1520. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -3
  1521. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1522. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -4
  1523. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -11
  1524. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +15 -19
  1525. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -6
  1526. data/src/core/resolver/dns/dns_resolver_plugin.cc +4 -5
  1527. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1528. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -11
  1529. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1530. data/src/core/resolver/dns/event_engine/service_config_helper.cc +3 -5
  1531. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1532. data/src/core/resolver/dns/native/dns_resolver.cc +10 -11
  1533. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1534. data/src/core/resolver/endpoint_addresses.cc +1 -3
  1535. data/src/core/resolver/endpoint_addresses.h +2 -3
  1536. data/src/core/resolver/fake/fake_resolver.cc +7 -8
  1537. data/src/core/resolver/fake/fake_resolver.h +7 -8
  1538. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +11 -12
  1539. data/src/core/resolver/polling_resolver.cc +6 -8
  1540. data/src/core/resolver/polling_resolver.h +7 -8
  1541. data/src/core/resolver/resolver.h +4 -5
  1542. data/src/core/resolver/resolver_factory.h +4 -5
  1543. data/src/core/resolver/resolver_registry.cc +2 -2
  1544. data/src/core/resolver/resolver_registry.h +4 -5
  1545. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
  1546. data/src/core/resolver/xds/xds_config.cc +1 -2
  1547. data/src/core/resolver/xds/xds_config.h +1 -2
  1548. data/src/core/resolver/xds/xds_dependency_manager.cc +2 -5
  1549. data/src/core/resolver/xds/xds_dependency_manager.h +1 -2
  1550. data/src/core/resolver/xds/xds_resolver.cc +15 -17
  1551. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -3
  1552. data/src/core/server/server.cc +97 -74
  1553. data/src/core/server/server.h +13 -16
  1554. data/src/core/server/server_call_tracer_filter.cc +11 -4
  1555. data/src/core/server/server_call_tracer_filter.h +1 -1
  1556. data/src/core/server/server_config_selector.h +5 -6
  1557. data/src/core/server/server_config_selector_filter.cc +8 -6
  1558. data/src/core/server/xds_channel_stack_modifier.cc +3 -3
  1559. data/src/core/server/xds_channel_stack_modifier.h +5 -6
  1560. data/src/core/server/xds_server_config_fetcher.cc +23 -24
  1561. data/src/core/service_config/service_config.h +3 -5
  1562. data/src/core/service_config/service_config_call_data.h +5 -6
  1563. data/src/core/service_config/service_config_channel_arg_filter.cc +8 -6
  1564. data/src/core/service_config/service_config_impl.cc +4 -6
  1565. data/src/core/service_config/service_config_impl.h +4 -6
  1566. data/src/core/service_config/service_config_parser.cc +1 -2
  1567. data/src/core/service_config/service_config_parser.h +2 -4
  1568. data/src/core/telemetry/call_tracer.cc +2 -3
  1569. data/src/core/telemetry/call_tracer.h +5 -6
  1570. data/src/core/telemetry/histogram_view.cc +3 -3
  1571. data/src/core/telemetry/histogram_view.h +1 -2
  1572. data/src/core/telemetry/metrics.cc +18 -16
  1573. data/src/core/telemetry/metrics.h +13 -10
  1574. data/src/core/telemetry/stats.cc +1 -2
  1575. data/src/core/telemetry/stats.h +2 -4
  1576. data/src/core/telemetry/stats_data.cc +114 -2
  1577. data/src/core/telemetry/stats_data.h +82 -4
  1578. data/src/core/telemetry/tcp_tracer.h +1 -2
  1579. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1580. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1581. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1582. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1583. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -4
  1584. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1585. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1586. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +4 -5
  1587. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1588. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1589. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1590. data/src/core/tsi/alts/frame_protector/frame_handler.cc +4 -6
  1591. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1592. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +11 -12
  1593. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -3
  1594. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1595. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +19 -17
  1596. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -3
  1597. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1598. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -3
  1599. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -5
  1600. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1601. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +2 -3
  1602. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1603. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +3 -5
  1604. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -4
  1605. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1606. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -5
  1607. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1608. data/src/core/tsi/fake_transport_security.cc +4 -7
  1609. data/src/core/tsi/local_transport_security.cc +4 -6
  1610. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -5
  1611. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1612. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1613. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -5
  1614. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1615. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1616. data/src/core/tsi/ssl_transport_security.cc +29 -17
  1617. data/src/core/tsi/ssl_transport_security.h +6 -8
  1618. data/src/core/tsi/ssl_transport_security_utils.cc +1 -3
  1619. data/src/core/tsi/ssl_transport_security_utils.h +3 -5
  1620. data/src/core/tsi/ssl_types.h +1 -2
  1621. data/src/core/tsi/transport_security.cc +2 -3
  1622. data/src/core/tsi/transport_security.h +1 -2
  1623. data/src/core/tsi/transport_security_interface.h +3 -4
  1624. data/src/core/util/alloc.cc +2 -5
  1625. data/src/core/util/atm.cc +1 -2
  1626. data/src/core/{lib/gprpp → util}/atomic_utils.h +5 -5
  1627. data/src/core/{lib/avl → util}/avl.h +6 -7
  1628. data/src/core/{lib/backoff → util}/backoff.cc +3 -1
  1629. data/src/core/{lib/backoff → util}/backoff.h +4 -5
  1630. data/src/core/{lib/gprpp → util}/bitset.h +4 -5
  1631. data/src/core/{lib/gprpp → util}/chunked_vector.h +6 -7
  1632. data/src/core/{lib/gprpp → util}/construct_destruct.h +8 -7
  1633. data/src/core/{lib/gprpp → util}/cpp_impl_of.h +3 -3
  1634. data/src/core/{lib/gprpp → util}/crash.cc +2 -3
  1635. data/src/core/{lib/gprpp → util}/crash.h +5 -6
  1636. data/src/core/{lib/gprpp → util}/debug_location.h +5 -5
  1637. data/src/core/{lib/gprpp → util}/directory_reader.h +5 -5
  1638. data/src/core/{lib/gprpp → util}/down_cast.h +7 -7
  1639. data/src/core/{lib/gprpp → util}/dual_ref_counted.h +10 -11
  1640. data/src/core/{lib/gprpp → util}/dump_args.cc +1 -1
  1641. data/src/core/{lib/gprpp → util}/dump_args.h +12 -7
  1642. data/src/core/{lib/gprpp → util}/env.h +5 -5
  1643. data/src/core/{lib/debug → util}/event_log.cc +3 -3
  1644. data/src/core/{lib/debug → util}/event_log.h +6 -8
  1645. data/src/core/{lib/gprpp → util}/examine_stack.cc +1 -1
  1646. data/src/core/{lib/gprpp → util}/examine_stack.h +5 -5
  1647. data/src/core/{lib/gprpp → util}/fork.cc +5 -5
  1648. data/src/core/{lib/gprpp → util}/fork.h +7 -7
  1649. data/src/core/util/gcp_metadata_query.cc +8 -11
  1650. data/src/core/util/gcp_metadata_query.h +2 -3
  1651. data/src/core/{lib/iomgr → util}/gethostname.h +3 -3
  1652. data/src/core/{lib/iomgr → util}/gethostname_fallback.cc +1 -1
  1653. data/src/core/{lib/iomgr → util}/gethostname_host_name_max.cc +2 -3
  1654. data/src/core/{lib/iomgr → util}/gethostname_sysconf.cc +2 -3
  1655. data/src/core/{lib/gprpp → util}/glob.h +3 -3
  1656. data/src/core/util/gpr_time.cc +268 -0
  1657. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex.h +4 -5
  1658. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_posix.cc +2 -3
  1659. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_unsupported.cc +2 -3
  1660. data/src/core/{lib/gprpp → util}/host_port.cc +2 -3
  1661. data/src/core/{lib/gprpp → util}/host_port.h +5 -5
  1662. data/src/core/util/http_client/format_request.cc +2 -5
  1663. data/src/core/util/http_client/format_request.h +1 -2
  1664. data/src/core/util/http_client/httpcli.cc +19 -15
  1665. data/src/core/util/http_client/httpcli.h +8 -11
  1666. data/src/core/util/http_client/httpcli_security_connector.cc +9 -12
  1667. data/src/core/util/http_client/httpcli_ssl_credentials.h +2 -3
  1668. data/src/core/util/http_client/parser.cc +2 -4
  1669. data/src/core/util/http_client/parser.h +1 -3
  1670. data/src/core/{lib/gprpp → util}/if_list.h +3 -3
  1671. data/src/core/util/iphone/cpu.cc +1 -2
  1672. data/src/core/util/json/json.h +1 -2
  1673. data/src/core/util/json/json_channel_args.h +0 -1
  1674. data/src/core/util/json/json_object_loader.cc +3 -4
  1675. data/src/core/util/json/json_object_loader.h +8 -9
  1676. data/src/core/util/json/json_reader.cc +2 -5
  1677. data/src/core/util/json/json_reader.h +0 -1
  1678. data/src/core/util/json/json_util.cc +4 -4
  1679. data/src/core/util/json/json_util.h +1 -2
  1680. data/src/core/util/json/json_writer.cc +1 -3
  1681. data/src/core/util/latent_see.cc +99 -69
  1682. data/src/core/util/latent_see.h +45 -20
  1683. data/src/core/util/linux/cpu.cc +4 -6
  1684. data/src/core/{lib/gprpp → util}/linux/env.cc +3 -3
  1685. data/src/core/{lib/gprpp → util}/load_file.cc +4 -5
  1686. data/src/core/{lib/gprpp → util}/load_file.h +5 -6
  1687. data/src/core/util/log.cc +10 -13
  1688. data/src/core/util/lru_cache.h +27 -9
  1689. data/src/core/{lib/gprpp → util}/manual_constructor.h +5 -6
  1690. data/src/core/{lib/gprpp → util}/match.h +6 -7
  1691. data/src/core/{lib/matchers → util}/matchers.cc +10 -3
  1692. data/src/core/{lib/matchers → util}/matchers.h +9 -5
  1693. data/src/core/{lib/gprpp → util}/memory.h +6 -6
  1694. data/src/core/{lib/gprpp → util}/mpscq.cc +1 -1
  1695. data/src/core/{lib/gprpp → util}/mpscq.h +6 -7
  1696. data/src/core/util/msys/tmpfile.cc +3 -4
  1697. data/src/core/{lib/gprpp → util}/no_destruct.h +6 -6
  1698. data/src/core/{lib/gprpp → util}/notification.h +6 -7
  1699. data/src/core/{lib/gprpp → util}/orphanable.h +9 -9
  1700. data/src/core/{lib/gprpp → util}/overload.h +5 -5
  1701. data/src/core/{lib/gprpp → util}/packed_table.h +5 -5
  1702. data/src/core/{lib/gprpp → util}/per_cpu.cc +1 -1
  1703. data/src/core/{lib/gprpp → util}/per_cpu.h +5 -6
  1704. data/src/core/util/posix/cpu.cc +3 -5
  1705. data/src/core/{lib/gprpp → util}/posix/directory_reader.cc +4 -4
  1706. data/src/core/{lib/gprpp → util}/posix/env.cc +1 -1
  1707. data/src/core/{lib/gprpp → util}/posix/stat.cc +4 -5
  1708. data/src/core/util/posix/string.cc +2 -3
  1709. data/src/core/util/posix/sync.cc +3 -5
  1710. data/src/core/{lib/gprpp → util}/posix/thd.cc +8 -11
  1711. data/src/core/util/posix/time.cc +4 -5
  1712. data/src/core/util/posix/tmpfile.cc +4 -6
  1713. data/src/core/{lib/backoff → util}/random_early_detection.cc +3 -3
  1714. data/src/core/{lib/backoff → util}/random_early_detection.h +4 -5
  1715. data/src/core/{lib/gprpp → util}/ref_counted.h +9 -10
  1716. data/src/core/{lib/gprpp → util}/ref_counted_ptr.h +6 -8
  1717. data/src/core/{lib/gprpp → util}/ref_counted_string.cc +3 -4
  1718. data/src/core/{lib/gprpp → util}/ref_counted_string.h +6 -8
  1719. data/src/core/{lib/gprpp → util}/single_set_ptr.h +5 -5
  1720. data/src/core/{lib/gprpp → util}/sorted_pack.h +6 -6
  1721. data/src/core/util/spinlock.h +1 -2
  1722. data/src/core/{lib/gprpp → util}/stat.h +4 -5
  1723. data/src/core/{lib/gprpp → util}/status_helper.cc +5 -7
  1724. data/src/core/{lib/gprpp → util}/status_helper.h +5 -7
  1725. data/src/core/{lib/gprpp → util}/strerror.cc +2 -3
  1726. data/src/core/{lib/gprpp → util}/strerror.h +5 -5
  1727. data/src/core/util/string.cc +6 -9
  1728. data/src/core/util/string.h +1 -3
  1729. data/src/core/util/sync.cc +3 -5
  1730. data/src/core/{lib/gprpp → util}/sync.h +7 -7
  1731. data/src/core/util/sync_abseil.cc +5 -7
  1732. data/src/core/{lib/gprpp → util}/table.h +6 -8
  1733. data/src/core/{lib/gprpp → util}/tchar.cc +1 -1
  1734. data/src/core/{lib/gprpp → util}/tchar.h +3 -3
  1735. data/src/core/{lib/gprpp → util}/thd.h +5 -6
  1736. data/src/core/util/time.cc +174 -204
  1737. data/src/core/{lib/gprpp → util}/time.h +16 -10
  1738. data/src/core/{lib/gprpp → util}/time_averaged_stats.cc +1 -1
  1739. data/src/core/{lib/gprpp → util}/time_averaged_stats.h +3 -3
  1740. data/src/core/util/time_precise.cc +3 -4
  1741. data/src/core/util/time_precise.h +0 -1
  1742. data/src/core/{lib/gprpp → util}/time_util.cc +3 -4
  1743. data/src/core/{lib/gprpp → util}/time_util.h +5 -5
  1744. data/src/core/util/tmpfile.h +0 -1
  1745. data/src/core/{lib/gprpp → util}/type_list.h +3 -3
  1746. data/src/core/{lib/gprpp → util}/unique_type_name.h +5 -6
  1747. data/src/core/{lib/uri/uri_parser.cc → util/uri.cc} +12 -7
  1748. data/src/core/{lib/uri/uri_parser.h → util/uri.h} +10 -6
  1749. data/src/core/{lib/gprpp → util}/uuid_v4.cc +3 -3
  1750. data/src/core/{lib/gprpp → util}/uuid_v4.h +4 -5
  1751. data/src/core/{lib/gprpp → util}/validation_errors.cc +2 -3
  1752. data/src/core/{lib/gprpp → util}/validation_errors.h +4 -5
  1753. data/src/core/util/windows/cpu.cc +1 -1
  1754. data/src/core/{lib/gprpp → util}/windows/directory_reader.cc +1 -1
  1755. data/src/core/{lib/gprpp → util}/windows/env.cc +2 -2
  1756. data/src/core/{lib/gprpp → util}/windows/stat.cc +3 -4
  1757. data/src/core/util/windows/string.cc +2 -3
  1758. data/src/core/util/windows/string_util.cc +5 -7
  1759. data/src/core/util/windows/sync.cc +2 -3
  1760. data/src/core/{lib/gprpp → util}/windows/thd.cc +6 -8
  1761. data/src/core/util/windows/time.cc +2 -4
  1762. data/src/core/util/windows/tmpfile.cc +4 -5
  1763. data/src/core/{lib/gprpp → util}/work_serializer.cc +7 -12
  1764. data/src/core/{lib/gprpp → util}/work_serializer.h +8 -9
  1765. data/src/core/{lib/gprpp → util}/xxhash_inline.h +3 -3
  1766. data/src/core/xds/grpc/certificate_provider_store.cc +3 -4
  1767. data/src/core/xds/grpc/certificate_provider_store.h +9 -10
  1768. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +4 -5
  1769. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +6 -7
  1770. data/src/core/xds/grpc/xds_audit_logger_registry.cc +4 -5
  1771. data/src/core/xds/grpc/xds_audit_logger_registry.h +3 -4
  1772. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +4 -5
  1773. data/src/core/xds/grpc/xds_bootstrap_grpc.h +4 -4
  1774. data/src/core/xds/grpc/xds_certificate_provider.cc +2 -3
  1775. data/src/core/xds/grpc/xds_certificate_provider.h +8 -9
  1776. data/src/core/xds/grpc/xds_client_grpc.cc +63 -39
  1777. data/src/core/xds/grpc/xds_client_grpc.h +14 -8
  1778. data/src/core/xds/grpc/xds_cluster.cc +9 -4
  1779. data/src/core/xds/grpc/xds_cluster.h +30 -4
  1780. data/src/core/xds/grpc/xds_cluster_parser.cc +106 -26
  1781. data/src/core/xds/grpc/xds_cluster_parser.h +6 -2
  1782. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +5 -7
  1783. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1784. data/src/core/xds/grpc/xds_common_types.cc +1 -2
  1785. data/src/core/xds/grpc/xds_common_types.h +2 -3
  1786. data/src/core/xds/grpc/xds_common_types_parser.cc +45 -9
  1787. data/src/core/xds/grpc/xds_common_types_parser.h +8 -3
  1788. data/src/core/xds/grpc/xds_endpoint.h +7 -5
  1789. data/src/core/xds/grpc/xds_endpoint_parser.cc +45 -40
  1790. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -2
  1791. data/src/core/xds/grpc/xds_health_status.h +0 -1
  1792. data/src/core/xds/grpc/xds_http_fault_filter.cc +5 -7
  1793. data/src/core/xds/grpc/xds_http_fault_filter.h +4 -5
  1794. data/src/core/xds/grpc/xds_http_filter.h +2 -3
  1795. data/src/core/xds/grpc/xds_http_filter_registry.cc +2 -3
  1796. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -3
  1797. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +5 -6
  1798. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -3
  1799. data/src/core/xds/grpc/xds_http_rbac_filter.cc +42 -39
  1800. data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -5
  1801. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +5 -6
  1802. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -5
  1803. data/src/core/xds/grpc/xds_lb_policy_registry.cc +5 -7
  1804. data/src/core/xds/grpc/xds_lb_policy_registry.h +4 -5
  1805. data/src/core/xds/grpc/xds_listener.cc +1 -2
  1806. data/src/core/xds/grpc/xds_listener.h +1 -2
  1807. data/src/core/xds/grpc/xds_listener_parser.cc +5 -8
  1808. data/src/core/xds/grpc/xds_listener_parser.h +1 -2
  1809. data/src/core/xds/grpc/xds_metadata.h +26 -3
  1810. data/src/core/xds/grpc/xds_metadata_parser.cc +51 -10
  1811. data/src/core/xds/grpc/xds_metadata_parser.h +1 -2
  1812. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  1813. data/src/core/xds/grpc/xds_route_config.h +2 -3
  1814. data/src/core/xds/grpc/xds_route_config_parser.cc +11 -13
  1815. data/src/core/xds/grpc/xds_route_config_parser.h +4 -7
  1816. data/src/core/xds/grpc/xds_routing.cc +2 -4
  1817. data/src/core/xds/grpc/xds_routing.h +1 -3
  1818. data/src/core/xds/grpc/xds_server_grpc.cc +1 -2
  1819. data/src/core/xds/grpc/xds_server_grpc.h +2 -2
  1820. data/src/core/xds/grpc/xds_transport_grpc.cc +95 -50
  1821. data/src/core/xds/grpc/xds_transport_grpc.h +33 -22
  1822. data/src/core/xds/xds_client/lrs_client.cc +1292 -0
  1823. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1824. data/src/core/xds/xds_client/xds_api.cc +31 -245
  1825. data/src/core/xds/xds_client/xds_api.h +13 -36
  1826. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1827. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1828. data/src/core/xds/xds_client/xds_bootstrap.cc +2 -3
  1829. data/src/core/xds/xds_client/xds_bootstrap.h +2 -2
  1830. data/src/core/xds/xds_client/xds_client.cc +57 -595
  1831. data/src/core/xds/xds_client/xds_client.h +33 -86
  1832. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1833. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1834. data/src/core/xds/xds_client/xds_resource_type.h +4 -5
  1835. data/src/core/xds/xds_client/xds_resource_type_impl.h +3 -4
  1836. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1837. data/src/ruby/ext/grpc/extconf.rb +1 -1
  1838. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1839. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1840. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -6
  1841. data/src/ruby/ext/grpc/rb_channel.c +6 -7
  1842. data/src/ruby/ext/grpc/rb_channel_args.c +3 -3
  1843. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1844. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1845. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -4
  1846. data/src/ruby/ext/grpc/rb_compression_options.c +6 -7
  1847. data/src/ruby/ext/grpc/rb_event_thread.c +4 -5
  1848. data/src/ruby/ext/grpc/rb_grpc.c +3 -4
  1849. data/src/ruby/ext/grpc/rb_grpc.h +2 -3
  1850. data/src/ruby/ext/grpc/rb_server.c +6 -6
  1851. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1852. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1853. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1854. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1855. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1856. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1857. data/src/ruby/lib/grpc/version.rb +1 -1
  1858. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1859. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1860. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1861. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1862. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1863. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1864. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1865. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1866. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1867. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1868. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1869. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1870. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1871. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1872. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1873. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1874. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1875. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1876. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1877. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1878. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1879. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1880. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1881. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1882. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1883. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1884. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1885. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1886. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1887. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1888. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1889. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1890. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1891. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1892. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1893. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1894. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1895. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1896. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1897. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1898. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1899. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1900. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1901. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1902. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1903. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1904. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1905. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1906. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1907. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1908. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1909. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1910. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1911. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1912. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1913. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1914. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1915. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1916. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1917. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1918. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1919. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1920. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1921. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1922. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  1923. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  1924. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  1925. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  1926. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  1927. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  1928. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  1929. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  1930. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  1931. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  1932. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  1933. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  1934. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  1935. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  1936. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  1937. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  1938. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  1939. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  1940. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  1941. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  1942. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  1943. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  1944. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  1945. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  1946. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  1947. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  1948. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  1949. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  1950. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  1951. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  1952. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  1953. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  1954. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  1955. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  1956. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  1957. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  1958. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  1959. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  1960. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  1961. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  1962. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  1963. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  1964. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  1965. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  1966. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  1967. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  1968. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  1969. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  1970. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  1971. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  1972. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  1973. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  1974. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  1975. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  1976. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  1977. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  1978. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  1979. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  1980. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1981. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1982. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  1983. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1984. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  1985. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  1986. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  1987. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  1988. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  1989. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  1990. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  1991. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  1992. data/third_party/upb/upb/json/decode.c +59 -13
  1993. data/third_party/upb/upb/json/decode.h +26 -3
  1994. data/third_party/upb/upb/json/encode.c +2 -2
  1995. data/third_party/upb/upb/lex/round_trip.c +10 -0
  1996. data/third_party/upb/upb/mem/arena.c +13 -2
  1997. data/third_party/upb/upb/mem/arena.h +9 -0
  1998. data/third_party/upb/upb/mem/arena.hpp +5 -1
  1999. data/third_party/upb/upb/message/accessors.c +2 -4
  2000. data/third_party/upb/upb/message/accessors.h +178 -379
  2001. data/third_party/upb/upb/message/copy.c +11 -7
  2002. data/third_party/upb/upb/message/internal/accessors.h +578 -26
  2003. data/third_party/upb/upb/message/internal/extension.c +1 -0
  2004. data/third_party/upb/upb/message/internal/message.c +13 -14
  2005. data/third_party/upb/upb/message/internal/message.h +8 -7
  2006. data/third_party/upb/upb/message/merge.c +38 -0
  2007. data/third_party/upb/upb/message/merge.h +26 -0
  2008. data/third_party/upb/upb/message/message.h +6 -10
  2009. data/third_party/upb/upb/message/value.h +26 -0
  2010. data/third_party/upb/upb/mini_descriptor/decode.c +7 -2
  2011. data/third_party/upb/upb/mini_descriptor/link.c +7 -3
  2012. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2013. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2014. data/third_party/upb/upb/mini_table/internal/extension.h +9 -0
  2015. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2016. data/third_party/upb/upb/mini_table/internal/message.h +40 -20
  2017. data/third_party/upb/upb/mini_table/internal/sub.h +5 -0
  2018. data/third_party/upb/upb/mini_table/message.h +11 -1
  2019. data/third_party/upb/upb/port/def.inc +99 -9
  2020. data/third_party/upb/upb/port/undef.inc +7 -0
  2021. data/third_party/upb/upb/reflection/common.h +1 -11
  2022. data/third_party/upb/upb/reflection/def.hpp +8 -0
  2023. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2024. data/third_party/upb/upb/reflection/field_def.c +11 -22
  2025. data/third_party/upb/upb/reflection/field_def.h +1 -0
  2026. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2027. data/third_party/upb/upb/reflection/message.c +8 -3
  2028. data/third_party/upb/upb/reflection/message.h +2 -2
  2029. data/third_party/upb/upb/text/encode.c +51 -394
  2030. data/third_party/upb/upb/text/encode.h +1 -11
  2031. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2032. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2033. data/third_party/upb/upb/text/options.h +22 -0
  2034. data/third_party/upb/upb/wire/decode.c +71 -39
  2035. data/third_party/upb/upb/wire/decode.h +4 -1
  2036. data/third_party/upb/upb/wire/encode.c +41 -18
  2037. data/third_party/upb/upb/wire/encode.h +3 -0
  2038. data/third_party/upb/upb/wire/internal/decode_fast.c +3 -0
  2039. metadata +142 -109
  2040. data/src/core/lib/gprpp/time.cc +0 -241
  2041. data/src/core/resolver/binder/binder_resolver.cc +0 -153
  2042. data/src/core/xds/xds_client/xds_client_stats.cc +0 -164
  2043. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2044. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2045. /data/src/core/{lib/gprpp → util}/glob.cc +0 -0
@@ -14,18 +14,19 @@
14
14
 
15
15
  // For reference check out:
16
16
  // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
17
- //
18
- // Note that we only have partial C++11 support yet.
19
17
 
20
18
  #include "absl/debugging/internal/demangle.h"
21
19
 
20
+ #include <cstddef>
22
21
  #include <cstdint>
23
22
  #include <cstdio>
24
23
  #include <cstdlib>
24
+ #include <cstring>
25
25
  #include <limits>
26
26
  #include <string>
27
27
 
28
28
  #include "absl/base/config.h"
29
+ #include "absl/debugging/internal/demangle_rust.h"
29
30
 
30
31
  #if ABSL_INTERNAL_HAS_CXA_DEMANGLE
31
32
  #include <cxxabi.h>
@@ -44,14 +45,16 @@ typedef struct {
44
45
 
45
46
  // List of operators from Itanium C++ ABI.
46
47
  static const AbbrevPair kOperatorList[] = {
47
- // New has special syntax (not currently supported).
48
+ // New has special syntax.
48
49
  {"nw", "new", 0},
49
50
  {"na", "new[]", 0},
50
51
 
51
- // Works except that the 'gs' prefix is not supported.
52
+ // Special-cased elsewhere to support the optional gs prefix.
52
53
  {"dl", "delete", 1},
53
54
  {"da", "delete[]", 1},
54
55
 
56
+ {"aw", "co_await", 1},
57
+
55
58
  {"ps", "+", 1}, // "positive"
56
59
  {"ng", "-", 1}, // "negative"
57
60
  {"ad", "&", 1}, // "address-of"
@@ -79,6 +82,7 @@ static const AbbrevPair kOperatorList[] = {
79
82
  {"rs", ">>", 2},
80
83
  {"lS", "<<=", 2},
81
84
  {"rS", ">>=", 2},
85
+ {"ss", "<=>", 2},
82
86
  {"eq", "==", 2},
83
87
  {"ne", "!=", 2},
84
88
  {"lt", "<", 2},
@@ -98,6 +102,7 @@ static const AbbrevPair kOperatorList[] = {
98
102
  {"qu", "?", 3},
99
103
  {"st", "sizeof", 0}, // Special syntax
100
104
  {"sz", "sizeof", 1}, // Not a real operator name, but used in expressions.
105
+ {"sZ", "sizeof...", 0}, // Special syntax
101
106
  {nullptr, nullptr, 0},
102
107
  };
103
108
 
@@ -187,9 +192,50 @@ typedef struct {
187
192
  int recursion_depth; // For stack exhaustion prevention.
188
193
  int steps; // Cap how much work we'll do, regardless of depth.
189
194
  ParseState parse_state; // Backtrackable state copied for most frames.
195
+
196
+ // Conditionally compiled support for marking the position of the first
197
+ // construct Demangle couldn't parse. This preprocessor symbol is intended
198
+ // for use by Abseil demangler maintainers only; its behavior is not part of
199
+ // Abseil's public interface.
200
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
201
+ int high_water_mark; // Input position where parsing failed.
202
+ bool too_complex; // True if any guard.IsTooComplex() call returned true.
203
+ #endif
190
204
  } State;
191
205
 
192
206
  namespace {
207
+
208
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
209
+ void UpdateHighWaterMark(State *state) {
210
+ if (state->high_water_mark < state->parse_state.mangled_idx) {
211
+ state->high_water_mark = state->parse_state.mangled_idx;
212
+ }
213
+ }
214
+
215
+ void ReportHighWaterMark(State *state) {
216
+ // Write out the mangled name with the trouble point marked, provided that the
217
+ // output buffer is large enough and the mangled name did not hit a complexity
218
+ // limit (in which case the high water mark wouldn't point out an unparsable
219
+ // construct, only the point where a budget ran out).
220
+ const size_t input_length = std::strlen(state->mangled_begin);
221
+ if (input_length + 6 > static_cast<size_t>(state->out_end_idx) ||
222
+ state->too_complex) {
223
+ if (state->out_end_idx > 0) state->out[0] = '\0';
224
+ return;
225
+ }
226
+ const size_t high_water_mark = static_cast<size_t>(state->high_water_mark);
227
+ std::memcpy(state->out, state->mangled_begin, high_water_mark);
228
+ std::memcpy(state->out + high_water_mark, "--!--", 5);
229
+ std::memcpy(state->out + high_water_mark + 5,
230
+ state->mangled_begin + high_water_mark,
231
+ input_length - high_water_mark);
232
+ state->out[input_length + 5] = '\0';
233
+ }
234
+ #else
235
+ void UpdateHighWaterMark(State *) {}
236
+ void ReportHighWaterMark(State *) {}
237
+ #endif
238
+
193
239
  // Prevent deep recursion / stack exhaustion.
194
240
  // Also prevent unbounded handling of complex inputs.
195
241
  class ComplexityGuard {
@@ -201,7 +247,7 @@ class ComplexityGuard {
201
247
  ~ComplexityGuard() { --state_->recursion_depth; }
202
248
 
203
249
  // 256 levels of recursion seems like a reasonable upper limit on depth.
204
- // 128 is not enough to demagle synthetic tests from demangle_unittest.txt:
250
+ // 128 is not enough to demangle synthetic tests from demangle_unittest.txt:
205
251
  // "_ZaaZZZZ..." and "_ZaaZcvZcvZ..."
206
252
  static constexpr int kRecursionDepthLimit = 256;
207
253
 
@@ -222,8 +268,14 @@ class ComplexityGuard {
222
268
  static constexpr int kParseStepsLimit = 1 << 17;
223
269
 
224
270
  bool IsTooComplex() const {
225
- return state_->recursion_depth > kRecursionDepthLimit ||
226
- state_->steps > kParseStepsLimit;
271
+ if (state_->recursion_depth > kRecursionDepthLimit ||
272
+ state_->steps > kParseStepsLimit) {
273
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
274
+ state_->too_complex = true;
275
+ #endif
276
+ return true;
277
+ }
278
+ return false;
227
279
  }
228
280
 
229
281
  private:
@@ -270,6 +322,10 @@ static void InitState(State* state,
270
322
  state->out_end_idx = static_cast<int>(out_size);
271
323
  state->recursion_depth = 0;
272
324
  state->steps = 0;
325
+ #ifdef ABSL_INTERNAL_DEMANGLE_RECORDS_HIGH_WATER_MARK
326
+ state->high_water_mark = 0;
327
+ state->too_complex = false;
328
+ #endif
273
329
 
274
330
  state->parse_state.mangled_idx = 0;
275
331
  state->parse_state.out_cur_idx = 0;
@@ -291,13 +347,14 @@ static bool ParseOneCharToken(State *state, const char one_char_token) {
291
347
  if (guard.IsTooComplex()) return false;
292
348
  if (RemainingInput(state)[0] == one_char_token) {
293
349
  ++state->parse_state.mangled_idx;
350
+ UpdateHighWaterMark(state);
294
351
  return true;
295
352
  }
296
353
  return false;
297
354
  }
298
355
 
299
- // Returns true and advances "mangled_cur" if we find "two_char_token"
300
- // at "mangled_cur" position. It is assumed that "two_char_token" does
356
+ // Returns true and advances "mangled_idx" if we find "two_char_token"
357
+ // at "mangled_idx" position. It is assumed that "two_char_token" does
301
358
  // not contain '\0'.
302
359
  static bool ParseTwoCharToken(State *state, const char *two_char_token) {
303
360
  ComplexityGuard guard(state);
@@ -305,11 +362,45 @@ static bool ParseTwoCharToken(State *state, const char *two_char_token) {
305
362
  if (RemainingInput(state)[0] == two_char_token[0] &&
306
363
  RemainingInput(state)[1] == two_char_token[1]) {
307
364
  state->parse_state.mangled_idx += 2;
365
+ UpdateHighWaterMark(state);
308
366
  return true;
309
367
  }
310
368
  return false;
311
369
  }
312
370
 
371
+ // Returns true and advances "mangled_idx" if we find "three_char_token"
372
+ // at "mangled_idx" position. It is assumed that "three_char_token" does
373
+ // not contain '\0'.
374
+ static bool ParseThreeCharToken(State *state, const char *three_char_token) {
375
+ ComplexityGuard guard(state);
376
+ if (guard.IsTooComplex()) return false;
377
+ if (RemainingInput(state)[0] == three_char_token[0] &&
378
+ RemainingInput(state)[1] == three_char_token[1] &&
379
+ RemainingInput(state)[2] == three_char_token[2]) {
380
+ state->parse_state.mangled_idx += 3;
381
+ UpdateHighWaterMark(state);
382
+ return true;
383
+ }
384
+ return false;
385
+ }
386
+
387
+ // Returns true and advances "mangled_idx" if we find a copy of the
388
+ // NUL-terminated string "long_token" at "mangled_idx" position.
389
+ static bool ParseLongToken(State *state, const char *long_token) {
390
+ ComplexityGuard guard(state);
391
+ if (guard.IsTooComplex()) return false;
392
+ int i = 0;
393
+ for (; long_token[i] != '\0'; ++i) {
394
+ // Note that we cannot run off the end of the NUL-terminated input here.
395
+ // Inside the loop body, long_token[i] is known to be different from NUL.
396
+ // So if we read the NUL on the end of the input here, we return at once.
397
+ if (RemainingInput(state)[i] != long_token[i]) return false;
398
+ }
399
+ state->parse_state.mangled_idx += i;
400
+ UpdateHighWaterMark(state);
401
+ return true;
402
+ }
403
+
313
404
  // Returns true and advances "mangled_cur" if we find any character in
314
405
  // "char_class" at "mangled_cur" position.
315
406
  static bool ParseCharClass(State *state, const char *char_class) {
@@ -322,6 +413,7 @@ static bool ParseCharClass(State *state, const char *char_class) {
322
413
  for (; *p != '\0'; ++p) {
323
414
  if (RemainingInput(state)[0] == *p) {
324
415
  ++state->parse_state.mangled_idx;
416
+ UpdateHighWaterMark(state);
325
417
  return true;
326
418
  }
327
419
  }
@@ -554,6 +646,7 @@ static bool ParseFloatNumber(State *state);
554
646
  static bool ParseSeqId(State *state);
555
647
  static bool ParseIdentifier(State *state, size_t length);
556
648
  static bool ParseOperatorName(State *state, int *arity);
649
+ static bool ParseConversionOperatorType(State *state);
557
650
  static bool ParseSpecialName(State *state);
558
651
  static bool ParseCallOffset(State *state);
559
652
  static bool ParseNVOffset(State *state);
@@ -563,21 +656,33 @@ static bool ParseCtorDtorName(State *state);
563
656
  static bool ParseDecltype(State *state);
564
657
  static bool ParseType(State *state);
565
658
  static bool ParseCVQualifiers(State *state);
659
+ static bool ParseExtendedQualifier(State *state);
566
660
  static bool ParseBuiltinType(State *state);
661
+ static bool ParseVendorExtendedType(State *state);
567
662
  static bool ParseFunctionType(State *state);
568
663
  static bool ParseBareFunctionType(State *state);
664
+ static bool ParseOverloadAttribute(State *state);
569
665
  static bool ParseClassEnumType(State *state);
570
666
  static bool ParseArrayType(State *state);
571
667
  static bool ParsePointerToMemberType(State *state);
572
668
  static bool ParseTemplateParam(State *state);
669
+ static bool ParseTemplateParamDecl(State *state);
573
670
  static bool ParseTemplateTemplateParam(State *state);
574
671
  static bool ParseTemplateArgs(State *state);
575
672
  static bool ParseTemplateArg(State *state);
576
673
  static bool ParseBaseUnresolvedName(State *state);
577
674
  static bool ParseUnresolvedName(State *state);
675
+ static bool ParseUnresolvedQualifierLevel(State *state);
676
+ static bool ParseUnionSelector(State* state);
677
+ static bool ParseFunctionParam(State* state);
678
+ static bool ParseBracedExpression(State *state);
578
679
  static bool ParseExpression(State *state);
680
+ static bool ParseInitializer(State *state);
579
681
  static bool ParseExprPrimary(State *state);
580
- static bool ParseExprCastValue(State *state);
682
+ static bool ParseExprCastValueAndTrailingE(State *state);
683
+ static bool ParseQRequiresClauseExpr(State *state);
684
+ static bool ParseRequirement(State *state);
685
+ static bool ParseTypeConstraint(State *state);
581
686
  static bool ParseLocalName(State *state);
582
687
  static bool ParseLocalNameSuffix(State *state);
583
688
  static bool ParseDiscriminator(State *state);
@@ -622,22 +727,34 @@ static bool ParseMangledName(State *state) {
622
727
  }
623
728
 
624
729
  // <encoding> ::= <(function) name> <bare-function-type>
730
+ // [`Q` <requires-clause expr>]
625
731
  // ::= <(data) name>
626
732
  // ::= <special-name>
733
+ //
734
+ // NOTE: Based on http://shortn/_Hoq9qG83rx
627
735
  static bool ParseEncoding(State *state) {
628
736
  ComplexityGuard guard(state);
629
737
  if (guard.IsTooComplex()) return false;
630
- // Implementing the first two productions together as <name>
631
- // [<bare-function-type>] avoids exponential blowup of backtracking.
738
+ // Since the first two productions both start with <name>, attempt
739
+ // to parse it only once to avoid exponential blowup of backtracking.
632
740
  //
633
- // Since Optional(...) can't fail, there's no need to copy the state for
634
- // backtracking.
635
- if (ParseName(state) && Optional(ParseBareFunctionType(state))) {
741
+ // We're careful about exponential blowup because <encoding> recursively
742
+ // appears in other productions downstream of its first two productions,
743
+ // which means that every call to `ParseName` would possibly indirectly
744
+ // result in two calls to `ParseName` etc.
745
+ if (ParseName(state)) {
746
+ if (!ParseBareFunctionType(state)) {
747
+ return true; // <(data) name>
748
+ }
749
+
750
+ // Parsed: <(function) name> <bare-function-type>
751
+ // Pending: [`Q` <requires-clause expr>]
752
+ ParseQRequiresClauseExpr(state); // restores state on failure
636
753
  return true;
637
754
  }
638
755
 
639
756
  if (ParseSpecialName(state)) {
640
- return true;
757
+ return true; // <special-name>
641
758
  }
642
759
  return false;
643
760
  }
@@ -723,19 +840,26 @@ static bool ParseNestedName(State *state) {
723
840
  // <prefix> ::= <prefix> <unqualified-name>
724
841
  // ::= <template-prefix> <template-args>
725
842
  // ::= <template-param>
843
+ // ::= <decltype>
726
844
  // ::= <substitution>
727
845
  // ::= # empty
728
846
  // <template-prefix> ::= <prefix> <(template) unqualified-name>
729
847
  // ::= <template-param>
730
848
  // ::= <substitution>
849
+ // ::= <vendor-extended-type>
731
850
  static bool ParsePrefix(State *state) {
732
851
  ComplexityGuard guard(state);
733
852
  if (guard.IsTooComplex()) return false;
734
853
  bool has_something = false;
735
854
  while (true) {
736
855
  MaybeAppendSeparator(state);
737
- if (ParseTemplateParam(state) ||
856
+ if (ParseTemplateParam(state) || ParseDecltype(state) ||
738
857
  ParseSubstitution(state, /*accept_std=*/true) ||
858
+ // Although the official grammar does not mention it, nested-names
859
+ // shaped like Nu14__some_builtinIiE6memberE occur in practice, and it
860
+ // is not clear what else a compiler is supposed to do when a
861
+ // vendor-extended type has named members.
862
+ ParseVendorExtendedType(state) ||
739
863
  ParseUnscopedName(state) ||
740
864
  (ParseOneCharToken(state, 'M') && ParseUnnamedTypeName(state))) {
741
865
  has_something = true;
@@ -757,8 +881,14 @@ static bool ParsePrefix(State *state) {
757
881
  // ::= <source-name> [<abi-tags>]
758
882
  // ::= <local-source-name> [<abi-tags>]
759
883
  // ::= <unnamed-type-name> [<abi-tags>]
884
+ // ::= DC <source-name>+ E # C++17 structured binding
885
+ // ::= F <source-name> # C++20 constrained friend
886
+ // ::= F <operator-name> # C++20 constrained friend
760
887
  //
761
888
  // <local-source-name> is a GCC extension; see below.
889
+ //
890
+ // For the F notation for constrained friends, see
891
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24#issuecomment-1491130332.
762
892
  static bool ParseUnqualifiedName(State *state) {
763
893
  ComplexityGuard guard(state);
764
894
  if (guard.IsTooComplex()) return false;
@@ -767,6 +897,23 @@ static bool ParseUnqualifiedName(State *state) {
767
897
  ParseUnnamedTypeName(state)) {
768
898
  return ParseAbiTags(state);
769
899
  }
900
+
901
+ // DC <source-name>+ E
902
+ ParseState copy = state->parse_state;
903
+ if (ParseTwoCharToken(state, "DC") && OneOrMore(ParseSourceName, state) &&
904
+ ParseOneCharToken(state, 'E')) {
905
+ return true;
906
+ }
907
+ state->parse_state = copy;
908
+
909
+ // F <source-name>
910
+ // F <operator-name>
911
+ if (ParseOneCharToken(state, 'F') && MaybeAppend(state, "friend ") &&
912
+ (ParseSourceName(state) || ParseOperatorName(state, nullptr))) {
913
+ return true;
914
+ }
915
+ state->parse_state = copy;
916
+
770
917
  return false;
771
918
  }
772
919
 
@@ -824,7 +971,11 @@ static bool ParseLocalSourceName(State *state) {
824
971
  // <unnamed-type-name> ::= Ut [<(nonnegative) number>] _
825
972
  // ::= <closure-type-name>
826
973
  // <closure-type-name> ::= Ul <lambda-sig> E [<(nonnegative) number>] _
827
- // <lambda-sig> ::= <(parameter) type>+
974
+ // <lambda-sig> ::= <template-param-decl>* <(parameter) type>+
975
+ //
976
+ // For <template-param-decl>* in <lambda-sig> see:
977
+ //
978
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/31
828
979
  static bool ParseUnnamedTypeName(State *state) {
829
980
  ComplexityGuard guard(state);
830
981
  if (guard.IsTooComplex()) return false;
@@ -847,6 +998,7 @@ static bool ParseUnnamedTypeName(State *state) {
847
998
  // Closure type.
848
999
  which = -1;
849
1000
  if (ParseTwoCharToken(state, "Ul") && DisableAppend(state) &&
1001
+ ZeroOrMore(ParseTemplateParamDecl, state) &&
850
1002
  OneOrMore(ParseType, state) && RestoreAppend(state, copy.append) &&
851
1003
  ParseOneCharToken(state, 'E') && Optional(ParseNumber(state, &which)) &&
852
1004
  which <= std::numeric_limits<int>::max() - 2 && // Don't overflow.
@@ -888,6 +1040,7 @@ static bool ParseNumber(State *state, int *number_out) {
888
1040
  }
889
1041
  if (p != RemainingInput(state)) { // Conversion succeeded.
890
1042
  state->parse_state.mangled_idx += p - RemainingInput(state);
1043
+ UpdateHighWaterMark(state);
891
1044
  if (number_out != nullptr) {
892
1045
  // Note: possibly truncate "number".
893
1046
  *number_out = static_cast<int>(number);
@@ -910,6 +1063,7 @@ static bool ParseFloatNumber(State *state) {
910
1063
  }
911
1064
  if (p != RemainingInput(state)) { // Conversion succeeded.
912
1065
  state->parse_state.mangled_idx += p - RemainingInput(state);
1066
+ UpdateHighWaterMark(state);
913
1067
  return true;
914
1068
  }
915
1069
  return false;
@@ -928,6 +1082,7 @@ static bool ParseSeqId(State *state) {
928
1082
  }
929
1083
  if (p != RemainingInput(state)) { // Conversion succeeded.
930
1084
  state->parse_state.mangled_idx += p - RemainingInput(state);
1085
+ UpdateHighWaterMark(state);
931
1086
  return true;
932
1087
  }
933
1088
  return false;
@@ -946,11 +1101,13 @@ static bool ParseIdentifier(State *state, size_t length) {
946
1101
  MaybeAppendWithLength(state, RemainingInput(state), length);
947
1102
  }
948
1103
  state->parse_state.mangled_idx += length;
1104
+ UpdateHighWaterMark(state);
949
1105
  return true;
950
1106
  }
951
1107
 
952
1108
  // <operator-name> ::= nw, and other two letters cases
953
1109
  // ::= cv <type> # (cast)
1110
+ // ::= li <source-name> # C++11 user-defined literal
954
1111
  // ::= v <digit> <source-name> # vendor extended operator
955
1112
  static bool ParseOperatorName(State *state, int *arity) {
956
1113
  ComplexityGuard guard(state);
@@ -961,7 +1118,7 @@ static bool ParseOperatorName(State *state, int *arity) {
961
1118
  // First check with "cv" (cast) case.
962
1119
  ParseState copy = state->parse_state;
963
1120
  if (ParseTwoCharToken(state, "cv") && MaybeAppend(state, "operator ") &&
964
- EnterNestedName(state) && ParseType(state) &&
1121
+ EnterNestedName(state) && ParseConversionOperatorType(state) &&
965
1122
  LeaveNestedName(state, copy.nest_level)) {
966
1123
  if (arity != nullptr) {
967
1124
  *arity = 1;
@@ -970,6 +1127,13 @@ static bool ParseOperatorName(State *state, int *arity) {
970
1127
  }
971
1128
  state->parse_state = copy;
972
1129
 
1130
+ // Then user-defined literals.
1131
+ if (ParseTwoCharToken(state, "li") && MaybeAppend(state, "operator\"\" ") &&
1132
+ ParseSourceName(state)) {
1133
+ return true;
1134
+ }
1135
+ state->parse_state = copy;
1136
+
973
1137
  // Then vendor extended operators.
974
1138
  if (ParseOneCharToken(state, 'v') && ParseDigit(state, arity) &&
975
1139
  ParseSourceName(state)) {
@@ -997,36 +1161,120 @@ static bool ParseOperatorName(State *state, int *arity) {
997
1161
  }
998
1162
  MaybeAppend(state, p->real_name);
999
1163
  state->parse_state.mangled_idx += 2;
1164
+ UpdateHighWaterMark(state);
1000
1165
  return true;
1001
1166
  }
1002
1167
  }
1003
1168
  return false;
1004
1169
  }
1005
1170
 
1171
+ // <operator-name> ::= cv <type> # (cast)
1172
+ //
1173
+ // The name of a conversion operator is the one place where cv-qualifiers, *, &,
1174
+ // and other simple type combinators are expected to appear in our stripped-down
1175
+ // demangling (elsewhere they appear in function signatures or template
1176
+ // arguments, which we omit from the output). We make reasonable efforts to
1177
+ // render simple cases accurately.
1178
+ static bool ParseConversionOperatorType(State *state) {
1179
+ ComplexityGuard guard(state);
1180
+ if (guard.IsTooComplex()) return false;
1181
+ ParseState copy = state->parse_state;
1182
+
1183
+ // Scan pointers, const, and other easy mangling prefixes with postfix
1184
+ // demanglings. Remember the range of input for later rescanning.
1185
+ //
1186
+ // See `ParseType` and the `switch` below for the meaning of each char.
1187
+ const char* begin_simple_prefixes = RemainingInput(state);
1188
+ while (ParseCharClass(state, "OPRCGrVK")) {}
1189
+ const char* end_simple_prefixes = RemainingInput(state);
1190
+
1191
+ // Emit the base type first.
1192
+ if (!ParseType(state)) {
1193
+ state->parse_state = copy;
1194
+ return false;
1195
+ }
1196
+
1197
+ // Then rescan the easy type combinators in reverse order to emit their
1198
+ // demanglings in the expected output order.
1199
+ while (begin_simple_prefixes != end_simple_prefixes) {
1200
+ switch (*--end_simple_prefixes) {
1201
+ case 'P':
1202
+ MaybeAppend(state, "*");
1203
+ break;
1204
+ case 'R':
1205
+ MaybeAppend(state, "&");
1206
+ break;
1207
+ case 'O':
1208
+ MaybeAppend(state, "&&");
1209
+ break;
1210
+ case 'C':
1211
+ MaybeAppend(state, " _Complex");
1212
+ break;
1213
+ case 'G':
1214
+ MaybeAppend(state, " _Imaginary");
1215
+ break;
1216
+ case 'r':
1217
+ MaybeAppend(state, " restrict");
1218
+ break;
1219
+ case 'V':
1220
+ MaybeAppend(state, " volatile");
1221
+ break;
1222
+ case 'K':
1223
+ MaybeAppend(state, " const");
1224
+ break;
1225
+ }
1226
+ }
1227
+ return true;
1228
+ }
1229
+
1006
1230
  // <special-name> ::= TV <type>
1007
1231
  // ::= TT <type>
1008
1232
  // ::= TI <type>
1009
1233
  // ::= TS <type>
1010
- // ::= TH <type> # thread-local
1234
+ // ::= TW <name> # thread-local wrapper
1235
+ // ::= TH <name> # thread-local initialization
1011
1236
  // ::= Tc <call-offset> <call-offset> <(base) encoding>
1012
1237
  // ::= GV <(object) name>
1238
+ // ::= GR <(object) name> [<seq-id>] _
1013
1239
  // ::= T <call-offset> <(base) encoding>
1240
+ // ::= GTt <encoding> # transaction-safe entry point
1241
+ // ::= TA <template-arg> # nontype template parameter object
1014
1242
  // G++ extensions:
1015
1243
  // ::= TC <type> <(offset) number> _ <(base) type>
1016
1244
  // ::= TF <type>
1017
1245
  // ::= TJ <type>
1018
- // ::= GR <name>
1246
+ // ::= GR <name> # without final _, perhaps an earlier form?
1019
1247
  // ::= GA <encoding>
1020
1248
  // ::= Th <call-offset> <(base) encoding>
1021
1249
  // ::= Tv <call-offset> <(base) encoding>
1022
1250
  //
1023
- // Note: we don't care much about them since they don't appear in
1024
- // stack traces. The are special data.
1251
+ // Note: Most of these are special data, not functions that occur in stack
1252
+ // traces. Exceptions are TW and TH, which denote functions supporting the
1253
+ // thread_local feature. For these see:
1254
+ //
1255
+ // https://maskray.me/blog/2021-02-14-all-about-thread-local-storage
1256
+ //
1257
+ // For TA see https://github.com/itanium-cxx-abi/cxx-abi/issues/63.
1025
1258
  static bool ParseSpecialName(State *state) {
1026
1259
  ComplexityGuard guard(state);
1027
1260
  if (guard.IsTooComplex()) return false;
1028
1261
  ParseState copy = state->parse_state;
1029
- if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "VTISH") &&
1262
+
1263
+ if (ParseTwoCharToken(state, "TW")) {
1264
+ MaybeAppend(state, "thread-local wrapper routine for ");
1265
+ if (ParseName(state)) return true;
1266
+ state->parse_state = copy;
1267
+ return false;
1268
+ }
1269
+
1270
+ if (ParseTwoCharToken(state, "TH")) {
1271
+ MaybeAppend(state, "thread-local initialization routine for ");
1272
+ if (ParseName(state)) return true;
1273
+ state->parse_state = copy;
1274
+ return false;
1275
+ }
1276
+
1277
+ if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "VTIS") &&
1030
1278
  ParseType(state)) {
1031
1279
  return true;
1032
1280
  }
@@ -1064,21 +1312,51 @@ static bool ParseSpecialName(State *state) {
1064
1312
  }
1065
1313
  state->parse_state = copy;
1066
1314
 
1067
- if (ParseTwoCharToken(state, "GR") && ParseName(state)) {
1315
+ // <special-name> ::= GR <(object) name> [<seq-id>] _ # modern standard
1316
+ // ::= GR <(object) name> # also recognized
1317
+ if (ParseTwoCharToken(state, "GR")) {
1318
+ MaybeAppend(state, "reference temporary for ");
1319
+ if (!ParseName(state)) {
1320
+ state->parse_state = copy;
1321
+ return false;
1322
+ }
1323
+ const bool has_seq_id = ParseSeqId(state);
1324
+ const bool has_underscore = ParseOneCharToken(state, '_');
1325
+ if (has_seq_id && !has_underscore) {
1326
+ state->parse_state = copy;
1327
+ return false;
1328
+ }
1068
1329
  return true;
1069
1330
  }
1070
- state->parse_state = copy;
1071
1331
 
1072
1332
  if (ParseTwoCharToken(state, "GA") && ParseEncoding(state)) {
1073
1333
  return true;
1074
1334
  }
1075
1335
  state->parse_state = copy;
1076
1336
 
1337
+ if (ParseThreeCharToken(state, "GTt") &&
1338
+ MaybeAppend(state, "transaction clone for ") && ParseEncoding(state)) {
1339
+ return true;
1340
+ }
1341
+ state->parse_state = copy;
1342
+
1077
1343
  if (ParseOneCharToken(state, 'T') && ParseCharClass(state, "hv") &&
1078
1344
  ParseCallOffset(state) && ParseEncoding(state)) {
1079
1345
  return true;
1080
1346
  }
1081
1347
  state->parse_state = copy;
1348
+
1349
+ if (ParseTwoCharToken(state, "TA")) {
1350
+ bool append = state->parse_state.append;
1351
+ DisableAppend(state);
1352
+ if (ParseTemplateArg(state)) {
1353
+ RestoreAppend(state, append);
1354
+ MaybeAppend(state, "template parameter object");
1355
+ return true;
1356
+ }
1357
+ }
1358
+ state->parse_state = copy;
1359
+
1082
1360
  return false;
1083
1361
  }
1084
1362
 
@@ -1182,7 +1460,6 @@ static bool ParseDecltype(State *state) {
1182
1460
  // ::= O <type> # rvalue reference-to (C++0x)
1183
1461
  // ::= C <type> # complex pair (C 2000)
1184
1462
  // ::= G <type> # imaginary (C 2000)
1185
- // ::= U <source-name> <type> # vendor extended type qualifier
1186
1463
  // ::= <builtin-type>
1187
1464
  // ::= <function-type>
1188
1465
  // ::= <class-enum-type> # note: just an alias for <name>
@@ -1193,7 +1470,9 @@ static bool ParseDecltype(State *state) {
1193
1470
  // ::= <decltype>
1194
1471
  // ::= <substitution>
1195
1472
  // ::= Dp <type> # pack expansion of (C++0x)
1196
- // ::= Dv <num-elems> _ # GNU vector extension
1473
+ // ::= Dv <(elements) number> _ <type> # GNU vector extension
1474
+ // ::= Dv <(bytes) expression> _ <type>
1475
+ // ::= Dk <type-constraint> # constrained auto
1197
1476
  //
1198
1477
  static bool ParseType(State *state) {
1199
1478
  ComplexityGuard guard(state);
@@ -1236,12 +1515,6 @@ static bool ParseType(State *state) {
1236
1515
  }
1237
1516
  state->parse_state = copy;
1238
1517
 
1239
- if (ParseOneCharToken(state, 'U') && ParseSourceName(state) &&
1240
- ParseType(state)) {
1241
- return true;
1242
- }
1243
- state->parse_state = copy;
1244
-
1245
1518
  if (ParseBuiltinType(state) || ParseFunctionType(state) ||
1246
1519
  ParseClassEnumType(state) || ParseArrayType(state) ||
1247
1520
  ParsePointerToMemberType(state) || ParseDecltype(state) ||
@@ -1260,54 +1533,160 @@ static bool ParseType(State *state) {
1260
1533
  return true;
1261
1534
  }
1262
1535
 
1536
+ // GNU vector extension Dv <number> _ <type>
1263
1537
  if (ParseTwoCharToken(state, "Dv") && ParseNumber(state, nullptr) &&
1264
- ParseOneCharToken(state, '_')) {
1538
+ ParseOneCharToken(state, '_') && ParseType(state)) {
1265
1539
  return true;
1266
1540
  }
1267
1541
  state->parse_state = copy;
1268
1542
 
1269
- return false;
1543
+ // GNU vector extension Dv <expression> _ <type>
1544
+ if (ParseTwoCharToken(state, "Dv") && ParseExpression(state) &&
1545
+ ParseOneCharToken(state, '_') && ParseType(state)) {
1546
+ return true;
1547
+ }
1548
+ state->parse_state = copy;
1549
+
1550
+ if (ParseTwoCharToken(state, "Dk") && ParseTypeConstraint(state)) {
1551
+ return true;
1552
+ }
1553
+ state->parse_state = copy;
1554
+
1555
+ // For this notation see CXXNameMangler::mangleType in Clang's source code.
1556
+ // The relevant logic and its comment "not clear how to mangle this!" date
1557
+ // from 2011, so it may be with us awhile.
1558
+ return ParseLongToken(state, "_SUBSTPACK_");
1270
1559
  }
1271
1560
 
1561
+ // <qualifiers> ::= <extended-qualifier>* <CV-qualifiers>
1272
1562
  // <CV-qualifiers> ::= [r] [V] [K]
1563
+ //
1273
1564
  // We don't allow empty <CV-qualifiers> to avoid infinite loop in
1274
1565
  // ParseType().
1275
1566
  static bool ParseCVQualifiers(State *state) {
1276
1567
  ComplexityGuard guard(state);
1277
1568
  if (guard.IsTooComplex()) return false;
1278
1569
  int num_cv_qualifiers = 0;
1570
+ while (ParseExtendedQualifier(state)) ++num_cv_qualifiers;
1279
1571
  num_cv_qualifiers += ParseOneCharToken(state, 'r');
1280
1572
  num_cv_qualifiers += ParseOneCharToken(state, 'V');
1281
1573
  num_cv_qualifiers += ParseOneCharToken(state, 'K');
1282
1574
  return num_cv_qualifiers > 0;
1283
1575
  }
1284
1576
 
1577
+ // <extended-qualifier> ::= U <source-name> [<template-args>]
1578
+ static bool ParseExtendedQualifier(State *state) {
1579
+ ComplexityGuard guard(state);
1580
+ if (guard.IsTooComplex()) return false;
1581
+ ParseState copy = state->parse_state;
1582
+
1583
+ if (!ParseOneCharToken(state, 'U')) return false;
1584
+
1585
+ bool append = state->parse_state.append;
1586
+ DisableAppend(state);
1587
+ if (!ParseSourceName(state)) {
1588
+ state->parse_state = copy;
1589
+ return false;
1590
+ }
1591
+ Optional(ParseTemplateArgs(state));
1592
+ RestoreAppend(state, append);
1593
+ return true;
1594
+ }
1595
+
1285
1596
  // <builtin-type> ::= v, etc. # single-character builtin types
1286
- // ::= u <source-name>
1597
+ // ::= <vendor-extended-type>
1287
1598
  // ::= Dd, etc. # two-character builtin types
1599
+ // ::= DB (<number> | <expression>) _ # _BitInt(N)
1600
+ // ::= DU (<number> | <expression>) _ # unsigned _BitInt(N)
1601
+ // ::= DF <number> _ # _FloatN (N bits)
1602
+ // ::= DF <number> x # _FloatNx
1603
+ // ::= DF16b # std::bfloat16_t
1288
1604
  //
1289
1605
  // Not supported:
1290
- // ::= DF <number> _ # _FloatN (N bits)
1291
- //
1606
+ // ::= [DS] DA <fixed-point-size>
1607
+ // ::= [DS] DR <fixed-point-size>
1608
+ // because real implementations of N1169 fixed-point are scant.
1292
1609
  static bool ParseBuiltinType(State *state) {
1293
1610
  ComplexityGuard guard(state);
1294
1611
  if (guard.IsTooComplex()) return false;
1295
- const AbbrevPair *p;
1296
- for (p = kBuiltinTypeList; p->abbrev != nullptr; ++p) {
1612
+ ParseState copy = state->parse_state;
1613
+
1614
+ // DB (<number> | <expression>) _ # _BitInt(N)
1615
+ // DU (<number> | <expression>) _ # unsigned _BitInt(N)
1616
+ if (ParseTwoCharToken(state, "DB") ||
1617
+ (ParseTwoCharToken(state, "DU") && MaybeAppend(state, "unsigned "))) {
1618
+ bool append = state->parse_state.append;
1619
+ DisableAppend(state);
1620
+ int number = -1;
1621
+ if (!ParseNumber(state, &number) && !ParseExpression(state)) {
1622
+ state->parse_state = copy;
1623
+ return false;
1624
+ }
1625
+ RestoreAppend(state, append);
1626
+
1627
+ if (!ParseOneCharToken(state, '_')) {
1628
+ state->parse_state = copy;
1629
+ return false;
1630
+ }
1631
+
1632
+ MaybeAppend(state, "_BitInt(");
1633
+ if (number >= 0) {
1634
+ MaybeAppendDecimal(state, number);
1635
+ } else {
1636
+ MaybeAppend(state, "?"); // the best we can do for dependent sizes
1637
+ }
1638
+ MaybeAppend(state, ")");
1639
+ return true;
1640
+ }
1641
+
1642
+ // DF <number> _ # _FloatN
1643
+ // DF <number> x # _FloatNx
1644
+ // DF16b # std::bfloat16_t
1645
+ if (ParseTwoCharToken(state, "DF")) {
1646
+ if (ParseThreeCharToken(state, "16b")) {
1647
+ MaybeAppend(state, "std::bfloat16_t");
1648
+ return true;
1649
+ }
1650
+ int number = 0;
1651
+ if (!ParseNumber(state, &number)) {
1652
+ state->parse_state = copy;
1653
+ return false;
1654
+ }
1655
+ MaybeAppend(state, "_Float");
1656
+ MaybeAppendDecimal(state, number);
1657
+ if (ParseOneCharToken(state, 'x')) {
1658
+ MaybeAppend(state, "x");
1659
+ return true;
1660
+ }
1661
+ if (ParseOneCharToken(state, '_')) return true;
1662
+ state->parse_state = copy;
1663
+ return false;
1664
+ }
1665
+
1666
+ for (const AbbrevPair *p = kBuiltinTypeList; p->abbrev != nullptr; ++p) {
1297
1667
  // Guaranteed only 1- or 2-character strings in kBuiltinTypeList.
1298
1668
  if (p->abbrev[1] == '\0') {
1299
1669
  if (ParseOneCharToken(state, p->abbrev[0])) {
1300
1670
  MaybeAppend(state, p->real_name);
1301
- return true;
1671
+ return true; // ::= v, etc. # single-character builtin types
1302
1672
  }
1303
1673
  } else if (p->abbrev[2] == '\0' && ParseTwoCharToken(state, p->abbrev)) {
1304
1674
  MaybeAppend(state, p->real_name);
1305
- return true;
1675
+ return true; // ::= Dd, etc. # two-character builtin types
1306
1676
  }
1307
1677
  }
1308
1678
 
1679
+ return ParseVendorExtendedType(state);
1680
+ }
1681
+
1682
+ // <vendor-extended-type> ::= u <source-name> [<template-args>]
1683
+ static bool ParseVendorExtendedType(State *state) {
1684
+ ComplexityGuard guard(state);
1685
+ if (guard.IsTooComplex()) return false;
1686
+
1309
1687
  ParseState copy = state->parse_state;
1310
- if (ParseOneCharToken(state, 'u') && ParseSourceName(state)) {
1688
+ if (ParseOneCharToken(state, 'u') && ParseSourceName(state) &&
1689
+ Optional(ParseTemplateArgs(state))) {
1311
1690
  return true;
1312
1691
  }
1313
1692
  state->parse_state = copy;
@@ -1342,28 +1721,44 @@ static bool ParseExceptionSpec(State *state) {
1342
1721
  return false;
1343
1722
  }
1344
1723
 
1345
- // <function-type> ::= [exception-spec] F [Y] <bare-function-type> [O] E
1724
+ // <function-type> ::=
1725
+ // [exception-spec] [Dx] F [Y] <bare-function-type> [<ref-qualifier>] E
1726
+ //
1727
+ // <ref-qualifier> ::= R | O
1346
1728
  static bool ParseFunctionType(State *state) {
1347
1729
  ComplexityGuard guard(state);
1348
1730
  if (guard.IsTooComplex()) return false;
1349
1731
  ParseState copy = state->parse_state;
1350
- if (Optional(ParseExceptionSpec(state)) && ParseOneCharToken(state, 'F') &&
1351
- Optional(ParseOneCharToken(state, 'Y')) && ParseBareFunctionType(state) &&
1352
- Optional(ParseOneCharToken(state, 'O')) &&
1353
- ParseOneCharToken(state, 'E')) {
1354
- return true;
1732
+ Optional(ParseExceptionSpec(state));
1733
+ Optional(ParseTwoCharToken(state, "Dx"));
1734
+ if (!ParseOneCharToken(state, 'F')) {
1735
+ state->parse_state = copy;
1736
+ return false;
1355
1737
  }
1356
- state->parse_state = copy;
1357
- return false;
1738
+ Optional(ParseOneCharToken(state, 'Y'));
1739
+ if (!ParseBareFunctionType(state)) {
1740
+ state->parse_state = copy;
1741
+ return false;
1742
+ }
1743
+ Optional(ParseCharClass(state, "RO"));
1744
+ if (!ParseOneCharToken(state, 'E')) {
1745
+ state->parse_state = copy;
1746
+ return false;
1747
+ }
1748
+ return true;
1358
1749
  }
1359
1750
 
1360
- // <bare-function-type> ::= <(signature) type>+
1751
+ // <bare-function-type> ::= <overload-attribute>* <(signature) type>+
1752
+ //
1753
+ // The <overload-attribute>* prefix is nonstandard; see the comment on
1754
+ // ParseOverloadAttribute.
1361
1755
  static bool ParseBareFunctionType(State *state) {
1362
1756
  ComplexityGuard guard(state);
1363
1757
  if (guard.IsTooComplex()) return false;
1364
1758
  ParseState copy = state->parse_state;
1365
1759
  DisableAppend(state);
1366
- if (OneOrMore(ParseType, state)) {
1760
+ if (ZeroOrMore(ParseOverloadAttribute, state) &&
1761
+ OneOrMore(ParseType, state)) {
1367
1762
  RestoreAppend(state, copy.append);
1368
1763
  MaybeAppend(state, "()");
1369
1764
  return true;
@@ -1372,11 +1767,43 @@ static bool ParseBareFunctionType(State *state) {
1372
1767
  return false;
1373
1768
  }
1374
1769
 
1770
+ // <overload-attribute> ::= Ua <name>
1771
+ //
1772
+ // The nonstandard <overload-attribute> production is sufficient to accept the
1773
+ // current implementation of __attribute__((enable_if(condition, "message")))
1774
+ // and future attributes of a similar shape. See
1775
+ // https://clang.llvm.org/docs/AttributeReference.html#enable-if and the
1776
+ // definition of CXXNameMangler::mangleFunctionEncodingBareType in Clang's
1777
+ // source code.
1778
+ static bool ParseOverloadAttribute(State *state) {
1779
+ ComplexityGuard guard(state);
1780
+ if (guard.IsTooComplex()) return false;
1781
+ ParseState copy = state->parse_state;
1782
+ if (ParseTwoCharToken(state, "Ua") && ParseName(state)) {
1783
+ return true;
1784
+ }
1785
+ state->parse_state = copy;
1786
+ return false;
1787
+ }
1788
+
1375
1789
  // <class-enum-type> ::= <name>
1790
+ // ::= Ts <name> # struct Name or class Name
1791
+ // ::= Tu <name> # union Name
1792
+ // ::= Te <name> # enum Name
1793
+ //
1794
+ // See http://shortn/_W3YrltiEd0.
1376
1795
  static bool ParseClassEnumType(State *state) {
1377
1796
  ComplexityGuard guard(state);
1378
1797
  if (guard.IsTooComplex()) return false;
1379
- return ParseName(state);
1798
+ ParseState copy = state->parse_state;
1799
+ if (Optional(ParseTwoCharToken(state, "Ts") ||
1800
+ ParseTwoCharToken(state, "Tu") ||
1801
+ ParseTwoCharToken(state, "Te")) &&
1802
+ ParseName(state)) {
1803
+ return true;
1804
+ }
1805
+ state->parse_state = copy;
1806
+ return false;
1380
1807
  }
1381
1808
 
1382
1809
  // <array-type> ::= A <(positive dimension) number> _ <(element) type>
@@ -1413,21 +1840,83 @@ static bool ParsePointerToMemberType(State *state) {
1413
1840
 
1414
1841
  // <template-param> ::= T_
1415
1842
  // ::= T <parameter-2 non-negative number> _
1843
+ // ::= TL <level-1> __
1844
+ // ::= TL <level-1> _ <parameter-2 non-negative number> _
1416
1845
  static bool ParseTemplateParam(State *state) {
1417
1846
  ComplexityGuard guard(state);
1418
1847
  if (guard.IsTooComplex()) return false;
1419
1848
  if (ParseTwoCharToken(state, "T_")) {
1420
1849
  MaybeAppend(state, "?"); // We don't support template substitutions.
1421
- return true;
1850
+ return true; // ::= T_
1422
1851
  }
1423
1852
 
1424
1853
  ParseState copy = state->parse_state;
1425
1854
  if (ParseOneCharToken(state, 'T') && ParseNumber(state, nullptr) &&
1426
1855
  ParseOneCharToken(state, '_')) {
1427
1856
  MaybeAppend(state, "?"); // We don't support template substitutions.
1857
+ return true; // ::= T <parameter-2 non-negative number> _
1858
+ }
1859
+ state->parse_state = copy;
1860
+
1861
+ if (ParseTwoCharToken(state, "TL") && ParseNumber(state, nullptr)) {
1862
+ if (ParseTwoCharToken(state, "__")) {
1863
+ MaybeAppend(state, "?"); // We don't support template substitutions.
1864
+ return true; // ::= TL <level-1> __
1865
+ }
1866
+
1867
+ if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr) &&
1868
+ ParseOneCharToken(state, '_')) {
1869
+ MaybeAppend(state, "?"); // We don't support template substitutions.
1870
+ return true; // ::= TL <level-1> _ <parameter-2 non-negative number> _
1871
+ }
1872
+ }
1873
+ state->parse_state = copy;
1874
+ return false;
1875
+ }
1876
+
1877
+ // <template-param-decl>
1878
+ // ::= Ty # template type parameter
1879
+ // ::= Tk <concept name> [<template-args>] # constrained type parameter
1880
+ // ::= Tn <type> # template non-type parameter
1881
+ // ::= Tt <template-param-decl>* E # template template parameter
1882
+ // ::= Tp <template-param-decl> # template parameter pack
1883
+ //
1884
+ // NOTE: <concept name> is just a <name>: http://shortn/_MqJVyr0fc1
1885
+ // TODO(b/324066279): Implement optional suffix for `Tt`:
1886
+ // [Q <requires-clause expr>]
1887
+ static bool ParseTemplateParamDecl(State *state) {
1888
+ ComplexityGuard guard(state);
1889
+ if (guard.IsTooComplex()) return false;
1890
+ ParseState copy = state->parse_state;
1891
+
1892
+ if (ParseTwoCharToken(state, "Ty")) {
1893
+ return true;
1894
+ }
1895
+ state->parse_state = copy;
1896
+
1897
+ if (ParseTwoCharToken(state, "Tk") && ParseName(state) &&
1898
+ Optional(ParseTemplateArgs(state))) {
1899
+ return true;
1900
+ }
1901
+ state->parse_state = copy;
1902
+
1903
+ if (ParseTwoCharToken(state, "Tn") && ParseType(state)) {
1428
1904
  return true;
1429
1905
  }
1430
1906
  state->parse_state = copy;
1907
+
1908
+ if (ParseTwoCharToken(state, "Tt") &&
1909
+ ZeroOrMore(ParseTemplateParamDecl, state) &&
1910
+ ParseOneCharToken(state, 'E')) {
1911
+ return true;
1912
+ }
1913
+ state->parse_state = copy;
1914
+
1915
+ if (ParseTwoCharToken(state, "Tp") && ParseTemplateParamDecl(state)) {
1916
+ return true;
1917
+ }
1918
+ state->parse_state = copy;
1919
+
1431
1920
  return false;
1432
1921
  }
1433
1922
 
@@ -1441,13 +1930,14 @@ static bool ParseTemplateTemplateParam(State *state) {
1441
1930
  ParseSubstitution(state, /*accept_std=*/false));
1442
1931
  }
1443
1932
 
1444
- // <template-args> ::= I <template-arg>+ E
1933
+ // <template-args> ::= I <template-arg>+ [Q <requires-clause expr>] E
1445
1934
  static bool ParseTemplateArgs(State *state) {
1446
1935
  ComplexityGuard guard(state);
1447
1936
  if (guard.IsTooComplex()) return false;
1448
1937
  ParseState copy = state->parse_state;
1449
1938
  DisableAppend(state);
1450
1939
  if (ParseOneCharToken(state, 'I') && OneOrMore(ParseTemplateArg, state) &&
1940
+ Optional(ParseQRequiresClauseExpr(state)) &&
1451
1941
  ParseOneCharToken(state, 'E')) {
1452
1942
  RestoreAppend(state, copy.append);
1453
1943
  MaybeAppend(state, "<>");
@@ -1457,7 +1947,8 @@ static bool ParseTemplateArgs(State *state) {
1457
1947
  return false;
1458
1948
  }
1459
1949
 
1460
- // <template-arg> ::= <type>
1950
+ // <template-arg> ::= <template-param-decl> <template-arg>
1951
+ // ::= <type>
1461
1952
  // ::= <expr-primary>
1462
1953
  // ::= J <template-arg>* E # argument pack
1463
1954
  // ::= X <expression> E
@@ -1541,7 +2032,7 @@ static bool ParseTemplateArg(State *state) {
1541
2032
  // ::= L <source-name> [<template-args>] [<expr-cast-value> E]
1542
2033
  if (ParseLocalSourceName(state) && Optional(ParseTemplateArgs(state))) {
1543
2034
  copy = state->parse_state;
1544
- if (ParseExprCastValue(state) && ParseOneCharToken(state, 'E')) {
2035
+ if (ParseExprCastValueAndTrailingE(state)) {
1545
2036
  return true;
1546
2037
  }
1547
2038
  state->parse_state = copy;
@@ -1560,6 +2051,12 @@ static bool ParseTemplateArg(State *state) {
1560
2051
  return true;
1561
2052
  }
1562
2053
  state->parse_state = copy;
2054
+
2055
+ if (ParseTemplateParamDecl(state) && ParseTemplateArg(state)) {
2056
+ return true;
2057
+ }
2058
+ state->parse_state = copy;
2059
+
1563
2060
  return false;
1564
2061
  }
1565
2062
 
@@ -1614,6 +2111,13 @@ static bool ParseBaseUnresolvedName(State *state) {
1614
2111
  // <base-unresolved-name>
1615
2112
  // ::= [gs] sr <unresolved-qualifier-level>+ E
1616
2113
  // <base-unresolved-name>
2114
+ // ::= sr St <simple-id> <simple-id> # nonstandard
2115
+ //
2116
+ // The last case is not part of the official grammar but has been observed in
2117
+ // real-world examples that the GNU demangler (but not the LLVM demangler) is
2118
+ // able to decode; see demangle_test.cc for one such symbol name. The shape
2119
+ // sr St <simple-id> <simple-id> was inferred by closed-box testing of the GNU
2120
+ // demangler.
1617
2121
  static bool ParseUnresolvedName(State *state) {
1618
2122
  ComplexityGuard guard(state);
1619
2123
  if (guard.IsTooComplex()) return false;
@@ -1633,7 +2137,7 @@ static bool ParseUnresolvedName(State *state) {
1633
2137
 
1634
2138
  if (ParseTwoCharToken(state, "sr") && ParseOneCharToken(state, 'N') &&
1635
2139
  ParseUnresolvedType(state) &&
1636
- OneOrMore(/* <unresolved-qualifier-level> ::= */ ParseSimpleId, state) &&
2140
+ OneOrMore(ParseUnresolvedQualifierLevel, state) &&
1637
2141
  ParseOneCharToken(state, 'E') && ParseBaseUnresolvedName(state)) {
1638
2142
  return true;
1639
2143
  }
@@ -1641,35 +2145,160 @@ static bool ParseUnresolvedName(State *state) {
1641
2145
 
1642
2146
  if (Optional(ParseTwoCharToken(state, "gs")) &&
1643
2147
  ParseTwoCharToken(state, "sr") &&
1644
- OneOrMore(/* <unresolved-qualifier-level> ::= */ ParseSimpleId, state) &&
2148
+ OneOrMore(ParseUnresolvedQualifierLevel, state) &&
1645
2149
  ParseOneCharToken(state, 'E') && ParseBaseUnresolvedName(state)) {
1646
2150
  return true;
1647
2151
  }
1648
2152
  state->parse_state = copy;
1649
2153
 
2154
+ if (ParseTwoCharToken(state, "sr") && ParseTwoCharToken(state, "St") &&
2155
+ ParseSimpleId(state) && ParseSimpleId(state)) {
2156
+ return true;
2157
+ }
2158
+ state->parse_state = copy;
2159
+
1650
2160
  return false;
1651
2161
  }
1652
2162
 
2163
+ // <unresolved-qualifier-level> ::= <simple-id>
2164
+ // ::= <substitution> <template-args>
2165
+ //
2166
+ // The production <substitution> <template-args> is nonstandard but is observed
2167
+ // in practice. An upstream discussion on the best shape of <unresolved-name>
2168
+ // has not converged:
2169
+ //
2170
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/38
2171
+ static bool ParseUnresolvedQualifierLevel(State *state) {
2172
+ ComplexityGuard guard(state);
2173
+ if (guard.IsTooComplex()) return false;
2174
+
2175
+ if (ParseSimpleId(state)) return true;
2176
+
2177
+ ParseState copy = state->parse_state;
2178
+ if (ParseSubstitution(state, /*accept_std=*/false) &&
2179
+ ParseTemplateArgs(state)) {
2180
+ return true;
2181
+ }
2182
+ state->parse_state = copy;
2183
+ return false;
2184
+ }
2185
+
2186
+ // <union-selector> ::= _ [<number>]
2187
+ //
2188
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/47
2189
+ static bool ParseUnionSelector(State *state) {
2190
+ return ParseOneCharToken(state, '_') && Optional(ParseNumber(state, nullptr));
2191
+ }
2192
+
2193
+ // <function-param> ::= fp <(top-level) CV-qualifiers> _
2194
+ // ::= fp <(top-level) CV-qualifiers> <number> _
2195
+ // ::= fL <number> p <(top-level) CV-qualifiers> _
2196
+ // ::= fL <number> p <(top-level) CV-qualifiers> <number> _
2197
+ // ::= fpT # this
2198
+ static bool ParseFunctionParam(State *state) {
2199
+ ComplexityGuard guard(state);
2200
+ if (guard.IsTooComplex()) return false;
2201
+
2202
+ ParseState copy = state->parse_state;
2203
+
2204
+ // Function-param expression (level 0).
2205
+ if (ParseTwoCharToken(state, "fp") && Optional(ParseCVQualifiers(state)) &&
2206
+ Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2207
+ return true;
2208
+ }
2209
+ state->parse_state = copy;
2210
+
2211
+ // Function-param expression (level 1+).
2212
+ if (ParseTwoCharToken(state, "fL") && Optional(ParseNumber(state, nullptr)) &&
2213
+ ParseOneCharToken(state, 'p') && Optional(ParseCVQualifiers(state)) &&
2214
+ Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2215
+ return true;
2216
+ }
2217
+ state->parse_state = copy;
2218
+
2219
+ return ParseThreeCharToken(state, "fpT");
2220
+ }
2221
+
2222
+ // <braced-expression> ::= <expression>
2223
+ // ::= di <field source-name> <braced-expression>
2224
+ // ::= dx <index expression> <braced-expression>
2225
+ // ::= dX <expression> <expression> <braced-expression>
2226
+ static bool ParseBracedExpression(State *state) {
2227
+ ComplexityGuard guard(state);
2228
+ if (guard.IsTooComplex()) return false;
2229
+
2230
+ ParseState copy = state->parse_state;
2231
+
2232
+ if (ParseTwoCharToken(state, "di") && ParseSourceName(state) &&
2233
+ ParseBracedExpression(state)) {
2234
+ return true;
2235
+ }
2236
+ state->parse_state = copy;
2237
+
2238
+ if (ParseTwoCharToken(state, "dx") && ParseExpression(state) &&
2239
+ ParseBracedExpression(state)) {
2240
+ return true;
2241
+ }
2242
+ state->parse_state = copy;
2243
+
2244
+ if (ParseTwoCharToken(state, "dX") &&
2245
+ ParseExpression(state) && ParseExpression(state) &&
2246
+ ParseBracedExpression(state)) {
2247
+ return true;
2248
+ }
2249
+ state->parse_state = copy;
2250
+
2251
+ return ParseExpression(state);
2252
+ }
2253
+
1653
2254
  // <expression> ::= <1-ary operator-name> <expression>
1654
2255
  // ::= <2-ary operator-name> <expression> <expression>
1655
2256
  // ::= <3-ary operator-name> <expression> <expression> <expression>
2257
+ // ::= pp_ <expression> # ++e; pp <expression> is e++
2258
+ // ::= mm_ <expression> # --e; mm <expression> is e--
1656
2259
  // ::= cl <expression>+ E
1657
2260
  // ::= cp <simple-id> <expression>* E # Clang-specific.
2261
+ // ::= so <type> <expression> [<number>] <union-selector>* [p] E
1658
2262
  // ::= cv <type> <expression> # type (expression)
1659
2263
  // ::= cv <type> _ <expression>* E # type (expr-list)
2264
+ // ::= tl <type> <braced-expression>* E
2265
+ // ::= il <braced-expression>* E
2266
+ // ::= [gs] nw <expression>* _ <type> E
2267
+ // ::= [gs] nw <expression>* _ <type> <initializer>
2268
+ // ::= [gs] na <expression>* _ <type> E
2269
+ // ::= [gs] na <expression>* _ <type> <initializer>
2270
+ // ::= [gs] dl <expression>
2271
+ // ::= [gs] da <expression>
2272
+ // ::= dc <type> <expression>
2273
+ // ::= sc <type> <expression>
2274
+ // ::= cc <type> <expression>
2275
+ // ::= rc <type> <expression>
2276
+ // ::= ti <type>
2277
+ // ::= te <expression>
1660
2278
  // ::= st <type>
2279
+ // ::= at <type>
2280
+ // ::= az <expression>
2281
+ // ::= nx <expression>
1661
2282
  // ::= <template-param>
1662
2283
  // ::= <function-param>
2284
+ // ::= sZ <template-param>
2285
+ // ::= sZ <function-param>
2286
+ // ::= sP <template-arg>* E
1663
2287
  // ::= <expr-primary>
1664
2288
  // ::= dt <expression> <unresolved-name> # expr.name
1665
2289
  // ::= pt <expression> <unresolved-name> # expr->name
1666
2290
  // ::= sp <expression> # argument pack expansion
2291
+ // ::= fl <binary operator-name> <expression>
2292
+ // ::= fr <binary operator-name> <expression>
2293
+ // ::= fL <binary operator-name> <expression> <expression>
2294
+ // ::= fR <binary operator-name> <expression> <expression>
2295
+ // ::= tw <expression>
2296
+ // ::= tr
1667
2297
  // ::= sr <type> <unqualified-name> <template-args>
1668
2298
  // ::= sr <type> <unqualified-name>
1669
- // <function-param> ::= fp <(top-level) CV-qualifiers> _
1670
- // ::= fp <(top-level) CV-qualifiers> <number> _
1671
- // ::= fL <number> p <(top-level) CV-qualifiers> _
1672
- // ::= fL <number> p <(top-level) CV-qualifiers> <number> _
2299
+ // ::= u <source-name> <template-arg>* E # vendor extension
2300
+ // ::= rq <requirement>+ E
2301
+ // ::= rQ <bare-function-type> _ <requirement>+ E
1673
2302
  static bool ParseExpression(State *state) {
1674
2303
  ComplexityGuard guard(state);
1675
2304
  if (guard.IsTooComplex()) return false;
@@ -1686,6 +2315,15 @@ static bool ParseExpression(State *state) {
1686
2315
  }
1687
2316
  state->parse_state = copy;
1688
2317
 
2318
+ // Preincrement and predecrement. Postincrement and postdecrement are handled
2319
+ // by the operator-name logic later on.
2320
+ if ((ParseThreeCharToken(state, "pp_") ||
2321
+ ParseThreeCharToken(state, "mm_")) &&
2322
+ ParseExpression(state)) {
2323
+ return true;
2324
+ }
2325
+ state->parse_state = copy;
2326
+
1689
2327
  // Clang-specific "cp <simple-id> <expression>* E"
1690
2328
  // https://clang.llvm.org/doxygen/ItaniumMangle_8cpp_source.html#l04338
1691
2329
  if (ParseTwoCharToken(state, "cp") && ParseSimpleId(state) &&
@@ -1694,17 +2332,65 @@ static bool ParseExpression(State *state) {
1694
2332
  }
1695
2333
  state->parse_state = copy;
1696
2334
 
1697
- // Function-param expression (level 0).
1698
- if (ParseTwoCharToken(state, "fp") && Optional(ParseCVQualifiers(state)) &&
1699
- Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2335
+ // <expression> ::= so <type> <expression> [<number>] <union-selector>* [p] E
2336
+ //
2337
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/47
2338
+ if (ParseTwoCharToken(state, "so") && ParseType(state) &&
2339
+ ParseExpression(state) && Optional(ParseNumber(state, nullptr)) &&
2340
+ ZeroOrMore(ParseUnionSelector, state) &&
2341
+ Optional(ParseOneCharToken(state, 'p')) &&
2342
+ ParseOneCharToken(state, 'E')) {
1700
2343
  return true;
1701
2344
  }
1702
2345
  state->parse_state = copy;
1703
2346
 
1704
- // Function-param expression (level 1+).
1705
- if (ParseTwoCharToken(state, "fL") && Optional(ParseNumber(state, nullptr)) &&
1706
- ParseOneCharToken(state, 'p') && Optional(ParseCVQualifiers(state)) &&
1707
- Optional(ParseNumber(state, nullptr)) && ParseOneCharToken(state, '_')) {
2347
+ // <expression> ::= <function-param>
2348
+ if (ParseFunctionParam(state)) return true;
2349
+ state->parse_state = copy;
2350
+
2351
+ // <expression> ::= tl <type> <braced-expression>* E
2352
+ if (ParseTwoCharToken(state, "tl") && ParseType(state) &&
2353
+ ZeroOrMore(ParseBracedExpression, state) &&
2354
+ ParseOneCharToken(state, 'E')) {
2355
+ return true;
2356
+ }
2357
+ state->parse_state = copy;
2358
+
2359
+ // <expression> ::= il <braced-expression>* E
2360
+ if (ParseTwoCharToken(state, "il") &&
2361
+ ZeroOrMore(ParseBracedExpression, state) &&
2362
+ ParseOneCharToken(state, 'E')) {
2363
+ return true;
2364
+ }
2365
+ state->parse_state = copy;
2366
+
2367
+ // <expression> ::= [gs] nw <expression>* _ <type> E
2368
+ // ::= [gs] nw <expression>* _ <type> <initializer>
2369
+ // ::= [gs] na <expression>* _ <type> E
2370
+ // ::= [gs] na <expression>* _ <type> <initializer>
2371
+ if (Optional(ParseTwoCharToken(state, "gs")) &&
2372
+ (ParseTwoCharToken(state, "nw") || ParseTwoCharToken(state, "na")) &&
2373
+ ZeroOrMore(ParseExpression, state) && ParseOneCharToken(state, '_') &&
2374
+ ParseType(state) &&
2375
+ (ParseOneCharToken(state, 'E') || ParseInitializer(state))) {
2376
+ return true;
2377
+ }
2378
+ state->parse_state = copy;
2379
+
2380
+ // <expression> ::= [gs] dl <expression>
2381
+ // ::= [gs] da <expression>
2382
+ if (Optional(ParseTwoCharToken(state, "gs")) &&
2383
+ (ParseTwoCharToken(state, "dl") || ParseTwoCharToken(state, "da")) &&
2384
+ ParseExpression(state)) {
2385
+ return true;
2386
+ }
2387
+ state->parse_state = copy;
2388
+
2389
+ // dynamic_cast, static_cast, const_cast, reinterpret_cast.
2390
+ //
2391
+ // <expression> ::= (dc | sc | cc | rc) <type> <expression>
2392
+ if (ParseCharClass(state, "dscr") && ParseOneCharToken(state, 'c') &&
2393
+ ParseType(state) && ParseExpression(state)) {
1708
2394
  return true;
1709
2395
  }
1710
2396
  state->parse_state = copy;
@@ -1746,15 +2432,96 @@ static bool ParseExpression(State *state) {
1746
2432
  }
1747
2433
  state->parse_state = copy;
1748
2434
 
2435
+ // typeid(type)
2436
+ if (ParseTwoCharToken(state, "ti") && ParseType(state)) {
2437
+ return true;
2438
+ }
2439
+ state->parse_state = copy;
2440
+
2441
+ // typeid(expression)
2442
+ if (ParseTwoCharToken(state, "te") && ParseExpression(state)) {
2443
+ return true;
2444
+ }
2445
+ state->parse_state = copy;
2446
+
1749
2447
  // sizeof type
1750
2448
  if (ParseTwoCharToken(state, "st") && ParseType(state)) {
1751
2449
  return true;
1752
2450
  }
1753
2451
  state->parse_state = copy;
1754
2452
 
2453
+ // alignof(type)
2454
+ if (ParseTwoCharToken(state, "at") && ParseType(state)) {
2455
+ return true;
2456
+ }
2457
+ state->parse_state = copy;
2458
+
2459
+ // alignof(expression), a GNU extension
2460
+ if (ParseTwoCharToken(state, "az") && ParseExpression(state)) {
2461
+ return true;
2462
+ }
2463
+ state->parse_state = copy;
2464
+
2465
+ // noexcept(expression) appearing as an expression in a dependent signature
2466
+ if (ParseTwoCharToken(state, "nx") && ParseExpression(state)) {
2467
+ return true;
2468
+ }
2469
+ state->parse_state = copy;
2470
+
2471
+ // sizeof...(pack)
2472
+ //
2473
+ // <expression> ::= sZ <template-param>
2474
+ // ::= sZ <function-param>
2475
+ if (ParseTwoCharToken(state, "sZ") &&
2476
+ (ParseFunctionParam(state) || ParseTemplateParam(state))) {
2477
+ return true;
2478
+ }
2479
+ state->parse_state = copy;
2480
+
2481
+ // sizeof...(pack) captured from an alias template
2482
+ //
2483
+ // <expression> ::= sP <template-arg>* E
2484
+ if (ParseTwoCharToken(state, "sP") && ZeroOrMore(ParseTemplateArg, state) &&
2485
+ ParseOneCharToken(state, 'E')) {
2486
+ return true;
2487
+ }
2488
+ state->parse_state = copy;
2489
+
2490
+ // Unary folds (... op pack) and (pack op ...).
2491
+ //
2492
+ // <expression> ::= fl <binary operator-name> <expression>
2493
+ // ::= fr <binary operator-name> <expression>
2494
+ if ((ParseTwoCharToken(state, "fl") || ParseTwoCharToken(state, "fr")) &&
2495
+ ParseOperatorName(state, nullptr) && ParseExpression(state)) {
2496
+ return true;
2497
+ }
2498
+ state->parse_state = copy;
2499
+
2500
+ // Binary folds (init op ... op pack) and (pack op ... op init).
2501
+ //
2502
+ // <expression> ::= fL <binary operator-name> <expression> <expression>
2503
+ // ::= fR <binary operator-name> <expression> <expression>
2504
+ if ((ParseTwoCharToken(state, "fL") || ParseTwoCharToken(state, "fR")) &&
2505
+ ParseOperatorName(state, nullptr) && ParseExpression(state) &&
2506
+ ParseExpression(state)) {
2507
+ return true;
2508
+ }
2509
+ state->parse_state = copy;
2510
+
2511
+ // tw <expression>: throw e
2512
+ if (ParseTwoCharToken(state, "tw") && ParseExpression(state)) {
2513
+ return true;
2514
+ }
2515
+ state->parse_state = copy;
2516
+
2517
+ // tr: throw (rethrows an exception from the handler that caught it)
2518
+ if (ParseTwoCharToken(state, "tr")) return true;
2519
+
1755
2520
  // Object and pointer member access expressions.
2521
+ //
2522
+ // <expression> ::= (dt | pt) <expression> <unresolved-name>
1756
2523
  if ((ParseTwoCharToken(state, "dt") || ParseTwoCharToken(state, "pt")) &&
1757
- ParseExpression(state) && ParseType(state)) {
2524
+ ParseExpression(state) && ParseUnresolvedName(state)) {
1758
2525
  return true;
1759
2526
  }
1760
2527
  state->parse_state = copy;
@@ -1774,9 +2541,61 @@ static bool ParseExpression(State *state) {
1774
2541
  }
1775
2542
  state->parse_state = copy;
1776
2543
 
2544
+ // Vendor extended expressions
2545
+ if (ParseOneCharToken(state, 'u') && ParseSourceName(state) &&
2546
+ ZeroOrMore(ParseTemplateArg, state) && ParseOneCharToken(state, 'E')) {
2547
+ return true;
2548
+ }
2549
+ state->parse_state = copy;
2550
+
2551
+ // <expression> ::= rq <requirement>+ E
2552
+ //
2553
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2554
+ if (ParseTwoCharToken(state, "rq") && OneOrMore(ParseRequirement, state) &&
2555
+ ParseOneCharToken(state, 'E')) {
2556
+ return true;
2557
+ }
2558
+ state->parse_state = copy;
2559
+
2560
+ // <expression> ::= rQ <bare-function-type> _ <requirement>+ E
2561
+ //
2562
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2563
+ if (ParseTwoCharToken(state, "rQ") && ParseBareFunctionType(state) &&
2564
+ ParseOneCharToken(state, '_') && OneOrMore(ParseRequirement, state) &&
2565
+ ParseOneCharToken(state, 'E')) {
2566
+ return true;
2567
+ }
2568
+ state->parse_state = copy;
2569
+
1777
2570
  return ParseUnresolvedName(state);
1778
2571
  }
1779
2572
 
2573
+ // <initializer> ::= pi <expression>* E
2574
+ // ::= il <braced-expression>* E
2575
+ //
2576
+ // The il ... E form is not in the ABI spec but is seen in practice for
2577
+ // braced-init-lists in new-expressions, which are standard syntax from C++11
2578
+ // on.
2579
+ static bool ParseInitializer(State *state) {
2580
+ ComplexityGuard guard(state);
2581
+ if (guard.IsTooComplex()) return false;
2582
+ ParseState copy = state->parse_state;
2583
+
2584
+ if (ParseTwoCharToken(state, "pi") && ZeroOrMore(ParseExpression, state) &&
2585
+ ParseOneCharToken(state, 'E')) {
2586
+ return true;
2587
+ }
2588
+ state->parse_state = copy;
2589
+
2590
+ if (ParseTwoCharToken(state, "il") &&
2591
+ ZeroOrMore(ParseBracedExpression, state) &&
2592
+ ParseOneCharToken(state, 'E')) {
2593
+ return true;
2594
+ }
2595
+ state->parse_state = copy;
2596
+ return false;
2597
+ }
2598
+
1780
2599
  // <expr-primary> ::= L <type> <(value) number> E
1781
2600
  // ::= L <type> <(value) float> E
1782
2601
  // ::= L <mangled-name> E
@@ -1819,10 +2638,35 @@ static bool ParseExprPrimary(State *state) {
1819
2638
  return false;
1820
2639
  }
1821
2640
 
1822
- // The merged cast production.
1823
- if (ParseOneCharToken(state, 'L') && ParseType(state) &&
1824
- ParseExprCastValue(state)) {
1825
- return true;
2641
+ if (ParseOneCharToken(state, 'L')) {
2642
+ // There are two special cases in which a literal may or must contain a type
2643
+ // without a value. The first is that both LDnE and LDn0E are valid
2644
+ // encodings of nullptr, used in different situations. Recognize LDnE here,
2645
+ // leaving LDn0E to be recognized by the general logic afterward.
2646
+ if (ParseThreeCharToken(state, "DnE")) return true;
2647
+
2648
+ // The second special case is a string literal, currently mangled in C++98
2649
+ // style as LA<length + 1>_KcE. This is inadequate to support C++11 and
2650
+ // later versions, and the discussion of this problem has not converged.
2651
+ //
2652
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/64
2653
+ //
2654
+ // For now the bare-type mangling is what's used in practice, so we
2655
+ // recognize this form and only this form if an array type appears here.
2656
+ // Someday we'll probably have to accept a new form of value mangling in
2657
+ // LA...E constructs. (Note also that C++20 allows a wide range of
2658
+ // class-type objects as template arguments, so someday their values will be
2659
+ // mangled and we'll have to recognize them here too.)
2660
+ if (RemainingInput(state)[0] == 'A' /* an array type follows */) {
2661
+ if (ParseType(state) && ParseOneCharToken(state, 'E')) return true;
2662
+ state->parse_state = copy;
2663
+ return false;
2664
+ }
2665
+
2666
+ // The merged cast production.
2667
+ if (ParseType(state) && ParseExprCastValueAndTrailingE(state)) {
2668
+ return true;
2669
+ }
1826
2670
  }
1827
2671
  state->parse_state = copy;
1828
2672
 
@@ -1836,7 +2680,7 @@ static bool ParseExprPrimary(State *state) {
1836
2680
  }
1837
2681
 
1838
2682
  // <number> or <float>, followed by 'E', as described above ParseExprPrimary.
1839
- static bool ParseExprCastValue(State *state) {
2683
+ static bool ParseExprCastValueAndTrailingE(State *state) {
1840
2684
  ComplexityGuard guard(state);
1841
2685
  if (guard.IsTooComplex()) return false;
1842
2686
  // We have to be able to backtrack after accepting a number because we could
@@ -1848,39 +2692,148 @@ static bool ParseExprCastValue(State *state) {
1848
2692
  }
1849
2693
  state->parse_state = copy;
1850
2694
 
1851
- if (ParseFloatNumber(state) && ParseOneCharToken(state, 'E')) {
2695
+ if (ParseFloatNumber(state)) {
2696
+ // <float> for ordinary floating-point types
2697
+ if (ParseOneCharToken(state, 'E')) return true;
2698
+
2699
+ // <float> _ <float> for complex floating-point types
2700
+ if (ParseOneCharToken(state, '_') && ParseFloatNumber(state) &&
2701
+ ParseOneCharToken(state, 'E')) {
2702
+ return true;
2703
+ }
2704
+ }
2705
+ state->parse_state = copy;
2706
+
2707
+ return false;
2708
+ }
2709
+
2710
+ // Parses `Q <requires-clause expr>`.
2711
+ // If parsing fails, applies backtracking to `state`.
2712
+ //
2713
+ // This function covers two symbols instead of one for convenience,
2714
+ // because in LLVM's Itanium ABI mangling grammar, <requires-clause expr>
2715
+ // always appears after Q.
2716
+ //
2717
+ // Does not emit the parsed `requires` clause to simplify the implementation.
2718
+ // In other words, these two functions' mangled names will demangle identically:
2719
+ //
2720
+ // template <typename T>
2721
+ // int foo(T) requires IsIntegral<T>;
2722
+ //
2723
+ // vs.
2724
+ //
2725
+ // template <typename T>
2726
+ // int foo(T);
2727
+ static bool ParseQRequiresClauseExpr(State *state) {
2728
+ ComplexityGuard guard(state);
2729
+ if (guard.IsTooComplex()) return false;
2730
+ ParseState copy = state->parse_state;
2731
+ DisableAppend(state);
2732
+
2733
+ // <requires-clause expr> is just an <expression>: http://shortn/_9E1Ul0rIM8
2734
+ if (ParseOneCharToken(state, 'Q') && ParseExpression(state)) {
2735
+ RestoreAppend(state, copy.append);
2736
+ return true;
2737
+ }
2738
+
2739
+ // also restores append
2740
+ state->parse_state = copy;
2741
+ return false;
2742
+ }
2743
+
2744
+ // <requirement> ::= X <expression> [N] [R <type-constraint>]
2745
+ // <requirement> ::= T <type>
2746
+ // <requirement> ::= Q <constraint-expression>
2747
+ //
2748
+ // <constraint-expression> ::= <expression>
2749
+ //
2750
+ // https://github.com/itanium-cxx-abi/cxx-abi/issues/24
2751
+ static bool ParseRequirement(State *state) {
2752
+ ComplexityGuard guard(state);
2753
+ if (guard.IsTooComplex()) return false;
2754
+
2755
+ ParseState copy = state->parse_state;
2756
+
2757
+ if (ParseOneCharToken(state, 'X') && ParseExpression(state) &&
2758
+ Optional(ParseOneCharToken(state, 'N')) &&
2759
+ // This logic backtracks cleanly if we eat an R but a valid type doesn't
2760
+ // follow it.
2761
+ (!ParseOneCharToken(state, 'R') || ParseTypeConstraint(state))) {
1852
2762
  return true;
1853
2763
  }
1854
2764
  state->parse_state = copy;
1855
2765
 
2766
+ if (ParseOneCharToken(state, 'T') && ParseType(state)) return true;
2767
+ state->parse_state = copy;
2768
+
2769
+ if (ParseOneCharToken(state, 'Q') && ParseExpression(state)) return true;
2770
+ state->parse_state = copy;
2771
+
1856
2772
  return false;
1857
2773
  }
1858
2774
 
2775
+ // <type-constraint> ::= <name>
2776
+ static bool ParseTypeConstraint(State *state) {
2777
+ return ParseName(state);
2778
+ }
2779
+
1859
2780
  // <local-name> ::= Z <(function) encoding> E <(entity) name> [<discriminator>]
1860
2781
  // ::= Z <(function) encoding> E s [<discriminator>]
2782
+ // ::= Z <(function) encoding> E d [<(parameter) number>] _ <name>
1861
2783
  //
1862
2784
  // Parsing a common prefix of these two productions together avoids an
1863
2785
  // exponential blowup of backtracking. Parse like:
1864
2786
  // <local-name> := Z <encoding> E <local-name-suffix>
1865
2787
  // <local-name-suffix> ::= s [<discriminator>]
2788
+ // ::= d [<(parameter) number>] _ <name>
1866
2789
  // ::= <name> [<discriminator>]
1867
2790
 
1868
2791
  static bool ParseLocalNameSuffix(State *state) {
1869
2792
  ComplexityGuard guard(state);
1870
2793
  if (guard.IsTooComplex()) return false;
2794
+ ParseState copy = state->parse_state;
2795
+
2796
+ // <local-name-suffix> ::= d [<(parameter) number>] _ <name>
2797
+ if (ParseOneCharToken(state, 'd') &&
2798
+ (IsDigit(RemainingInput(state)[0]) || RemainingInput(state)[0] == '_')) {
2799
+ int number = -1;
2800
+ Optional(ParseNumber(state, &number));
2801
+ if (number < -1 || number > 2147483645) {
2802
+ // Work around overflow cases. We do not expect these outside of a fuzzer
2803
+ // or other source of adversarial input. If we do detect overflow here,
2804
+ // we'll print {default arg#1}.
2805
+ number = -1;
2806
+ }
2807
+ number += 2;
2808
+
2809
+ // The ::{default arg#1}:: infix must be rendered before the lambda itself,
2810
+ // so print this before parsing the rest of the <local-name-suffix>.
2811
+ MaybeAppend(state, "::{default arg#");
2812
+ MaybeAppendDecimal(state, number);
2813
+ MaybeAppend(state, "}::");
2814
+ if (ParseOneCharToken(state, '_') && ParseName(state)) return true;
2815
+
2816
+ // On late parse failure, roll back not only the input but also the output,
2817
+ // whose trailing NUL was overwritten.
2818
+ state->parse_state = copy;
2819
+ if (state->parse_state.append) {
2820
+ state->out[state->parse_state.out_cur_idx] = '\0';
2821
+ }
2822
+ return false;
2823
+ }
2824
+ state->parse_state = copy;
1871
2825
 
2826
+ // <local-name-suffix> ::= <name> [<discriminator>]
1872
2827
  if (MaybeAppend(state, "::") && ParseName(state) &&
1873
2828
  Optional(ParseDiscriminator(state))) {
1874
2829
  return true;
1875
2830
  }
1876
-
1877
- // Since we're not going to overwrite the above "::" by re-parsing the
1878
- // <encoding> (whose trailing '\0' byte was in the byte now holding the
1879
- // first ':'), we have to rollback the "::" if the <name> parse failed.
2831
+ state->parse_state = copy;
1880
2832
  if (state->parse_state.append) {
1881
- state->out[state->parse_state.out_cur_idx - 2] = '\0';
2833
+ state->out[state->parse_state.out_cur_idx] = '\0';
1882
2834
  }
1883
2835
 
2836
+ // <local-name-suffix> ::= s [<discriminator>]
1884
2837
  return ParseOneCharToken(state, 's') && Optional(ParseDiscriminator(state));
1885
2838
  }
1886
2839
 
@@ -1896,12 +2849,22 @@ static bool ParseLocalName(State *state) {
1896
2849
  return false;
1897
2850
  }
1898
2851
 
1899
- // <discriminator> := _ <(non-negative) number>
2852
+ // <discriminator> := _ <digit>
2853
+ // := __ <number (>= 10)> _
1900
2854
  static bool ParseDiscriminator(State *state) {
1901
2855
  ComplexityGuard guard(state);
1902
2856
  if (guard.IsTooComplex()) return false;
1903
2857
  ParseState copy = state->parse_state;
1904
- if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr)) {
2858
+
2859
+ // Both forms start with _ so parse that first.
2860
+ if (!ParseOneCharToken(state, '_')) return false;
2861
+
2862
+ // <digit>
2863
+ if (ParseDigit(state, nullptr)) return true;
2864
+
2865
+ // _ <number> _
2866
+ if (ParseOneCharToken(state, '_') && ParseNumber(state, nullptr) &&
2867
+ ParseOneCharToken(state, '_')) {
1905
2868
  return true;
1906
2869
  }
1907
2870
  state->parse_state = copy;
@@ -1947,6 +2910,7 @@ static bool ParseSubstitution(State *state, bool accept_std) {
1947
2910
  MaybeAppend(state, p->real_name);
1948
2911
  }
1949
2912
  ++state->parse_state.mangled_idx;
2913
+ UpdateHighWaterMark(state);
1950
2914
  return true;
1951
2915
  }
1952
2916
  }
@@ -1972,10 +2936,13 @@ static bool ParseTopLevelMangledName(State *state) {
1972
2936
  MaybeAppend(state, RemainingInput(state));
1973
2937
  return true;
1974
2938
  }
2939
+ ReportHighWaterMark(state);
1975
2940
  return false; // Unconsumed suffix.
1976
2941
  }
1977
2942
  return true;
1978
2943
  }
2944
+
2945
+ ReportHighWaterMark(state);
1979
2946
  return false;
1980
2947
  }
1981
2948
 
@@ -1985,6 +2952,10 @@ static bool Overflowed(const State *state) {
1985
2952
 
1986
2953
  // The demangler entry point.
1987
2954
  bool Demangle(const char* mangled, char* out, size_t out_size) {
2955
+ if (mangled[0] == '_' && mangled[1] == 'R') {
2956
+ return DemangleRustSymbolEncoding(mangled, out, out_size);
2957
+ }
2958
+
1988
2959
  State state;
1989
2960
  InitState(&state, mangled, out, out_size);
1990
2961
  return ParseTopLevelMangledName(&state) && !Overflowed(&state) &&