grpc 1.37.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (2039) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +501 -260
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/README.md +38 -0
  7. data/include/grpc/event_engine/endpoint_config.h +43 -0
  8. data/include/grpc/event_engine/event_engine.h +399 -0
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  10. data/include/grpc/event_engine/memory_allocator.h +226 -0
  11. data/include/grpc/event_engine/memory_request.h +57 -0
  12. data/include/grpc/event_engine/port.h +39 -0
  13. data/include/grpc/fork.h +1 -1
  14. data/include/grpc/grpc.h +65 -22
  15. data/include/grpc/grpc_posix.h +22 -18
  16. data/include/grpc/grpc_security.h +358 -191
  17. data/include/grpc/grpc_security_constants.h +17 -14
  18. data/include/grpc/impl/codegen/atm.h +5 -3
  19. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  20. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  21. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  22. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  23. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  24. data/include/grpc/impl/codegen/compression_types.h +2 -2
  25. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  26. data/include/grpc/impl/codegen/fork.h +2 -0
  27. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  28. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  29. data/include/grpc/impl/codegen/grpc_types.h +61 -28
  30. data/include/grpc/impl/codegen/log.h +2 -0
  31. data/include/grpc/impl/codegen/port_platform.h +83 -22
  32. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  33. data/include/grpc/impl/codegen/slice.h +6 -1
  34. data/include/grpc/impl/codegen/status.h +2 -0
  35. data/include/grpc/impl/codegen/sync.h +8 -5
  36. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  37. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  38. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  39. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  40. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  41. data/include/grpc/module.modulemap +14 -14
  42. data/include/grpc/slice.h +1 -12
  43. data/include/grpc/status.h +1 -1
  44. data/include/grpc/support/atm.h +1 -1
  45. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  46. data/include/grpc/support/atm_gcc_sync.h +1 -1
  47. data/include/grpc/support/atm_windows.h +1 -1
  48. data/include/grpc/support/log.h +1 -1
  49. data/include/grpc/support/port_platform.h +1 -1
  50. data/include/grpc/support/sync.h +1 -1
  51. data/include/grpc/support/sync_abseil.h +1 -1
  52. data/include/grpc/support/sync_custom.h +1 -1
  53. data/include/grpc/support/sync_generic.h +1 -1
  54. data/include/grpc/support/sync_posix.h +1 -1
  55. data/include/grpc/support/sync_windows.h +1 -1
  56. data/include/grpc/support/time.h +2 -2
  57. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  58. data/src/core/ext/filters/client_channel/backend_metric.cc +24 -27
  59. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  60. data/src/core/ext/filters/client_channel/backup_poller.cc +17 -12
  61. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  62. data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
  63. data/src/core/ext/filters/client_channel/client_channel.cc +1231 -3574
  64. data/src/core/ext/filters/client_channel/client_channel.h +563 -56
  65. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  66. data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -2
  67. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  68. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  69. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
  70. data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
  71. data/src/core/ext/filters/client_channel/config_selector.h +22 -10
  72. data/src/core/ext/filters/client_channel/connector.h +20 -20
  73. data/src/core/ext/filters/client_channel/dynamic_filters.cc +15 -17
  74. data/src/core/ext/filters/client_channel/dynamic_filters.h +5 -5
  75. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  76. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -16
  77. data/src/core/ext/filters/client_channel/health/health_check_client.cc +72 -68
  78. data/src/core/ext/filters/client_channel/health/health_check_client.h +38 -36
  79. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +54 -55
  80. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  81. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  82. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  83. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  84. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
  85. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -24
  86. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +300 -201
  87. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  88. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  89. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +17 -18
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  94. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +86 -61
  95. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -68
  96. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +785 -0
  97. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  98. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2551 -0
  99. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +77 -78
  100. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
  101. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +37 -34
  102. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +112 -167
  103. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  104. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  105. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +188 -111
  106. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +46 -65
  107. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +198 -312
  108. data/src/core/ext/filters/client_channel/lb_policy.cc +17 -30
  109. data/src/core/ext/filters/client_channel/lb_policy.h +170 -137
  110. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  111. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -11
  112. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  113. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
  114. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +292 -149
  115. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +23 -12
  116. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  117. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +24 -19
  118. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +51 -69
  119. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +168 -281
  120. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +39 -26
  121. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  122. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  123. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +138 -120
  124. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +42 -47
  125. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -6
  126. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +102 -79
  127. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +41 -40
  128. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +547 -468
  129. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +42 -253
  130. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +34 -57
  131. data/src/core/ext/filters/client_channel/retry_filter.cc +2640 -0
  132. data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → client_channel/retry_filter.h} +9 -6
  133. data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
  134. data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
  135. data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -59
  136. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  137. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +56 -41
  138. data/src/core/ext/filters/client_channel/subchannel.cc +143 -207
  139. data/src/core/ext/filters/client_channel/subchannel.h +43 -62
  140. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  141. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  142. data/src/core/ext/filters/client_idle/client_idle_filter.cc +109 -348
  143. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  144. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  145. data/src/core/ext/filters/deadline/deadline_filter.cc +41 -43
  146. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  147. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +105 -102
  148. data/src/core/ext/filters/fault_injection/service_config_parser.cc +21 -31
  149. data/src/core/ext/filters/fault_injection/service_config_parser.h +11 -5
  150. data/src/core/ext/filters/http/client/http_client_filter.cc +108 -183
  151. data/src/core/ext/filters/http/client_authority_filter.cc +36 -95
  152. data/src/core/ext/filters/http/client_authority_filter.h +23 -5
  153. data/src/core/ext/filters/http/http_filters_plugin.cc +52 -73
  154. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
  155. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +43 -56
  156. data/src/core/ext/filters/http/server/http_server_filter.cc +115 -207
  157. data/src/core/ext/filters/max_age/max_age_filter.cc +75 -69
  158. data/src/core/ext/filters/message_size/message_size_filter.cc +63 -69
  159. data/src/core/ext/filters/message_size/message_size_filter.h +11 -4
  160. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  161. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  162. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  163. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  164. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
  165. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  166. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +271 -0
  167. data/src/core/{lib/transport/authority_override.h → ext/filters/server_config_selector/server_config_selector_filter.h} +8 -13
  168. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  169. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +251 -19
  170. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  171. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +339 -138
  172. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  173. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -2
  174. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  175. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  176. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +386 -463
  177. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -4
  178. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
  179. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
  180. data/src/core/ext/transport/chttp2/transport/flow_control.cc +66 -47
  181. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -21
  182. data/src/core/ext/transport/chttp2/transport/frame_data.cc +23 -24
  183. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
  184. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -20
  185. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
  186. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +17 -17
  187. data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
  188. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -15
  189. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
  190. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +49 -17
  191. data/src/core/ext/transport/chttp2/transport/frame_settings.h +7 -6
  192. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +16 -13
  193. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  194. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  195. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +520 -749
  196. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
  197. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  198. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
  199. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +811 -1193
  200. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
  201. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
  202. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
  203. data/src/core/ext/transport/chttp2/transport/internal.h +51 -74
  204. data/src/core/ext/transport/chttp2/transport/parsing.cc +157 -293
  205. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  206. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  207. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  208. data/src/core/ext/transport/chttp2/transport/writing.cc +113 -164
  209. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  210. data/src/core/ext/transport/inproc/inproc_transport.cc +186 -215
  211. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  212. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +114 -0
  213. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +402 -0
  214. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +119 -0
  215. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +453 -0
  216. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +244 -210
  217. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +932 -575
  218. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  219. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +138 -0
  220. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  221. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +146 -0
  222. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  223. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +106 -0
  224. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  225. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +93 -0
  226. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  227. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +88 -0
  228. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +103 -0
  229. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +466 -0
  230. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  231. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +95 -0
  232. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  233. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +20 -1
  234. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  235. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +40 -19
  236. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -117
  237. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +513 -317
  238. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +241 -188
  239. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +954 -530
  240. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +44 -29
  241. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +137 -81
  242. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +328 -250
  243. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1266 -657
  244. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  245. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +41 -23
  246. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +41 -28
  247. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +136 -80
  248. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +290 -0
  249. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1122 -0
  250. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +73 -54
  251. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +265 -159
  252. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -8
  253. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +41 -23
  254. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +238 -153
  255. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +894 -471
  256. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +63 -46
  257. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +210 -130
  258. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  259. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +33 -19
  260. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +32 -18
  261. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +88 -53
  262. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  263. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +138 -0
  264. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +144 -118
  265. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +529 -329
  266. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +112 -91
  267. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +425 -259
  268. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  269. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +44 -26
  270. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +212 -91
  271. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +932 -266
  272. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -5
  273. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +33 -17
  274. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +152 -0
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +47 -25
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +28 -14
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +53 -35
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +108 -0
  282. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -36
  283. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +133 -85
  284. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -39
  285. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +325 -107
  286. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  287. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +244 -144
  288. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  289. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +36 -20
  290. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +97 -69
  291. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +400 -226
  292. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +99 -78
  293. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +340 -213
  294. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +61 -0
  295. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +199 -0
  296. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -11
  297. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +86 -49
  298. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  299. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +120 -0
  300. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -62
  301. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +294 -185
  302. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +93 -60
  303. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +349 -181
  304. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -100
  305. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +307 -185
  306. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +59 -27
  307. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +195 -88
  308. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +648 -559
  309. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2460 -1505
  310. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
  311. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +127 -64
  312. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +216 -0
  313. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +870 -0
  314. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  315. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +82 -0
  316. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  317. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +95 -0
  318. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -14
  319. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +69 -40
  320. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  321. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +119 -0
  322. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +62 -0
  323. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +203 -0
  324. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  325. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +89 -0
  326. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  327. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +184 -0
  328. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  329. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  330. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  331. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +192 -0
  332. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  333. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +126 -0
  334. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +18 -5
  335. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +37 -23
  336. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +46 -29
  337. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +156 -92
  338. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +52 -36
  339. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +175 -107
  340. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +63 -0
  341. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +165 -0
  342. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +27 -13
  343. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +69 -41
  344. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +272 -200
  345. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1095 -552
  346. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -1
  347. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
  348. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +108 -52
  349. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +448 -171
  350. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +42 -27
  351. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +115 -71
  352. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +103 -83
  353. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +341 -213
  354. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  355. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +146 -0
  356. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  357. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
  358. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +92 -73
  359. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +335 -218
  360. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -18
  361. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +87 -54
  362. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +85 -40
  363. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +303 -104
  364. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  365. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +101 -0
  366. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  367. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +228 -0
  368. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  369. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +202 -0
  370. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  371. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +81 -46
  372. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -9
  373. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +42 -26
  374. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  375. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +33 -19
  376. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  377. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +33 -19
  378. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  379. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +105 -61
  380. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
  381. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +79 -52
  382. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +27 -13
  383. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +70 -43
  384. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  385. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +94 -58
  386. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  387. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +206 -124
  388. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  389. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +191 -115
  390. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  391. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +183 -0
  392. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  393. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
  394. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  395. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +136 -0
  396. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  397. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +65 -34
  398. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  399. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +100 -52
  400. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  401. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  402. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  403. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +39 -19
  404. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  405. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +114 -0
  406. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  407. data/src/core/ext/upb-generated/google/api/annotations.upb.h +9 -1
  408. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +151 -126
  409. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +439 -281
  410. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +153 -127
  411. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +483 -298
  412. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  413. data/src/core/ext/upb-generated/google/api/http.upb.h +137 -89
  414. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  415. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +99 -0
  416. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  417. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +40 -22
  418. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +367 -277
  419. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1252 -764
  420. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  421. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +36 -18
  422. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  423. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
  424. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  425. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +100 -64
  426. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  427. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +36 -18
  428. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  429. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +269 -149
  430. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  431. data/src/core/ext/upb-generated/google/rpc/status.upb.h +44 -26
  432. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  433. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +276 -0
  434. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  435. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +68 -42
  436. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +132 -108
  437. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +458 -285
  438. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -13
  439. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +72 -39
  440. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  441. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +64 -35
  442. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  443. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +321 -197
  444. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  445. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +175 -0
  446. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  447. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +132 -63
  448. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
  449. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +41 -18
  450. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  451. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +9 -1
  452. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  453. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +41 -18
  454. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  455. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +40 -19
  456. data/src/core/ext/upb-generated/validate/validate.upb.c +396 -295
  457. data/src/core/ext/upb-generated/validate/validate.upb.h +1395 -768
  458. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  459. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +191 -0
  460. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  461. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +87 -0
  462. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  463. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +38 -0
  464. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  465. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +230 -0
  466. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  467. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +81 -0
  468. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +19 -6
  469. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +35 -19
  470. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +32 -18
  471. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +77 -46
  472. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +27 -13
  473. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +39 -25
  474. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  475. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +95 -0
  476. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +24 -11
  477. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +47 -27
  478. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +35 -21
  479. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +87 -54
  480. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +24 -11
  481. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +51 -29
  482. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  483. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +144 -0
  484. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +203 -0
  485. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +726 -0
  486. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  487. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +132 -0
  488. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  489. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +173 -0
  490. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  491. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +95 -0
  492. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  493. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  494. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  495. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  496. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
  497. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  498. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  499. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  500. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  501. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  502. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  503. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  504. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  505. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  506. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  507. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  508. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  509. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  510. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  511. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  512. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +22 -12
  513. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  514. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  515. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  516. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +69 -98
  517. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  518. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +349 -339
  519. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +57 -52
  520. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +18 -24
  521. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  522. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +488 -484
  523. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
  524. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  525. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  526. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +18 -20
  527. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  528. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  529. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  530. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  531. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  532. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  533. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  534. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +224 -229
  535. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +79 -64
  536. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +23 -33
  537. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +16 -16
  538. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  539. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  540. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +17 -21
  541. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +7 -7
  542. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  545. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  546. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +76 -89
  547. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +25 -25
  548. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  549. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  550. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +267 -200
  551. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +59 -34
  552. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
  553. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  554. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  555. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  556. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  557. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  558. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +40 -38
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  562. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
  563. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  564. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
  565. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
  566. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  567. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  568. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  569. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  570. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +157 -155
  571. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -16
  572. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +147 -153
  573. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  574. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  575. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  576. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -36
  577. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  578. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  579. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  580. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
  581. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  582. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +40 -47
  583. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +30 -25
  584. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +79 -71
  587. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +12 -7
  588. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +717 -773
  589. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +162 -157
  590. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  591. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  592. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  593. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  595. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
  599. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  600. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  614. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
  615. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  616. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
  617. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  618. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +27 -30
  619. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  620. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  621. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  622. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +26 -24
  623. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  624. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +455 -429
  625. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +62 -52
  626. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
  627. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  628. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +178 -138
  629. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
  630. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
  631. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  632. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +194 -200
  633. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +19 -19
  634. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  635. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  636. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  637. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  638. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
  639. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  640. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
  641. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  642. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +120 -97
  643. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +18 -13
  644. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  645. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  646. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  647. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  648. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  649. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  650. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
  651. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  652. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
  653. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  654. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  655. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  656. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  657. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  658. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +45 -48
  659. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  660. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
  661. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  662. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
  663. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  664. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  665. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  666. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  667. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  668. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  669. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  670. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  671. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  672. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  673. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  674. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  677. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  678. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  679. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  680. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  681. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  683. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  684. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  685. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  686. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  687. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  688. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  689. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  690. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  691. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  692. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  693. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  694. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  695. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  696. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  697. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  698. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
  699. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  700. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  701. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  702. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  703. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  704. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  705. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  706. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  707. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  708. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  709. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  710. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +9 -14
  711. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  712. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  713. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  714. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
  715. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  716. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
  717. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  718. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
  719. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  720. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
  721. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  722. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
  723. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  724. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +189 -216
  725. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  726. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  727. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  728. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  729. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  731. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  732. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  733. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  734. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  735. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  736. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +18 -22
  737. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  738. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +32 -38
  739. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  740. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +20 -26
  741. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  742. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  743. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +23 -27
  745. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  746. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +39 -45
  747. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  748. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +25 -29
  749. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  750. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  751. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  752. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  753. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  754. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  755. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  756. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  757. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  758. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  759. data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
  760. data/src/core/ext/xds/certificate_provider_store.h +4 -4
  761. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  762. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +4 -4
  763. data/src/core/ext/xds/upb_utils.h +67 -0
  764. data/src/core/ext/xds/xds_api.cc +232 -3313
  765. data/src/core/ext/xds/xds_api.h +70 -550
  766. data/src/core/ext/xds/xds_bootstrap.cc +315 -300
  767. data/src/core/ext/xds/xds_bootstrap.h +54 -33
  768. data/src/core/ext/xds/xds_certificate_provider.cc +7 -7
  769. data/src/core/ext/xds/xds_certificate_provider.h +6 -6
  770. data/src/core/ext/xds/xds_channel_args.h +5 -2
  771. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  772. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  773. data/src/core/ext/xds/xds_client.cc +1093 -957
  774. data/src/core/ext/xds/xds_client.h +143 -168
  775. data/src/core/ext/xds/xds_client_stats.cc +31 -30
  776. data/src/core/ext/xds/xds_client_stats.h +15 -13
  777. data/src/core/ext/xds/xds_cluster.cc +453 -0
  778. data/src/core/ext/xds/xds_cluster.h +108 -0
  779. data/src/core/ext/xds/xds_common_types.cc +388 -0
  780. data/src/core/ext/xds/xds_common_types.h +95 -0
  781. data/src/core/ext/xds/xds_endpoint.cc +364 -0
  782. data/src/core/ext/xds/xds_endpoint.h +135 -0
  783. data/src/core/ext/xds/xds_http_fault_filter.cc +10 -9
  784. data/src/core/ext/xds/xds_http_fault_filter.h +6 -5
  785. data/src/core/ext/xds/xds_http_filters.cc +15 -7
  786. data/src/core/ext/xds/xds_http_filters.h +7 -4
  787. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  788. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  789. data/src/core/ext/xds/xds_listener.cc +1039 -0
  790. data/src/core/ext/xds/xds_listener.h +220 -0
  791. data/src/core/{lib/transport/authority_override.cc → ext/xds/xds_resource_type.cc} +10 -17
  792. data/src/core/ext/xds/xds_resource_type.h +98 -0
  793. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  794. data/src/core/ext/xds/xds_route_config.cc +985 -0
  795. data/src/core/ext/xds/xds_route_config.h +215 -0
  796. data/src/core/ext/xds/xds_routing.cc +250 -0
  797. data/src/core/ext/xds/xds_routing.h +101 -0
  798. data/src/core/ext/xds/xds_server_config_fetcher.cc +1083 -296
  799. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +43 -25
  800. data/src/core/lib/{iomgr → address_utils}/parse_address.h +12 -7
  801. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +34 -41
  802. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +5 -15
  803. data/src/core/lib/avl/avl.h +389 -88
  804. data/src/core/lib/backoff/backoff.cc +9 -38
  805. data/src/core/lib/backoff/backoff.h +11 -11
  806. data/src/core/lib/channel/call_finalization.h +86 -0
  807. data/src/core/lib/channel/call_tracer.h +85 -0
  808. data/src/core/lib/channel/channel_args.cc +87 -9
  809. data/src/core/lib/channel/channel_args.h +13 -1
  810. data/src/core/lib/channel/channel_args_preconditioning.cc +48 -0
  811. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  812. data/src/core/lib/channel/channel_stack.cc +25 -15
  813. data/src/core/lib/channel/channel_stack.h +53 -16
  814. data/src/core/lib/channel/channel_stack_builder.cc +68 -262
  815. data/src/core/lib/channel/channel_stack_builder.h +95 -155
  816. data/src/core/lib/channel/channel_trace.cc +8 -10
  817. data/src/core/lib/channel/channel_trace.h +2 -1
  818. data/src/core/lib/channel/channelz.cc +65 -52
  819. data/src/core/lib/channel/channelz.h +32 -29
  820. data/src/core/lib/channel/channelz_registry.cc +8 -7
  821. data/src/core/lib/channel/channelz_registry.h +1 -1
  822. data/src/core/lib/channel/connected_channel.cc +14 -10
  823. data/src/core/lib/channel/connected_channel.h +1 -2
  824. data/src/core/lib/channel/context.h +14 -0
  825. data/src/core/lib/channel/handshaker.cc +10 -8
  826. data/src/core/lib/channel/handshaker.h +7 -8
  827. data/src/core/lib/channel/handshaker_factory.h +10 -2
  828. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  829. data/src/core/lib/channel/handshaker_registry.h +29 -12
  830. data/src/core/lib/channel/promise_based_filter.cc +669 -0
  831. data/src/core/lib/channel/promise_based_filter.h +423 -0
  832. data/src/core/lib/channel/status_util.h +6 -2
  833. data/src/core/lib/compression/compression.cc +22 -114
  834. data/src/core/lib/compression/compression_internal.cc +145 -207
  835. data/src/core/lib/compression/compression_internal.h +64 -69
  836. data/src/core/lib/compression/message_compress.cc +13 -13
  837. data/src/core/lib/compression/message_compress.h +2 -2
  838. data/src/core/lib/config/core_configuration.cc +104 -0
  839. data/src/core/lib/config/core_configuration.h +196 -0
  840. data/src/core/lib/debug/stats.cc +1 -1
  841. data/src/core/lib/debug/stats.h +2 -1
  842. data/src/core/lib/debug/stats_data.cc +15 -14
  843. data/src/core/lib/debug/stats_data.h +1 -0
  844. data/src/core/lib/debug/trace.cc +1 -0
  845. data/src/core/lib/debug/trace.h +4 -3
  846. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +46 -0
  847. data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
  848. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  849. data/src/core/lib/event_engine/event_engine.cc +52 -0
  850. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  851. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  852. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  853. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  854. data/src/core/lib/event_engine/sockaddr.h +44 -0
  855. data/src/core/lib/gpr/alloc.cc +4 -3
  856. data/src/core/lib/gpr/atm.cc +1 -1
  857. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  858. data/src/core/lib/gpr/env_linux.cc +1 -2
  859. data/src/core/lib/gpr/env_posix.cc +2 -3
  860. data/src/core/lib/gpr/log.cc +3 -3
  861. data/src/core/lib/gpr/log_android.cc +3 -2
  862. data/src/core/lib/gpr/log_linux.cc +7 -4
  863. data/src/core/lib/gpr/log_posix.cc +6 -3
  864. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  865. data/src/core/lib/gpr/string.cc +2 -2
  866. data/src/core/lib/gpr/string.h +2 -2
  867. data/src/core/lib/gpr/sync.cc +2 -2
  868. data/src/core/lib/gpr/sync_abseil.cc +7 -6
  869. data/src/core/lib/gpr/sync_posix.cc +4 -3
  870. data/src/core/lib/gpr/time.cc +5 -3
  871. data/src/core/lib/gpr/time_windows.cc +3 -2
  872. data/src/core/lib/gpr/tls.h +125 -40
  873. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  874. data/src/core/lib/gpr/useful.h +97 -32
  875. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  876. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  877. data/src/core/lib/gprpp/bitset.h +195 -0
  878. data/src/core/lib/gprpp/capture.h +76 -0
  879. data/src/core/lib/gprpp/chunked_vector.h +253 -0
  880. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  881. data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
  882. data/src/core/lib/gprpp/debug_location.h +2 -0
  883. data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
  884. data/src/core/lib/gprpp/fork.cc +14 -12
  885. data/src/core/lib/gprpp/fork.h +4 -4
  886. data/src/core/lib/gprpp/global_config.h +1 -2
  887. data/src/core/lib/gprpp/global_config_env.cc +14 -14
  888. data/src/core/lib/gprpp/global_config_env.h +2 -2
  889. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  890. data/src/core/lib/gprpp/manual_constructor.h +11 -9
  891. data/src/core/lib/gprpp/memory.h +9 -3
  892. data/src/core/lib/gprpp/mpscq.cc +7 -7
  893. data/src/core/lib/gprpp/mpscq.h +6 -5
  894. data/src/core/lib/gprpp/orphanable.h +7 -7
  895. data/src/core/lib/gprpp/ref_counted.h +47 -33
  896. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  897. data/src/core/lib/gprpp/status_helper.cc +419 -0
  898. data/src/core/lib/gprpp/status_helper.h +181 -0
  899. data/src/core/lib/gprpp/sync.h +5 -31
  900. data/src/core/lib/gprpp/table.h +434 -0
  901. data/src/core/lib/gprpp/thd_posix.cc +5 -5
  902. data/src/core/lib/gprpp/thd_windows.cc +4 -11
  903. data/src/core/lib/gprpp/time.cc +186 -0
  904. data/src/core/lib/gprpp/time.h +292 -0
  905. data/src/core/lib/gprpp/time_util.cc +2 -2
  906. data/src/core/lib/gprpp/time_util.h +2 -2
  907. data/src/core/lib/http/format_request.cc +28 -23
  908. data/src/core/lib/http/format_request.h +8 -6
  909. data/src/core/lib/http/httpcli.cc +299 -209
  910. data/src/core/lib/http/httpcli.h +183 -85
  911. data/src/core/lib/http/httpcli_security_connector.cc +71 -81
  912. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  913. data/src/core/lib/http/parser.cc +18 -18
  914. data/src/core/lib/http/parser.h +6 -5
  915. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  916. data/src/core/lib/iomgr/buffer_list.h +22 -24
  917. data/src/core/lib/iomgr/call_combiner.cc +55 -23
  918. data/src/core/lib/iomgr/call_combiner.h +12 -14
  919. data/src/core/lib/iomgr/cfstream_handle.cc +4 -4
  920. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  921. data/src/core/lib/iomgr/closure.h +33 -12
  922. data/src/core/lib/iomgr/combiner.cc +46 -36
  923. data/src/core/lib/iomgr/combiner.h +3 -2
  924. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  925. data/src/core/lib/iomgr/endpoint.cc +1 -5
  926. data/src/core/lib/iomgr/endpoint.h +3 -6
  927. data/src/core/lib/iomgr/endpoint_cfstream.cc +25 -54
  928. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  929. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  930. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
  931. data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
  932. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  933. data/src/core/lib/iomgr/error.cc +270 -99
  934. data/src/core/lib/iomgr/error.h +277 -113
  935. data/src/core/lib/iomgr/error_cfstream.cc +10 -4
  936. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  937. data/src/core/lib/iomgr/error_internal.h +6 -1
  938. data/src/core/lib/iomgr/ev_apple.cc +10 -9
  939. data/src/core/lib/iomgr/ev_apple.h +1 -1
  940. data/src/core/lib/iomgr/ev_epoll1_linux.cc +42 -48
  941. data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -81
  942. data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
  943. data/src/core/lib/iomgr/ev_posix.cc +12 -12
  944. data/src/core/lib/iomgr/ev_posix.h +9 -9
  945. data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
  946. data/src/core/lib/iomgr/event_engine/closure.h +42 -0
  947. data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
  948. data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
  949. data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -0
  950. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  951. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  952. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  953. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +47 -0
  954. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
  955. data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
  956. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  957. data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
  958. data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
  959. data/src/core/lib/iomgr/exec_ctx.cc +29 -102
  960. data/src/core/lib/iomgr/exec_ctx.h +32 -57
  961. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  962. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  963. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  964. data/src/core/lib/iomgr/executor/threadpool.h +4 -3
  965. data/src/core/lib/iomgr/executor.cc +37 -46
  966. data/src/core/lib/iomgr/executor.h +3 -3
  967. data/src/core/lib/iomgr/fork_posix.cc +3 -2
  968. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  969. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  970. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  971. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  972. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  973. data/src/core/lib/iomgr/iomgr.cc +5 -3
  974. data/src/core/lib/iomgr/iomgr.h +3 -3
  975. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  976. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  977. data/src/core/lib/iomgr/iomgr_posix.cc +5 -3
  978. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -14
  979. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  980. data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
  981. data/src/core/lib/iomgr/load_file.cc +6 -6
  982. data/src/core/lib/iomgr/load_file.h +2 -2
  983. data/src/core/lib/iomgr/lockfree_event.cc +23 -5
  984. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  985. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  986. data/src/core/lib/iomgr/polling_entity.h +6 -0
  987. data/src/core/lib/iomgr/pollset.cc +5 -5
  988. data/src/core/lib/iomgr/pollset.h +9 -9
  989. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  990. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  991. data/src/core/lib/iomgr/port.h +8 -14
  992. data/src/core/lib/iomgr/python_util.h +3 -2
  993. data/src/core/lib/iomgr/resolve_address.cc +10 -24
  994. data/src/core/lib/iomgr/resolve_address.h +48 -43
  995. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  996. data/src/core/lib/iomgr/resolve_address_posix.cc +91 -79
  997. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  998. data/src/core/lib/iomgr/resolve_address_windows.cc +102 -85
  999. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  1000. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1001. data/src/core/lib/iomgr/sockaddr.h +2 -1
  1002. data/src/core/lib/iomgr/{socket_utils_uv.cc → sockaddr_utils_posix.cc} +21 -8
  1003. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  1004. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1005. data/src/core/lib/iomgr/socket_mutator.cc +17 -4
  1006. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1007. data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -44
  1008. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1009. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1010. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1011. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1012. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  1013. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1014. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -28
  1015. data/src/core/lib/iomgr/tcp_client_posix.cc +38 -45
  1016. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1017. data/src/core/lib/iomgr/tcp_client_windows.cc +15 -15
  1018. data/src/core/lib/iomgr/tcp_posix.cc +129 -159
  1019. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1020. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  1021. data/src/core/lib/iomgr/tcp_server.h +16 -14
  1022. data/src/core/lib/iomgr/tcp_server_posix.cc +44 -34
  1023. data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
  1024. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +23 -20
  1025. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -12
  1026. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1027. data/src/core/lib/iomgr/tcp_server_windows.cc +32 -35
  1028. data/src/core/lib/iomgr/tcp_windows.cc +35 -52
  1029. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1030. data/src/core/lib/iomgr/timer.cc +3 -2
  1031. data/src/core/lib/iomgr/timer.h +17 -8
  1032. data/src/core/lib/iomgr/timer_generic.cc +116 -127
  1033. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1034. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1035. data/src/core/lib/iomgr/timer_manager.cc +16 -15
  1036. data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
  1037. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
  1038. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -18
  1039. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1040. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
  1041. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1042. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1043. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1044. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1045. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1046. data/src/core/lib/json/json.h +1 -1
  1047. data/src/core/lib/json/json_reader.cc +97 -58
  1048. data/src/core/lib/json/json_util.cc +71 -3
  1049. data/src/core/lib/json/json_util.h +66 -116
  1050. data/src/core/lib/json/json_writer.cc +0 -3
  1051. data/src/core/lib/matchers/matchers.cc +47 -59
  1052. data/src/core/lib/matchers/matchers.h +30 -30
  1053. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1054. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1055. data/src/core/lib/promise/activity.cc +121 -0
  1056. data/src/core/lib/promise/activity.h +540 -0
  1057. data/src/core/lib/promise/arena_promise.h +188 -0
  1058. data/src/core/lib/promise/context.h +86 -0
  1059. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1060. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  1061. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1062. data/src/core/lib/promise/detail/status.h +49 -0
  1063. data/src/core/lib/promise/detail/switch.h +1455 -0
  1064. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1065. data/src/core/lib/promise/loop.h +134 -0
  1066. data/src/core/lib/promise/map.h +88 -0
  1067. data/src/core/lib/promise/poll.h +66 -0
  1068. data/src/core/lib/promise/promise.h +95 -0
  1069. data/src/core/lib/promise/race.h +84 -0
  1070. data/src/core/lib/promise/seq.h +89 -0
  1071. data/src/core/lib/promise/sleep.cc +74 -0
  1072. data/src/core/lib/promise/sleep.h +66 -0
  1073. data/src/core/lib/promise/try_seq.h +157 -0
  1074. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  1075. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  1076. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -29
  1077. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1078. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1079. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +2 -2
  1080. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
  1081. data/src/core/lib/resource_quota/api.cc +108 -0
  1082. data/src/core/lib/resource_quota/api.h +40 -0
  1083. data/src/core/lib/{gprpp → resource_quota}/arena.cc +18 -14
  1084. data/src/core/lib/{gprpp → resource_quota}/arena.h +37 -16
  1085. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  1086. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  1087. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1088. data/src/core/lib/resource_quota/resource_quota.h +58 -0
  1089. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  1090. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  1091. data/src/core/lib/resource_quota/trace.cc +19 -0
  1092. data/src/core/lib/resource_quota/trace.h +24 -0
  1093. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  1094. data/src/core/lib/security/authorization/authorization_policy_provider.h +33 -0
  1095. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1096. data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
  1097. data/src/core/lib/security/authorization/evaluate_args.h +92 -0
  1098. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1099. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1100. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +109 -0
  1101. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +51 -0
  1102. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1103. data/src/core/lib/security/authorization/matchers.h +211 -0
  1104. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1105. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1106. data/src/core/lib/security/context/security_context.cc +15 -10
  1107. data/src/core/lib/security/context/security_context.h +1 -1
  1108. data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -0
  1109. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1110. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1111. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1112. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  1113. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1114. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  1115. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1116. data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -84
  1117. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -9
  1118. data/src/core/lib/security/credentials/credentials.cc +11 -10
  1119. data/src/core/lib/security/credentials/credentials.h +75 -59
  1120. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +78 -72
  1121. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +15 -13
  1122. data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -4
  1123. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1124. data/src/core/lib/security/credentials/external/external_account_credentials.cc +127 -80
  1125. data/src/core/lib/security/credentials/external/external_account_credentials.h +15 -17
  1126. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -5
  1127. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  1128. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +43 -26
  1129. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
  1130. data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -18
  1131. data/src/core/lib/security/credentials/fake/fake_credentials.h +14 -16
  1132. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  1133. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +85 -30
  1134. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +6 -0
  1135. data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
  1136. data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -9
  1137. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +13 -7
  1138. data/src/core/lib/security/credentials/jwt/json_token.cc +7 -9
  1139. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1140. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +52 -51
  1141. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +23 -15
  1142. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -59
  1143. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1144. data/src/core/lib/security/credentials/local/local_credentials.h +6 -0
  1145. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +166 -193
  1146. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +54 -34
  1147. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +97 -157
  1148. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +54 -27
  1149. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -14
  1150. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
  1151. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +11 -9
  1152. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +19 -15
  1153. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +80 -25
  1154. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +20 -12
  1155. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
  1156. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
  1157. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +35 -85
  1158. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -85
  1159. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
  1160. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  1161. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  1162. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  1163. data/src/core/lib/security/credentials/xds/xds_credentials.cc +31 -36
  1164. data/src/core/lib/security/credentials/xds/xds_credentials.h +6 -1
  1165. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -18
  1166. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1167. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +24 -25
  1168. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  1169. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
  1170. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -16
  1171. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1172. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1173. data/src/core/lib/security/security_connector/local/local_security_connector.cc +32 -24
  1174. data/src/core/lib/security/security_connector/security_connector.cc +8 -15
  1175. data/src/core/lib/security/security_connector/security_connector.h +24 -24
  1176. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +24 -22
  1177. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  1178. data/src/core/lib/security/security_connector/ssl_utils.cc +67 -39
  1179. data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
  1180. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +409 -272
  1181. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
  1182. data/src/core/lib/security/transport/auth_filters.h +38 -4
  1183. data/src/core/lib/security/transport/client_auth_filter.cc +88 -353
  1184. data/src/core/lib/security/transport/secure_endpoint.cc +8 -18
  1185. data/src/core/lib/security/transport/secure_endpoint.h +1 -0
  1186. data/src/core/lib/security/transport/security_handshaker.cc +138 -90
  1187. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  1188. data/src/core/lib/security/transport/server_auth_filter.cc +58 -48
  1189. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1190. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1191. data/src/core/lib/security/util/json_util.cc +8 -10
  1192. data/src/core/lib/security/util/json_util.h +1 -1
  1193. data/src/core/lib/service_config/service_config.h +82 -0
  1194. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_call_data.h +17 -31
  1195. data/src/core/{ext/filters/client_channel/service_config.cc → lib/service_config/service_config_impl.cc} +31 -27
  1196. data/src/core/{ext/filters/client_channel/service_config.h → lib/service_config/service_config_impl.h} +22 -23
  1197. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +35 -31
  1198. data/src/core/lib/service_config/service_config_parser.h +106 -0
  1199. data/src/core/lib/slice/percent_encoding.cc +84 -97
  1200. data/src/core/lib/slice/percent_encoding.h +23 -28
  1201. data/src/core/lib/slice/slice.cc +81 -191
  1202. data/src/core/lib/slice/slice.h +384 -0
  1203. data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
  1204. data/src/core/lib/slice/slice_buffer.cc +10 -7
  1205. data/src/core/lib/slice/slice_internal.h +15 -276
  1206. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1207. data/src/core/lib/slice/slice_refcount.h +46 -0
  1208. data/src/core/lib/slice/slice_refcount_base.h +61 -0
  1209. data/src/core/lib/slice/slice_split.cc +100 -0
  1210. data/src/core/lib/slice/slice_split.h +40 -0
  1211. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  1212. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  1213. data/src/core/lib/surface/api_trace.cc +2 -1
  1214. data/src/core/lib/surface/api_trace.h +1 -0
  1215. data/src/core/lib/surface/builtins.cc +49 -0
  1216. data/src/core/lib/surface/builtins.h +26 -0
  1217. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  1218. data/src/core/lib/surface/call.cc +316 -521
  1219. data/src/core/lib/surface/call.h +14 -9
  1220. data/src/core/lib/surface/call_details.cc +2 -2
  1221. data/src/core/lib/surface/call_log_batch.cc +2 -2
  1222. data/src/core/lib/surface/channel.cc +75 -107
  1223. data/src/core/lib/surface/channel.h +17 -24
  1224. data/src/core/lib/surface/channel_init.cc +23 -76
  1225. data/src/core/lib/surface/channel_init.h +52 -44
  1226. data/src/core/lib/surface/channel_ping.cc +2 -3
  1227. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  1228. data/src/core/lib/surface/completion_queue.cc +136 -145
  1229. data/src/core/lib/surface/completion_queue.h +3 -2
  1230. data/src/core/lib/surface/completion_queue_factory.cc +3 -3
  1231. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  1232. data/src/core/lib/surface/event_string.cc +1 -0
  1233. data/src/core/lib/surface/init.cc +82 -60
  1234. data/src/core/lib/surface/init.h +10 -4
  1235. data/src/core/lib/surface/lame_client.cc +50 -35
  1236. data/src/core/lib/surface/lame_client.h +1 -1
  1237. data/src/core/lib/surface/metadata_array.cc +2 -2
  1238. data/src/core/lib/surface/server.cc +100 -128
  1239. data/src/core/lib/surface/server.h +58 -53
  1240. data/src/core/lib/surface/validate_metadata.cc +55 -24
  1241. data/src/core/lib/surface/validate_metadata.h +3 -2
  1242. data/src/core/lib/surface/version.cc +2 -2
  1243. data/src/core/lib/transport/bdp_estimator.cc +11 -12
  1244. data/src/core/lib/transport/bdp_estimator.h +2 -2
  1245. data/src/core/lib/transport/byte_stream.cc +9 -5
  1246. data/src/core/lib/transport/byte_stream.h +9 -8
  1247. data/src/core/lib/transport/connectivity_state.cc +9 -6
  1248. data/src/core/lib/transport/connectivity_state.h +2 -2
  1249. data/src/core/lib/transport/error_utils.cc +68 -29
  1250. data/src/core/lib/transport/error_utils.h +13 -6
  1251. data/src/core/lib/transport/metadata_batch.h +1348 -163
  1252. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1253. data/src/core/lib/transport/parsed_metadata.h +401 -0
  1254. data/src/core/lib/transport/pid_controller.cc +4 -4
  1255. data/src/core/lib/transport/status_conversion.cc +2 -2
  1256. data/src/core/lib/transport/status_conversion.h +1 -1
  1257. data/src/core/lib/transport/timeout_encoding.cc +204 -67
  1258. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1259. data/src/core/lib/transport/transport.cc +15 -35
  1260. data/src/core/lib/transport/transport.h +94 -8
  1261. data/src/core/lib/transport/transport_impl.h +13 -0
  1262. data/src/core/lib/transport/transport_op_string.cc +13 -35
  1263. data/src/core/lib/uri/uri_parser.cc +237 -63
  1264. data/src/core/lib/uri/uri_parser.h +39 -23
  1265. data/src/core/plugin_registry/grpc_plugin_registry.cc +75 -102
  1266. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1267. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1268. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1269. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1270. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  1271. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +36 -31
  1272. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1273. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1274. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -19
  1275. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1276. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1277. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1278. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1279. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1280. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1281. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1282. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  1283. data/src/core/tsi/fake_transport_security.cc +15 -7
  1284. data/src/core/tsi/local_transport_security.cc +42 -87
  1285. data/src/core/tsi/local_transport_security.h +1 -4
  1286. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1287. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1288. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1289. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
  1290. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
  1291. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  1292. data/src/core/tsi/ssl_transport_security.cc +186 -38
  1293. data/src/core/tsi/ssl_transport_security.h +45 -11
  1294. data/src/core/tsi/transport_security.cc +15 -3
  1295. data/src/core/tsi/transport_security.h +16 -1
  1296. data/src/core/tsi/transport_security_grpc.h +1 -0
  1297. data/src/core/tsi/transport_security_interface.h +26 -0
  1298. data/src/ruby/bin/math_services_pb.rb +1 -1
  1299. data/src/ruby/ext/grpc/extconf.rb +22 -10
  1300. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1301. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1302. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1303. data/src/ruby/ext/grpc/rb_channel.c +15 -10
  1304. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1305. data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
  1306. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
  1307. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1308. data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
  1309. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  1310. data/src/ruby/ext/grpc/rb_grpc.c +5 -4
  1311. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1312. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +36 -34
  1313. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +56 -53
  1314. data/src/ruby/ext/grpc/rb_server.c +13 -9
  1315. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1316. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  1317. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
  1318. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
  1319. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
  1320. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
  1321. data/src/ruby/lib/grpc/version.rb +1 -1
  1322. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1323. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1324. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  1325. data/src/ruby/spec/client_server_spec.rb +1 -1
  1326. data/third_party/abseil-cpp/absl/algorithm/container.h +104 -94
  1327. data/third_party/abseil-cpp/absl/base/attributes.h +88 -35
  1328. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  1329. data/third_party/abseil-cpp/absl/base/config.h +102 -44
  1330. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +25 -36
  1331. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  1332. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1333. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1334. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  1335. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  1336. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  1337. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  1338. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +17 -6
  1339. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1340. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  1341. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1342. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1343. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1344. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +70 -1
  1345. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1346. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1347. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1348. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1349. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1350. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1351. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1352. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  1353. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  1354. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1355. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1356. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  1357. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -7
  1358. data/third_party/abseil-cpp/absl/container/inlined_vector.h +110 -100
  1359. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  1360. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1361. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -103
  1362. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +39 -79
  1363. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1364. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1365. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  1366. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1367. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +21 -2
  1368. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +374 -243
  1369. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +27 -13
  1370. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1371. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1372. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  1373. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +15 -17
  1374. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1375. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  1376. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1377. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1378. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +11 -7
  1379. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1380. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1381. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  1383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +16 -2
  1384. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1385. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1386. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1387. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1388. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1389. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1390. data/third_party/abseil-cpp/absl/hash/internal/hash.h +145 -45
  1391. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1392. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1393. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1394. data/third_party/abseil-cpp/absl/meta/type_traits.h +47 -3
  1395. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1396. data/third_party/abseil-cpp/absl/numeric/int128.cc +6 -13
  1397. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1398. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1399. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1400. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1401. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1402. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  1403. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  1404. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1405. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1406. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1407. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1408. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1409. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1410. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1411. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1412. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1413. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1414. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1415. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1416. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1417. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1418. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1419. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1420. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1421. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1422. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1423. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1424. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1425. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1426. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1427. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1428. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1429. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1430. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1431. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1432. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1433. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1434. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1435. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1436. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1437. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1438. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1439. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1440. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1441. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1442. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1443. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1444. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1445. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1446. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1447. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1448. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1449. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1450. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1451. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  1452. data/third_party/abseil-cpp/absl/status/status.cc +27 -28
  1453. data/third_party/abseil-cpp/absl/status/status.h +98 -33
  1454. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1455. data/third_party/abseil-cpp/absl/status/statusor.h +34 -24
  1456. data/third_party/abseil-cpp/absl/strings/charconv.cc +8 -8
  1457. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1458. data/third_party/abseil-cpp/absl/strings/cord.cc +619 -570
  1459. data/third_party/abseil-cpp/absl/strings/cord.h +346 -101
  1460. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  1461. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +7 -7
  1462. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1463. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +478 -31
  1464. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1465. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1466. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1467. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1468. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1469. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1470. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1471. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1472. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1473. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1474. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1475. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1476. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1477. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1478. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1479. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1480. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1481. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1482. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1483. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1484. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1485. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1486. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  1487. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +22 -0
  1488. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +18 -5
  1489. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +20 -5
  1490. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  1491. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1492. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1493. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  1494. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  1495. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +76 -73
  1496. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +38 -16
  1497. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1498. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1499. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1500. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1501. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1502. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1503. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1504. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1505. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1506. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  1507. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1508. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1509. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1510. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1511. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1512. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1513. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1514. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  1515. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  1516. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  1517. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -66
  1518. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  1519. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  1520. data/third_party/abseil-cpp/absl/synchronization/mutex.h +82 -65
  1521. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1522. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1523. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1524. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  1525. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  1526. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1527. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1528. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1529. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1530. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  1531. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1532. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -5
  1533. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1534. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1535. data/third_party/abseil-cpp/absl/time/time.h +93 -60
  1536. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1537. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1538. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  1539. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1540. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1541. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1542. data/third_party/boringssl-with-bazel/err_data.c +696 -662
  1543. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
  1544. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1545. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1546. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1547. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1548. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +64 -44
  1549. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1550. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
  1551. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1552. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1553. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +19 -9
  1554. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
  1555. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1556. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +60 -49
  1557. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1558. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1559. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1560. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1561. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +91 -1
  1562. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
  1563. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +292 -200
  1564. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +10 -10
  1565. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
  1566. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  1567. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
  1568. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1569. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1570. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1571. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1572. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1573. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1574. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1575. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1576. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  1577. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  1578. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1579. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  1580. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1581. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1582. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1583. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  1584. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  1585. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1586. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1587. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1588. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
  1589. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1590. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1591. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  1592. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1593. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1594. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  1595. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
  1596. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1597. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +6 -3
  1598. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1599. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1600. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +23 -3
  1601. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
  1602. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1603. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1604. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1605. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1606. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1607. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  1608. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  1609. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  1610. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1611. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1612. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1613. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1614. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1615. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1616. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1617. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1618. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1619. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1620. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1621. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +6 -13
  1622. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -15
  1623. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -13
  1624. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
  1625. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +14 -9
  1626. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1627. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +21 -16
  1628. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1629. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1630. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1631. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +397 -311
  1632. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1633. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1634. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1635. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1636. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1637. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  1638. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1639. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1640. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1641. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1642. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1643. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1644. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1645. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1646. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1647. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1648. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1649. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  1650. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
  1651. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1652. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1653. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1654. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1655. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  1656. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  1657. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1658. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1659. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1660. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1661. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1662. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1663. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1664. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1665. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1666. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1667. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1668. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
  1669. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1670. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1671. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1672. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1673. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1674. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  1675. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
  1676. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1677. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1678. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  1679. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  1680. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  1681. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
  1682. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
  1683. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1684. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +32 -0
  1685. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1686. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1687. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1688. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
  1689. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  1690. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +14 -11
  1691. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1692. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1693. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  1694. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1695. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  1696. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1697. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
  1698. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  1699. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  1700. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1701. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
  1702. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1703. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1704. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1705. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1706. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  1707. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
  1708. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  1709. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
  1710. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +8 -11
  1711. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1712. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  1713. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
  1714. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1715. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1716. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1717. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
  1718. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  1719. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +80 -38
  1720. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  1721. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  1722. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1517 -495
  1723. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
  1724. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +57 -13
  1725. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1726. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1727. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1728. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +10 -0
  1729. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1730. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -11
  1731. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1732. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  1733. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  1734. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -2
  1735. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1736. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  1737. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1738. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1739. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1740. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +55 -104
  1741. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  1742. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1743. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1744. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1745. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1746. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1747. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1748. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1749. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1750. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1751. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1752. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  1753. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1754. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  1755. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +386 -104
  1756. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +41 -48
  1757. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1160 -331
  1758. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1759. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +54 -17
  1760. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1761. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1762. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1763. data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +660 -747
  1764. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  1765. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +90 -43
  1766. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +307 -201
  1767. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +173 -36
  1768. data/third_party/boringssl-with-bazel/src/ssl/internal.h +474 -156
  1769. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1770. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  1771. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1772. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  1773. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1774. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1775. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +56 -110
  1776. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1777. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +129 -96
  1778. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1779. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +10 -15
  1780. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  1781. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1782. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
  1783. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
  1784. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +146 -110
  1785. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +241 -132
  1786. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1787. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  1788. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  1789. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1790. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  1791. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  1792. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  1793. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1794. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1795. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1796. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1797. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1798. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1799. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1800. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1801. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  1802. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  1803. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  1804. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1805. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  1806. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  1807. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1808. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  1809. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1810. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1811. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1812. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  1813. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1814. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  1815. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  1816. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  1817. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1818. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1819. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  1820. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1821. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  1822. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  1823. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1824. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1825. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1826. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1827. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1828. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1829. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1830. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1831. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1832. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1833. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1834. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1835. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1836. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1837. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1838. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1839. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1840. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1841. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1842. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1843. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1844. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1845. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1846. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1847. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1848. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1849. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1850. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1851. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1852. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1853. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1854. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1855. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1856. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1857. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1858. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1859. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1860. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1861. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1862. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1863. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1864. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1865. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1866. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1867. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1868. data/third_party/re2/re2/compile.cc +91 -109
  1869. data/third_party/re2/re2/dfa.cc +27 -39
  1870. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1871. data/third_party/re2/re2/filtered_re2.h +10 -5
  1872. data/third_party/re2/re2/nfa.cc +1 -1
  1873. data/third_party/re2/re2/parse.cc +42 -23
  1874. data/third_party/re2/re2/perl_groups.cc +34 -34
  1875. data/third_party/re2/re2/prefilter.cc +3 -2
  1876. data/third_party/re2/re2/prog.cc +182 -4
  1877. data/third_party/re2/re2/prog.h +28 -9
  1878. data/third_party/re2/re2/re2.cc +87 -118
  1879. data/third_party/re2/re2/re2.h +156 -141
  1880. data/third_party/re2/re2/regexp.cc +12 -5
  1881. data/third_party/re2/re2/regexp.h +8 -2
  1882. data/third_party/re2/re2/set.cc +31 -9
  1883. data/third_party/re2/re2/set.h +9 -4
  1884. data/third_party/re2/re2/simplify.cc +11 -3
  1885. data/third_party/re2/re2/tostring.cc +1 -1
  1886. data/third_party/re2/re2/walker-inl.h +1 -1
  1887. data/third_party/re2/util/mutex.h +2 -2
  1888. data/third_party/re2/util/pcre.h +3 -3
  1889. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1890. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1891. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1892. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1893. data/third_party/upb/upb/decode.c +758 -351
  1894. data/third_party/upb/upb/decode.h +66 -12
  1895. data/third_party/upb/upb/decode_fast.c +596 -581
  1896. data/third_party/upb/upb/decode_fast.h +40 -13
  1897. data/third_party/upb/upb/decode_internal.h +211 -0
  1898. data/third_party/upb/upb/def.c +2089 -1069
  1899. data/third_party/upb/upb/def.h +341 -256
  1900. data/third_party/upb/upb/def.hpp +160 -161
  1901. data/third_party/upb/upb/encode.c +285 -165
  1902. data/third_party/upb/upb/encode.h +38 -13
  1903. data/third_party/upb/upb/msg.c +276 -102
  1904. data/third_party/upb/upb/msg.h +84 -582
  1905. data/third_party/upb/upb/msg_internal.h +818 -0
  1906. data/third_party/upb/upb/port_def.inc +85 -24
  1907. data/third_party/upb/upb/port_undef.inc +38 -1
  1908. data/third_party/upb/upb/reflection.c +312 -240
  1909. data/third_party/upb/upb/reflection.h +119 -67
  1910. data/third_party/upb/upb/reflection.hpp +37 -0
  1911. data/third_party/upb/upb/table.c +398 -193
  1912. data/third_party/upb/upb/table_internal.h +383 -0
  1913. data/third_party/upb/upb/text_encode.c +141 -90
  1914. data/third_party/upb/upb/text_encode.h +31 -5
  1915. data/third_party/upb/upb/upb.c +164 -66
  1916. data/third_party/upb/upb/upb.h +145 -139
  1917. data/third_party/upb/upb/upb.hpp +50 -23
  1918. data/third_party/upb/upb/upb_internal.h +68 -0
  1919. data/third_party/xxhash/xxhash.h +679 -542
  1920. metadata +597 -254
  1921. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1922. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -84
  1923. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  1924. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  1925. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  1926. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  1927. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
  1928. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  1929. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  1930. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  1931. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  1932. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  1933. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -125
  1934. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
  1935. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -213
  1936. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -55
  1937. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -76
  1938. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -130
  1939. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  1940. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  1941. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  1942. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  1943. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  1944. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  1945. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
  1946. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
  1947. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
  1948. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
  1949. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
  1950. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
  1951. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
  1952. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  1953. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
  1954. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  1955. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  1956. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
  1957. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
  1958. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  1959. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1960. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
  1961. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1962. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
  1963. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1964. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
  1965. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1966. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  1967. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1968. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  1969. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  1970. data/src/core/lib/avl/avl.cc +0 -306
  1971. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  1972. data/src/core/lib/compression/compression_args.cc +0 -135
  1973. data/src/core/lib/compression/compression_args.h +0 -56
  1974. data/src/core/lib/compression/stream_compression.cc +0 -80
  1975. data/src/core/lib/compression/stream_compression.h +0 -116
  1976. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  1977. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  1978. data/src/core/lib/compression/stream_compression_identity.cc +0 -90
  1979. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1980. data/src/core/lib/gpr/arena.h +0 -47
  1981. data/src/core/lib/gpr/tls_gcc.h +0 -52
  1982. data/src/core/lib/gpr/tls_msvc.h +0 -54
  1983. data/src/core/lib/gpr/tls_pthread.h +0 -56
  1984. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  1985. data/src/core/lib/gprpp/atomic.h +0 -104
  1986. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  1987. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  1988. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1989. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  1990. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  1991. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  1992. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  1993. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  1994. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  1995. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1996. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  1997. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  1998. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  1999. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2000. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2001. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2002. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2003. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -161
  2004. data/src/core/lib/iomgr/tcp_custom.cc +0 -391
  2005. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2006. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -483
  2007. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2008. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2009. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2010. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2011. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2012. data/src/core/lib/iomgr/udp_server.h +0 -103
  2013. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2014. data/src/core/lib/slice/slice_intern.cc +0 -373
  2015. data/src/core/lib/slice/slice_utils.h +0 -200
  2016. data/src/core/lib/surface/init_secure.cc +0 -81
  2017. data/src/core/lib/transport/metadata.cc +0 -693
  2018. data/src/core/lib/transport/metadata.h +0 -446
  2019. data/src/core/lib/transport/metadata_batch.cc +0 -419
  2020. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2021. data/src/core/lib/transport/static_metadata.h +0 -604
  2022. data/src/core/lib/transport/status_metadata.cc +0 -62
  2023. data/src/core/lib/transport/status_metadata.h +0 -48
  2024. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  2025. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  2026. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2028. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
  2029. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2030. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2031. data/third_party/cares/cares/ares_getopt.c +0 -122
  2032. data/third_party/cares/cares/ares_getopt.h +0 -53
  2033. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2034. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2035. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2036. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  2037. data/third_party/upb/upb/decode.int.h +0 -163
  2038. data/third_party/upb/upb/table.int.h +0 -475
  2039. data/third_party/upb/upb/upb.int.h +0 -29
@@ -121,29 +121,80 @@ extern "C" {
121
121
 
122
122
  /*
123
123
  * This part deals with the special case where a unit wants to inline xxHash,
124
- * but "xxhash.h" has previously been included without XXH_INLINE_ALL, such
125
- * as part of some previously included *.h header file.
124
+ * but "xxhash.h" has previously been included without XXH_INLINE_ALL,
125
+ * such as part of some previously included *.h header file.
126
126
  * Without further action, the new include would just be ignored,
127
127
  * and functions would effectively _not_ be inlined (silent failure).
128
128
  * The following macros solve this situation by prefixing all inlined names,
129
129
  * avoiding naming collision with previous inclusions.
130
130
  */
131
- # ifdef XXH_NAMESPACE
132
- # error "XXH_INLINE_ALL with XXH_NAMESPACE is not supported"
133
- /*
134
- * Note: Alternative: #undef all symbols (it's a pretty large list).
135
- * Without #error: it compiles, but functions are actually not inlined.
136
- */
137
- # endif
131
+ /* Before that, we unconditionally #undef all symbols,
132
+ * in case they were already defined with XXH_NAMESPACE.
133
+ * They will then be redefined for XXH_INLINE_ALL
134
+ */
135
+ # undef XXH_versionNumber
136
+ /* XXH32 */
137
+ # undef XXH32
138
+ # undef XXH32_createState
139
+ # undef XXH32_freeState
140
+ # undef XXH32_reset
141
+ # undef XXH32_update
142
+ # undef XXH32_digest
143
+ # undef XXH32_copyState
144
+ # undef XXH32_canonicalFromHash
145
+ # undef XXH32_hashFromCanonical
146
+ /* XXH64 */
147
+ # undef XXH64
148
+ # undef XXH64_createState
149
+ # undef XXH64_freeState
150
+ # undef XXH64_reset
151
+ # undef XXH64_update
152
+ # undef XXH64_digest
153
+ # undef XXH64_copyState
154
+ # undef XXH64_canonicalFromHash
155
+ # undef XXH64_hashFromCanonical
156
+ /* XXH3_64bits */
157
+ # undef XXH3_64bits
158
+ # undef XXH3_64bits_withSecret
159
+ # undef XXH3_64bits_withSeed
160
+ # undef XXH3_64bits_withSecretandSeed
161
+ # undef XXH3_createState
162
+ # undef XXH3_freeState
163
+ # undef XXH3_copyState
164
+ # undef XXH3_64bits_reset
165
+ # undef XXH3_64bits_reset_withSeed
166
+ # undef XXH3_64bits_reset_withSecret
167
+ # undef XXH3_64bits_update
168
+ # undef XXH3_64bits_digest
169
+ # undef XXH3_generateSecret
170
+ /* XXH3_128bits */
171
+ # undef XXH128
172
+ # undef XXH3_128bits
173
+ # undef XXH3_128bits_withSeed
174
+ # undef XXH3_128bits_withSecret
175
+ # undef XXH3_128bits_reset
176
+ # undef XXH3_128bits_reset_withSeed
177
+ # undef XXH3_128bits_reset_withSecret
178
+ # undef XXH3_128bits_reset_withSecretandSeed
179
+ # undef XXH3_128bits_update
180
+ # undef XXH3_128bits_digest
181
+ # undef XXH128_isEqual
182
+ # undef XXH128_cmp
183
+ # undef XXH128_canonicalFromHash
184
+ # undef XXH128_hashFromCanonical
185
+ /* Finally, free the namespace itself */
186
+ # undef XXH_NAMESPACE
187
+
188
+ /* employ the namespace for XXH_INLINE_ALL */
138
189
  # define XXH_NAMESPACE XXH_INLINE_
139
190
  /*
140
- * Some identifiers (enums, type names) are not symbols, but they must
141
- * still be renamed to avoid redeclaration.
191
+ * Some identifiers (enums, type names) are not symbols,
192
+ * but they must nonetheless be renamed to avoid redeclaration.
142
193
  * Alternative solution: do not redeclare them.
143
- * However, this requires some #ifdefs, and is a more dispersed action.
144
- * Meanwhile, renaming can be achieved in a single block
194
+ * However, this requires some #ifdefs, and has a more dispersed impact.
195
+ * Meanwhile, renaming can be achieved in a single place.
145
196
  */
146
- # define XXH_IPREF(Id) XXH_INLINE_ ## Id
197
+ # define XXH_IPREF(Id) XXH_NAMESPACE ## Id
147
198
  # define XXH_OK XXH_IPREF(XXH_OK)
148
199
  # define XXH_ERROR XXH_IPREF(XXH_ERROR)
149
200
  # define XXH_errorcode XXH_IPREF(XXH_errorcode)
@@ -235,23 +286,28 @@ extern "C" {
235
286
  # define XXH3_64bits XXH_NAME2(XXH_NAMESPACE, XXH3_64bits)
236
287
  # define XXH3_64bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecret)
237
288
  # define XXH3_64bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSeed)
289
+ # define XXH3_64bits_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecretandSeed)
238
290
  # define XXH3_createState XXH_NAME2(XXH_NAMESPACE, XXH3_createState)
239
291
  # define XXH3_freeState XXH_NAME2(XXH_NAMESPACE, XXH3_freeState)
240
292
  # define XXH3_copyState XXH_NAME2(XXH_NAMESPACE, XXH3_copyState)
241
293
  # define XXH3_64bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset)
242
294
  # define XXH3_64bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSeed)
243
295
  # define XXH3_64bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecret)
296
+ # define XXH3_64bits_reset_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecretandSeed)
244
297
  # define XXH3_64bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_update)
245
298
  # define XXH3_64bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_digest)
246
299
  # define XXH3_generateSecret XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret)
300
+ # define XXH3_generateSecret_fromSeed XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret_fromSeed)
247
301
  /* XXH3_128bits */
248
302
  # define XXH128 XXH_NAME2(XXH_NAMESPACE, XXH128)
249
303
  # define XXH3_128bits XXH_NAME2(XXH_NAMESPACE, XXH3_128bits)
250
304
  # define XXH3_128bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSeed)
251
305
  # define XXH3_128bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecret)
306
+ # define XXH3_128bits_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecretandSeed)
252
307
  # define XXH3_128bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset)
253
308
  # define XXH3_128bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSeed)
254
309
  # define XXH3_128bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecret)
310
+ # define XXH3_128bits_reset_withSecretandSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecretandSeed)
255
311
  # define XXH3_128bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_update)
256
312
  # define XXH3_128bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_digest)
257
313
  # define XXH128_isEqual XXH_NAME2(XXH_NAMESPACE, XXH128_isEqual)
@@ -266,22 +322,22 @@ extern "C" {
266
322
  ***************************************/
267
323
  #define XXH_VERSION_MAJOR 0
268
324
  #define XXH_VERSION_MINOR 8
269
- #define XXH_VERSION_RELEASE 0
325
+ #define XXH_VERSION_RELEASE 1
270
326
  #define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
271
327
 
272
328
  /*!
273
329
  * @brief Obtains the xxHash version.
274
330
  *
275
- * This is only useful when xxHash is compiled as a shared library, as it is
276
- * independent of the version defined in the header.
331
+ * This is mostly useful when xxHash is compiled as a shared library,
332
+ * since the returned value comes from the library, as opposed to header file.
277
333
  *
278
- * @return `XXH_VERSION_NUMBER` as of when the function was compiled.
334
+ * @return `XXH_VERSION_NUMBER` of the invoked library.
279
335
  */
280
336
  XXH_PUBLIC_API unsigned XXH_versionNumber (void);
281
337
 
282
338
 
283
339
  /* ****************************
284
- * Definitions
340
+ * Common basic types
285
341
  ******************************/
286
342
  #include <stddef.h> /* size_t */
287
343
  typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
@@ -297,11 +353,13 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
297
353
  * Not necessarily defined to `uint32_t` but functionally equivalent.
298
354
  */
299
355
  typedef uint32_t XXH32_hash_t;
356
+
300
357
  #elif !defined (__VMS) \
301
358
  && (defined (__cplusplus) \
302
359
  || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
303
360
  # include <stdint.h>
304
361
  typedef uint32_t XXH32_hash_t;
362
+
305
363
  #else
306
364
  # include <limits.h>
307
365
  # if UINT_MAX == 0xFFFFFFFFUL
@@ -323,10 +381,9 @@ typedef uint32_t XXH32_hash_t;
323
381
  * Contains functions used in the classic 32-bit xxHash algorithm.
324
382
  *
325
383
  * @note
326
- * XXH32 is considered rather weak by today's standards.
327
- * The @ref xxh3_family provides competitive speed for both 32-bit and 64-bit
328
- * systems, and offers true 64/128 bit hash results. It provides a superior
329
- * level of dispersion, and greatly reduces the risks of collisions.
384
+ * XXH32 is useful for older platforms, with no or poor 64-bit performance.
385
+ * Note that @ref xxh3_family provides competitive speed
386
+ * for both 32-bit and 64-bit systems, and offers true 64/128 bit hash results.
330
387
  *
331
388
  * @see @ref xxh64_family, @ref xxh3_family : Other xxHash families
332
389
  * @see @ref xxh32_impl for implementation details
@@ -543,6 +600,41 @@ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t
543
600
  XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src);
544
601
 
545
602
 
603
+ #ifdef __has_attribute
604
+ # define XXH_HAS_ATTRIBUTE(x) __has_attribute(x)
605
+ #else
606
+ # define XXH_HAS_ATTRIBUTE(x) 0
607
+ #endif
608
+
609
+ /* C-language Attributes are added in C23. */
610
+ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201710L) && defined(__has_c_attribute)
611
+ # define XXH_HAS_C_ATTRIBUTE(x) __has_c_attribute(x)
612
+ #else
613
+ # define XXH_HAS_C_ATTRIBUTE(x) 0
614
+ #endif
615
+
616
+ #if defined(__cplusplus) && defined(__has_cpp_attribute)
617
+ # define XXH_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
618
+ #else
619
+ # define XXH_HAS_CPP_ATTRIBUTE(x) 0
620
+ #endif
621
+
622
+ /*
623
+ Define XXH_FALLTHROUGH macro for annotating switch case with the 'fallthrough' attribute
624
+ introduced in CPP17 and C23.
625
+ CPP17 : https://en.cppreference.com/w/cpp/language/attributes/fallthrough
626
+ C23 : https://en.cppreference.com/w/c/language/attributes/fallthrough
627
+ */
628
+ #if XXH_HAS_C_ATTRIBUTE(x)
629
+ # define XXH_FALLTHROUGH [[fallthrough]]
630
+ #elif XXH_HAS_CPP_ATTRIBUTE(x)
631
+ # define XXH_FALLTHROUGH [[fallthrough]]
632
+ #elif XXH_HAS_ATTRIBUTE(__fallthrough__)
633
+ # define XXH_FALLTHROUGH __attribute__ ((fallthrough))
634
+ #else
635
+ # define XXH_FALLTHROUGH
636
+ #endif
637
+
546
638
  /*!
547
639
  * @}
548
640
  * @ingroup public
@@ -586,8 +678,8 @@ typedef uint64_t XXH64_hash_t;
586
678
  *
587
679
  * @note
588
680
  * XXH3 provides competitive speed for both 32-bit and 64-bit systems,
589
- * and offers true 64/128 bit hash results. It provides a superior level of
590
- * dispersion, and greatly reduces the risks of collisions.
681
+ * and offers true 64/128 bit hash results.
682
+ * It provides better speed for systems with vector processing capabilities.
591
683
  */
592
684
 
593
685
 
@@ -713,13 +805,17 @@ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* data, size_t len, X
713
805
  * It's possible to provide any blob of bytes as a "secret" to generate the hash.
714
806
  * This makes it more difficult for an external actor to prepare an intentional collision.
715
807
  * The main condition is that secretSize *must* be large enough (>= XXH3_SECRET_SIZE_MIN).
716
- * However, the quality of produced hash values depends on secret's entropy.
717
- * Technically, the secret must look like a bunch of random bytes.
808
+ * However, the quality of the secret impacts the dispersion of the hash algorithm.
809
+ * Therefore, the secret _must_ look like a bunch of random bytes.
718
810
  * Avoid "trivial" or structured data such as repeated sequences or a text document.
719
- * Whenever unsure about the "randomness" of the blob of bytes,
720
- * consider relabelling it as a "custom seed" instead,
721
- * and employ "XXH3_generateSecret()" (see below)
722
- * to generate a high entropy secret derived from the custom seed.
811
+ * Whenever in doubt about the "randomness" of the blob of bytes,
812
+ * consider employing "XXH3_generateSecret()" instead (see below).
813
+ * It will generate a proper high entropy secret derived from the blob of bytes.
814
+ * Another advantage of using XXH3_generateSecret() is that
815
+ * it guarantees that all bits within the initial blob of bytes
816
+ * will impact every bit of the output.
817
+ * This is not necessarily the case when using the blob of bytes directly
818
+ * because, when hashing _small_ inputs, only a portion of the secret is employed.
723
819
  */
724
820
  XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize);
725
821
 
@@ -879,10 +975,7 @@ XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t*
879
975
  struct XXH32_state_s {
880
976
  XXH32_hash_t total_len_32; /*!< Total length hashed, modulo 2^32 */
881
977
  XXH32_hash_t large_len; /*!< Whether the hash is >= 16 (handles @ref total_len_32 overflow) */
882
- XXH32_hash_t v1; /*!< First accumulator lane */
883
- XXH32_hash_t v2; /*!< Second accumulator lane */
884
- XXH32_hash_t v3; /*!< Third accumulator lane */
885
- XXH32_hash_t v4; /*!< Fourth accumulator lane */
978
+ XXH32_hash_t v[4]; /*!< Accumulator lanes */
886
979
  XXH32_hash_t mem32[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[16]. */
887
980
  XXH32_hash_t memsize; /*!< Amount of data in @ref mem32 */
888
981
  XXH32_hash_t reserved; /*!< Reserved field. Do not read or write to it, it may be removed. */
@@ -905,19 +998,19 @@ struct XXH32_state_s {
905
998
  */
906
999
  struct XXH64_state_s {
907
1000
  XXH64_hash_t total_len; /*!< Total length hashed. This is always 64-bit. */
908
- XXH64_hash_t v1; /*!< First accumulator lane */
909
- XXH64_hash_t v2; /*!< Second accumulator lane */
910
- XXH64_hash_t v3; /*!< Third accumulator lane */
911
- XXH64_hash_t v4; /*!< Fourth accumulator lane */
1001
+ XXH64_hash_t v[4]; /*!< Accumulator lanes */
912
1002
  XXH64_hash_t mem64[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */
913
1003
  XXH32_hash_t memsize; /*!< Amount of data in @ref mem64 */
914
1004
  XXH32_hash_t reserved32; /*!< Reserved field, needed for padding anyways*/
915
1005
  XXH64_hash_t reserved64; /*!< Reserved field. Do not read or write to it, it may be removed. */
916
1006
  }; /* typedef'd to XXH64_state_t */
917
1007
 
918
- #if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11+ */
1008
+ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* >= C11 */
919
1009
  # include <stdalign.h>
920
1010
  # define XXH_ALIGN(n) alignas(n)
1011
+ #elif defined(__cplusplus) && (__cplusplus >= 201103L) /* >= C++11 */
1012
+ /* In C++ alignas() is a keyword */
1013
+ # define XXH_ALIGN(n) alignas(n)
921
1014
  #elif defined(__GNUC__)
922
1015
  # define XXH_ALIGN(n) __attribute__ ((aligned(n)))
923
1016
  #elif defined(_MSC_VER)
@@ -928,6 +1021,7 @@ struct XXH64_state_s {
928
1021
 
929
1022
  /* Old GCC versions only accept the attribute after the type in structures. */
930
1023
  #if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) /* C11+ */ \
1024
+ && ! (defined(__cplusplus) && (__cplusplus >= 201103L)) /* >= C++11 */ \
931
1025
  && defined(__GNUC__)
932
1026
  # define XXH_ALIGN_MEMBER(align, type) type XXH_ALIGN(align)
933
1027
  #else
@@ -957,16 +1051,18 @@ struct XXH64_state_s {
957
1051
  * @brief Structure for XXH3 streaming API.
958
1052
  *
959
1053
  * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY,
960
- * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is
961
- * an opaque type. This allows fields to safely be changed.
1054
+ * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined.
1055
+ * Otherwise it is an opaque type.
1056
+ * Never use this definition in combination with dynamic library.
1057
+ * This allows fields to safely be changed in the future.
962
1058
  *
963
- * @note **This structure has a strict alignment requirement of 64 bytes.** Do
964
- * not allocate this with `malloc()` or `new`, it will not be sufficiently
965
- * aligned. Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack
966
- * allocation.
1059
+ * @note ** This structure has a strict alignment requirement of 64 bytes!! **
1060
+ * Do not allocate this with `malloc()` or `new`,
1061
+ * it will not be sufficiently aligned.
1062
+ * Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack allocation.
967
1063
  *
968
1064
  * Typedef'd to @ref XXH3_state_t.
969
- * Do not access the members of this struct directly.
1065
+ * Do never access the members of this struct directly.
970
1066
  *
971
1067
  * @see XXH3_INITSTATE() for stack initialization.
972
1068
  * @see XXH3_createState(), XXH3_freeState().
@@ -981,7 +1077,7 @@ struct XXH3_state_s {
981
1077
  /*!< The internal buffer. @see XXH32_state_s::mem32 */
982
1078
  XXH32_hash_t bufferedSize;
983
1079
  /*!< The amount of memory in @ref buffer, @see XXH32_state_s::memsize */
984
- XXH32_hash_t reserved32;
1080
+ XXH32_hash_t useSeed;
985
1081
  /*!< Reserved field. Needed for padding on 64-bit. */
986
1082
  size_t nbStripesSoFar;
987
1083
  /*!< Number or stripes processed. */
@@ -1017,6 +1113,12 @@ struct XXH3_state_s {
1017
1113
  #define XXH3_INITSTATE(XXH3_state_ptr) { (XXH3_state_ptr)->seed = 0; }
1018
1114
 
1019
1115
 
1116
+ /* XXH128() :
1117
+ * simple alias to pre-selected XXH3_128bits variant
1118
+ */
1119
+ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed);
1120
+
1121
+
1020
1122
  /* === Experimental API === */
1021
1123
  /* Symbols defined below must be considered tied to a specific library version. */
1022
1124
 
@@ -1029,31 +1131,89 @@ struct XXH3_state_s {
1029
1131
  * as it becomes much more difficult for an external actor to guess how to impact the calculation logic.
1030
1132
  *
1031
1133
  * The function accepts as input a custom seed of any length and any content,
1032
- * and derives from it a high-entropy secret of length XXH3_SECRET_DEFAULT_SIZE
1033
- * into an already allocated buffer secretBuffer.
1034
- * The generated secret is _always_ XXH_SECRET_DEFAULT_SIZE bytes long.
1134
+ * and derives from it a high-entropy secret of length @secretSize
1135
+ * into an already allocated buffer @secretBuffer.
1136
+ * @secretSize must be >= XXH3_SECRET_SIZE_MIN
1035
1137
  *
1036
1138
  * The generated secret can then be used with any `*_withSecret()` variant.
1037
1139
  * Functions `XXH3_128bits_withSecret()`, `XXH3_64bits_withSecret()`,
1038
1140
  * `XXH3_128bits_reset_withSecret()` and `XXH3_64bits_reset_withSecret()`
1039
1141
  * are part of this list. They all accept a `secret` parameter
1040
- * which must be very long for implementation reasons (>= XXH3_SECRET_SIZE_MIN)
1142
+ * which must be large enough for implementation reasons (>= XXH3_SECRET_SIZE_MIN)
1041
1143
  * _and_ feature very high entropy (consist of random-looking bytes).
1042
1144
  * These conditions can be a high bar to meet, so
1043
- * this function can be used to generate a secret of proper quality.
1145
+ * XXH3_generateSecret() can be employed to ensure proper quality.
1044
1146
  *
1045
1147
  * customSeed can be anything. It can have any size, even small ones,
1046
- * and its content can be anything, even stupidly "low entropy" source such as a bunch of zeroes.
1047
- * The resulting `secret` will nonetheless provide all expected qualities.
1148
+ * and its content can be anything, even "poor entropy" sources such as a bunch of zeroes.
1149
+ * The resulting `secret` will nonetheless provide all required qualities.
1048
1150
  *
1049
- * Supplying NULL as the customSeed copies the default secret into `secretBuffer`.
1050
1151
  * When customSeedSize > 0, supplying NULL as customSeed is undefined behavior.
1051
1152
  */
1052
- XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize);
1153
+ XXH_PUBLIC_API XXH_errorcode XXH3_generateSecret(void* secretBuffer, size_t secretSize, const void* customSeed, size_t customSeedSize);
1053
1154
 
1054
1155
 
1055
- /* simple short-cut to pre-selected XXH3_128bits variant */
1056
- XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed);
1156
+ /*
1157
+ * XXH3_generateSecret_fromSeed():
1158
+ *
1159
+ * Generate the same secret as the _withSeed() variants.
1160
+ *
1161
+ * The resulting secret has a length of XXH3_SECRET_DEFAULT_SIZE (necessarily).
1162
+ * @secretBuffer must be already allocated, of size at least XXH3_SECRET_DEFAULT_SIZE bytes.
1163
+ *
1164
+ * The generated secret can be used in combination with
1165
+ *`*_withSecret()` and `_withSecretandSeed()` variants.
1166
+ * This generator is notably useful in combination with `_withSecretandSeed()`,
1167
+ * as a way to emulate a faster `_withSeed()` variant.
1168
+ */
1169
+ XXH_PUBLIC_API void XXH3_generateSecret_fromSeed(void* secretBuffer, XXH64_hash_t seed);
1170
+
1171
+ /*
1172
+ * *_withSecretandSeed() :
1173
+ * These variants generate hash values using either
1174
+ * @seed for "short" keys (< XXH3_MIDSIZE_MAX = 240 bytes)
1175
+ * or @secret for "large" keys (>= XXH3_MIDSIZE_MAX).
1176
+ *
1177
+ * This generally benefits speed, compared to `_withSeed()` or `_withSecret()`.
1178
+ * `_withSeed()` has to generate the secret on the fly for "large" keys.
1179
+ * It's fast, but can be perceptible for "not so large" keys (< 1 KB).
1180
+ * `_withSecret()` has to generate the masks on the fly for "small" keys,
1181
+ * which requires more instructions than _withSeed() variants.
1182
+ * Therefore, _withSecretandSeed variant combines the best of both worlds.
1183
+ *
1184
+ * When @secret has been generated by XXH3_generateSecret_fromSeed(),
1185
+ * this variant produces *exactly* the same results as `_withSeed()` variant,
1186
+ * hence offering only a pure speed benefit on "large" input,
1187
+ * by skipping the need to regenerate the secret for every large input.
1188
+ *
1189
+ * Another usage scenario is to hash the secret to a 64-bit hash value,
1190
+ * for example with XXH3_64bits(), which then becomes the seed,
1191
+ * and then employ both the seed and the secret in _withSecretandSeed().
1192
+ * On top of speed, an added benefit is that each bit in the secret
1193
+ * has a 50% chance to swap each bit in the output,
1194
+ * via its impact to the seed.
1195
+ * This is not guaranteed when using the secret directly in "small data" scenarios,
1196
+ * because only portions of the secret are employed for small data.
1197
+ */
1198
+ XXH_PUBLIC_API XXH64_hash_t
1199
+ XXH3_64bits_withSecretandSeed(const void* data, size_t len,
1200
+ const void* secret, size_t secretSize,
1201
+ XXH64_hash_t seed);
1202
+
1203
+ XXH_PUBLIC_API XXH128_hash_t
1204
+ XXH3_128bits_withSecretandSeed(const void* data, size_t len,
1205
+ const void* secret, size_t secretSize,
1206
+ XXH64_hash_t seed64);
1207
+
1208
+ XXH_PUBLIC_API XXH_errorcode
1209
+ XXH3_64bits_reset_withSecretandSeed(XXH3_state_t* statePtr,
1210
+ const void* secret, size_t secretSize,
1211
+ XXH64_hash_t seed64);
1212
+
1213
+ XXH_PUBLIC_API XXH_errorcode
1214
+ XXH3_128bits_reset_withSecretandSeed(XXH3_state_t* statePtr,
1215
+ const void* secret, size_t secretSize,
1216
+ XXH64_hash_t seed64);
1057
1217
 
1058
1218
 
1059
1219
  #endif /* XXH_NO_LONG_LONG */
@@ -1159,22 +1319,12 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s
1159
1319
  * care, as what works on one compiler/platform/optimization level may cause
1160
1320
  * another to read garbage data or even crash.
1161
1321
  *
1162
- * See https://stackoverflow.com/a/32095106/646947 for details.
1322
+ * See http://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html for details.
1163
1323
  *
1164
1324
  * Prefer these methods in priority order (0 > 3 > 1 > 2)
1165
1325
  */
1166
1326
  # define XXH_FORCE_MEMORY_ACCESS 0
1167
- /*!
1168
- * @def XXH_ACCEPT_NULL_INPUT_POINTER
1169
- * @brief Whether to add explicit `NULL` checks.
1170
- *
1171
- * If the input pointer is `NULL` and the length is non-zero, xxHash's default
1172
- * behavior is to dereference it, triggering a segfault.
1173
- *
1174
- * When this macro is enabled, xxHash actively checks the input for a null pointer.
1175
- * If it is, the result for null input pointers is the same as a zero-length input.
1176
- */
1177
- # define XXH_ACCEPT_NULL_INPUT_POINTER 0
1327
+
1178
1328
  /*!
1179
1329
  * @def XXH_FORCE_ALIGN_CHECK
1180
1330
  * @brief If defined to non-zero, adds a special path for aligned inputs (XXH32()
@@ -1226,18 +1376,16 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s
1226
1376
  # define XXH_NO_INLINE_HINTS 0
1227
1377
 
1228
1378
  /*!
1229
- * @def XXH_REROLL
1230
- * @brief Whether to reroll `XXH32_finalize` and `XXH64_finalize`.
1231
- *
1232
- * For performance, `XXH32_finalize` and `XXH64_finalize` use an unrolled loop
1233
- * in the form of a switch statement.
1379
+ * @def XXH32_ENDJMP
1380
+ * @brief Whether to use a jump for `XXH32_finalize`.
1234
1381
  *
1235
- * This is not always desirable, as it generates larger code, and depending on
1236
- * the architecture, may even be slower
1382
+ * For performance, `XXH32_finalize` uses multiple branches in the finalizer.
1383
+ * This is generally preferable for performance,
1384
+ * but depending on exact architecture, a jmp may be preferable.
1237
1385
  *
1238
- * This is automatically defined with `-Os`/`-Oz` on GCC and Clang.
1386
+ * This setting is only possibly making a difference for very small inputs.
1239
1387
  */
1240
- # define XXH_REROLL 0
1388
+ # define XXH32_ENDJMP 0
1241
1389
 
1242
1390
  /*!
1243
1391
  * @internal
@@ -1254,18 +1402,25 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s
1254
1402
  */
1255
1403
 
1256
1404
  #ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
1257
- /* prefer __packed__ structures (method 1) for gcc on armv7 and armv8 */
1258
- # if !defined(__clang__) && ( \
1405
+ /* prefer __packed__ structures (method 1) for gcc on armv7+ and mips */
1406
+ # if !defined(__clang__) && \
1407
+ ( \
1259
1408
  (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \
1260
- (defined(__GNUC__) && (defined(__ARM_ARCH) && __ARM_ARCH >= 7)) )
1409
+ ( \
1410
+ defined(__GNUC__) && ( \
1411
+ (defined(__ARM_ARCH) && __ARM_ARCH >= 7) || \
1412
+ ( \
1413
+ defined(__mips__) && \
1414
+ (__mips <= 5 || __mips_isa_rev < 6) && \
1415
+ (!defined(__mips16) || defined(__mips_mips16e2)) \
1416
+ ) \
1417
+ ) \
1418
+ ) \
1419
+ )
1261
1420
  # define XXH_FORCE_MEMORY_ACCESS 1
1262
1421
  # endif
1263
1422
  #endif
1264
1423
 
1265
- #ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */
1266
- # define XXH_ACCEPT_NULL_INPUT_POINTER 0
1267
- #endif
1268
-
1269
1424
  #ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */
1270
1425
  # if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \
1271
1426
  || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */
@@ -1284,12 +1439,9 @@ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t s
1284
1439
  # endif
1285
1440
  #endif
1286
1441
 
1287
- #ifndef XXH_REROLL
1288
- # if defined(__OPTIMIZE_SIZE__)
1289
- # define XXH_REROLL 1
1290
- # else
1291
- # define XXH_REROLL 0
1292
- # endif
1442
+ #ifndef XXH32_ENDJMP
1443
+ /* generally preferable for performance */
1444
+ # define XXH32_ENDJMP 0
1293
1445
  #endif
1294
1446
 
1295
1447
  /*!
@@ -1341,19 +1493,19 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size)
1341
1493
  #endif
1342
1494
 
1343
1495
  #if XXH_NO_INLINE_HINTS /* disable inlining hints */
1344
- # if defined(__GNUC__)
1496
+ # if defined(__GNUC__) || defined(__clang__)
1345
1497
  # define XXH_FORCE_INLINE static __attribute__((unused))
1346
1498
  # else
1347
1499
  # define XXH_FORCE_INLINE static
1348
1500
  # endif
1349
1501
  # define XXH_NO_INLINE static
1350
1502
  /* enable inlining hints */
1503
+ #elif defined(__GNUC__) || defined(__clang__)
1504
+ # define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused))
1505
+ # define XXH_NO_INLINE static __attribute__((noinline))
1351
1506
  #elif defined(_MSC_VER) /* Visual Studio */
1352
1507
  # define XXH_FORCE_INLINE static __forceinline
1353
1508
  # define XXH_NO_INLINE static __declspec(noinline)
1354
- #elif defined(__GNUC__)
1355
- # define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused))
1356
- # define XXH_NO_INLINE static __attribute__((noinline))
1357
1509
  #elif defined (__cplusplus) \
1358
1510
  || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99 */
1359
1511
  # define XXH_FORCE_INLINE static inline
@@ -1392,8 +1544,39 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size)
1392
1544
  #endif
1393
1545
 
1394
1546
  /* note: use after variable declarations */
1395
- #define XXH_STATIC_ASSERT(c) do { enum { XXH_sa = 1/(int)(!!(c)) }; } while (0)
1547
+ #ifndef XXH_STATIC_ASSERT
1548
+ # if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11 */
1549
+ # include <assert.h>
1550
+ # define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { static_assert((c),m); } while(0)
1551
+ # elif defined(__cplusplus) && (__cplusplus >= 201103L) /* C++11 */
1552
+ # define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { static_assert((c),m); } while(0)
1553
+ # else
1554
+ # define XXH_STATIC_ASSERT_WITH_MESSAGE(c,m) do { struct xxh_sa { char x[(c) ? 1 : -1]; }; } while(0)
1555
+ # endif
1556
+ # define XXH_STATIC_ASSERT(c) XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c)
1557
+ #endif
1396
1558
 
1559
+ /*!
1560
+ * @internal
1561
+ * @def XXH_COMPILER_GUARD(var)
1562
+ * @brief Used to prevent unwanted optimizations for @p var.
1563
+ *
1564
+ * It uses an empty GCC inline assembly statement with a register constraint
1565
+ * which forces @p var into a general purpose register (eg eax, ebx, ecx
1566
+ * on x86) and marks it as modified.
1567
+ *
1568
+ * This is used in a few places to avoid unwanted autovectorization (e.g.
1569
+ * XXH32_round()). All vectorization we want is explicit via intrinsics,
1570
+ * and _usually_ isn't wanted elsewhere.
1571
+ *
1572
+ * We also use it to prevent unwanted constant folding for AArch64 in
1573
+ * XXH3_initCustomSecret_scalar().
1574
+ */
1575
+ #if defined(__GNUC__) || defined(__clang__)
1576
+ # define XXH_COMPILER_GUARD(var) __asm__ __volatile__("" : "+r" (var))
1577
+ #else
1578
+ # define XXH_COMPILER_GUARD(var) ((void)0)
1579
+ #endif
1397
1580
 
1398
1581
  /* *************************************
1399
1582
  * Basic Types
@@ -1500,12 +1683,12 @@ static xxh_u32 XXH_read32(const void* ptr)
1500
1683
 
1501
1684
  /*
1502
1685
  * Portable and safe solution. Generally efficient.
1503
- * see: https://stackoverflow.com/a/32095106/646947
1686
+ * see: http://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html
1504
1687
  */
1505
1688
  static xxh_u32 XXH_read32(const void* memPtr)
1506
1689
  {
1507
1690
  xxh_u32 val;
1508
- memcpy(&val, memPtr, sizeof(val));
1691
+ XXH_memcpy(&val, memPtr, sizeof(val));
1509
1692
  return val;
1510
1693
  }
1511
1694
 
@@ -1513,7 +1696,6 @@ static xxh_u32 XXH_read32(const void* memPtr)
1513
1696
 
1514
1697
 
1515
1698
  /* *** Endianness *** */
1516
- typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
1517
1699
 
1518
1700
  /*!
1519
1701
  * @ingroup tuning
@@ -1523,8 +1705,8 @@ typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
1523
1705
  * Defined to 1 if the target is little endian, or 0 if it is big endian.
1524
1706
  * It can be defined externally, for example on the compiler command line.
1525
1707
  *
1526
- * If it is not defined, a runtime check (which is usually constant folded)
1527
- * is used instead.
1708
+ * If it is not defined,
1709
+ * a runtime check (which is usually constant folded) is used instead.
1528
1710
  *
1529
1711
  * @note
1530
1712
  * This is not necessarily defined to an integer constant.
@@ -1703,11 +1885,12 @@ XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; }
1703
1885
  * @ingroup impl
1704
1886
  * @{
1705
1887
  */
1706
- static const xxh_u32 XXH_PRIME32_1 = 0x9E3779B1U; /*!< 0b10011110001101110111100110110001 */
1707
- static const xxh_u32 XXH_PRIME32_2 = 0x85EBCA77U; /*!< 0b10000101111010111100101001110111 */
1708
- static const xxh_u32 XXH_PRIME32_3 = 0xC2B2AE3DU; /*!< 0b11000010101100101010111000111101 */
1709
- static const xxh_u32 XXH_PRIME32_4 = 0x27D4EB2FU; /*!< 0b00100111110101001110101100101111 */
1710
- static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /*!< 0b00010110010101100110011110110001 */
1888
+ /* #define instead of static const, to be used as initializers */
1889
+ #define XXH_PRIME32_1 0x9E3779B1U /*!< 0b10011110001101110111100110110001 */
1890
+ #define XXH_PRIME32_2 0x85EBCA77U /*!< 0b10000101111010111100101001110111 */
1891
+ #define XXH_PRIME32_3 0xC2B2AE3DU /*!< 0b11000010101100101010111000111101 */
1892
+ #define XXH_PRIME32_4 0x27D4EB2FU /*!< 0b00100111110101001110101100101111 */
1893
+ #define XXH_PRIME32_5 0x165667B1U /*!< 0b00010110010101100110011110110001 */
1711
1894
 
1712
1895
  #ifdef XXH_OLD_NAMES
1713
1896
  # define PRIME32_1 XXH_PRIME32_1
@@ -1733,13 +1916,12 @@ static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input)
1733
1916
  acc += input * XXH_PRIME32_2;
1734
1917
  acc = XXH_rotl32(acc, 13);
1735
1918
  acc *= XXH_PRIME32_1;
1736
- #if defined(__GNUC__) && defined(__SSE4_1__) && !defined(XXH_ENABLE_AUTOVECTORIZE)
1919
+ #if (defined(__SSE4_1__) || defined(__aarch64__)) && !defined(XXH_ENABLE_AUTOVECTORIZE)
1737
1920
  /*
1738
1921
  * UGLY HACK:
1739
- * This inline assembly hack forces acc into a normal register. This is the
1740
- * only thing that prevents GCC and Clang from autovectorizing the XXH32
1741
- * loop (pragmas and attributes don't work for some reason) without globally
1742
- * disabling SSE4.1.
1922
+ * A compiler fence is the only thing that prevents GCC and Clang from
1923
+ * autovectorizing the XXH32 loop (pragmas and attributes don't work for some
1924
+ * reason) without globally disabling SSE4.1.
1743
1925
  *
1744
1926
  * The reason we want to avoid vectorization is because despite working on
1745
1927
  * 4 integers at a time, there are multiple factors slowing XXH32 down on
@@ -1764,22 +1946,11 @@ static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input)
1764
1946
  * can load data, while v3 can multiply. SSE forces them to operate
1765
1947
  * together.
1766
1948
  *
1767
- * How this hack works:
1768
- * __asm__("" // Declare an assembly block but don't declare any instructions
1769
- * : // However, as an Input/Output Operand,
1770
- * "+r" // constrain a read/write operand (+) as a general purpose register (r).
1771
- * (acc) // and set acc as the operand
1772
- * );
1773
- *
1774
- * Because of the 'r', the compiler has promised that seed will be in a
1775
- * general purpose register and the '+' says that it will be 'read/write',
1776
- * so it has to assume it has changed. It is like volatile without all the
1777
- * loads and stores.
1778
- *
1779
- * Since the argument has to be in a normal register (not an SSE register),
1780
- * each time XXH32_round is called, it is impossible to vectorize.
1949
+ * This is also enabled on AArch64, as Clang autovectorizes it incorrectly
1950
+ * and it is pointless writing a NEON implementation that is basically the
1951
+ * same speed as scalar for XXH32.
1781
1952
  */
1782
- __asm__("" : "+r" (acc));
1953
+ XXH_COMPILER_GUARD(acc);
1783
1954
  #endif
1784
1955
  return acc;
1785
1956
  }
@@ -1834,8 +2005,10 @@ XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align)
1834
2005
  h32 = XXH_rotl32(h32, 17) * XXH_PRIME32_4; \
1835
2006
  } while (0)
1836
2007
 
1837
- /* Compact rerolled version */
1838
- if (XXH_REROLL) {
2008
+ if (ptr==NULL) XXH_ASSERT(len == 0);
2009
+
2010
+ /* Compact rerolled version; generally faster */
2011
+ if (!XXH32_ENDJMP) {
1839
2012
  len &= 15;
1840
2013
  while (len >= 4) {
1841
2014
  XXH_PROCESS4;
@@ -1849,41 +2022,41 @@ XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align)
1849
2022
  } else {
1850
2023
  switch(len&15) /* or switch(bEnd - p) */ {
1851
2024
  case 12: XXH_PROCESS4;
1852
- /* fallthrough */
2025
+ XXH_FALLTHROUGH;
1853
2026
  case 8: XXH_PROCESS4;
1854
- /* fallthrough */
2027
+ XXH_FALLTHROUGH;
1855
2028
  case 4: XXH_PROCESS4;
1856
2029
  return XXH32_avalanche(h32);
1857
2030
 
1858
2031
  case 13: XXH_PROCESS4;
1859
- /* fallthrough */
2032
+ XXH_FALLTHROUGH;
1860
2033
  case 9: XXH_PROCESS4;
1861
- /* fallthrough */
2034
+ XXH_FALLTHROUGH;
1862
2035
  case 5: XXH_PROCESS4;
1863
2036
  XXH_PROCESS1;
1864
2037
  return XXH32_avalanche(h32);
1865
2038
 
1866
2039
  case 14: XXH_PROCESS4;
1867
- /* fallthrough */
2040
+ XXH_FALLTHROUGH;
1868
2041
  case 10: XXH_PROCESS4;
1869
- /* fallthrough */
2042
+ XXH_FALLTHROUGH;
1870
2043
  case 6: XXH_PROCESS4;
1871
2044
  XXH_PROCESS1;
1872
2045
  XXH_PROCESS1;
1873
2046
  return XXH32_avalanche(h32);
1874
2047
 
1875
2048
  case 15: XXH_PROCESS4;
1876
- /* fallthrough */
2049
+ XXH_FALLTHROUGH;
1877
2050
  case 11: XXH_PROCESS4;
1878
- /* fallthrough */
2051
+ XXH_FALLTHROUGH;
1879
2052
  case 7: XXH_PROCESS4;
1880
- /* fallthrough */
2053
+ XXH_FALLTHROUGH;
1881
2054
  case 3: XXH_PROCESS1;
1882
- /* fallthrough */
2055
+ XXH_FALLTHROUGH;
1883
2056
  case 2: XXH_PROCESS1;
1884
- /* fallthrough */
2057
+ XXH_FALLTHROUGH;
1885
2058
  case 1: XXH_PROCESS1;
1886
- /* fallthrough */
2059
+ XXH_FALLTHROUGH;
1887
2060
  case 0: return XXH32_avalanche(h32);
1888
2061
  }
1889
2062
  XXH_ASSERT(0);
@@ -1903,24 +2076,19 @@ XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align)
1903
2076
  * @internal
1904
2077
  * @brief The implementation for @ref XXH32().
1905
2078
  *
1906
- * @param input, len, seed Directly passed from @ref XXH32().
2079
+ * @param input , len , seed Directly passed from @ref XXH32().
1907
2080
  * @param align Whether @p input is aligned.
1908
2081
  * @return The calculated hash.
1909
2082
  */
1910
2083
  XXH_FORCE_INLINE xxh_u32
1911
2084
  XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment align)
1912
2085
  {
1913
- const xxh_u8* bEnd = input + len;
1914
2086
  xxh_u32 h32;
1915
2087
 
1916
- #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
1917
- if (input==NULL) {
1918
- len=0;
1919
- bEnd=input=(const xxh_u8*)(size_t)16;
1920
- }
1921
- #endif
2088
+ if (input==NULL) XXH_ASSERT(len == 0);
1922
2089
 
1923
2090
  if (len>=16) {
2091
+ const xxh_u8* const bEnd = input + len;
1924
2092
  const xxh_u8* const limit = bEnd - 15;
1925
2093
  xxh_u32 v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2;
1926
2094
  xxh_u32 v2 = seed + XXH_PRIME32_2;
@@ -1984,7 +2152,7 @@ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr)
1984
2152
  /*! @ingroup xxh32_family */
1985
2153
  XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState)
1986
2154
  {
1987
- memcpy(dstState, srcState, sizeof(*dstState));
2155
+ XXH_memcpy(dstState, srcState, sizeof(*dstState));
1988
2156
  }
1989
2157
 
1990
2158
  /*! @ingroup xxh32_family */
@@ -1992,12 +2160,12 @@ XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t s
1992
2160
  {
1993
2161
  XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */
1994
2162
  memset(&state, 0, sizeof(state));
1995
- state.v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2;
1996
- state.v2 = seed + XXH_PRIME32_2;
1997
- state.v3 = seed + 0;
1998
- state.v4 = seed - XXH_PRIME32_1;
2163
+ state.v[0] = seed + XXH_PRIME32_1 + XXH_PRIME32_2;
2164
+ state.v[1] = seed + XXH_PRIME32_2;
2165
+ state.v[2] = seed + 0;
2166
+ state.v[3] = seed - XXH_PRIME32_1;
1999
2167
  /* do not write into reserved, planned to be removed in a future version */
2000
- memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved));
2168
+ XXH_memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved));
2001
2169
  return XXH_OK;
2002
2170
  }
2003
2171
 
@@ -2006,12 +2174,10 @@ XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t s
2006
2174
  XXH_PUBLIC_API XXH_errorcode
2007
2175
  XXH32_update(XXH32_state_t* state, const void* input, size_t len)
2008
2176
  {
2009
- if (input==NULL)
2010
- #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
2177
+ if (input==NULL) {
2178
+ XXH_ASSERT(len == 0);
2011
2179
  return XXH_OK;
2012
- #else
2013
- return XXH_ERROR;
2014
- #endif
2180
+ }
2015
2181
 
2016
2182
  { const xxh_u8* p = (const xxh_u8*)input;
2017
2183
  const xxh_u8* const bEnd = p + len;
@@ -2028,10 +2194,10 @@ XXH32_update(XXH32_state_t* state, const void* input, size_t len)
2028
2194
  if (state->memsize) { /* some data left from previous update */
2029
2195
  XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, 16-state->memsize);
2030
2196
  { const xxh_u32* p32 = state->mem32;
2031
- state->v1 = XXH32_round(state->v1, XXH_readLE32(p32)); p32++;
2032
- state->v2 = XXH32_round(state->v2, XXH_readLE32(p32)); p32++;
2033
- state->v3 = XXH32_round(state->v3, XXH_readLE32(p32)); p32++;
2034
- state->v4 = XXH32_round(state->v4, XXH_readLE32(p32));
2197
+ state->v[0] = XXH32_round(state->v[0], XXH_readLE32(p32)); p32++;
2198
+ state->v[1] = XXH32_round(state->v[1], XXH_readLE32(p32)); p32++;
2199
+ state->v[2] = XXH32_round(state->v[2], XXH_readLE32(p32)); p32++;
2200
+ state->v[3] = XXH32_round(state->v[3], XXH_readLE32(p32));
2035
2201
  }
2036
2202
  p += 16-state->memsize;
2037
2203
  state->memsize = 0;
@@ -2039,22 +2205,14 @@ XXH32_update(XXH32_state_t* state, const void* input, size_t len)
2039
2205
 
2040
2206
  if (p <= bEnd-16) {
2041
2207
  const xxh_u8* const limit = bEnd - 16;
2042
- xxh_u32 v1 = state->v1;
2043
- xxh_u32 v2 = state->v2;
2044
- xxh_u32 v3 = state->v3;
2045
- xxh_u32 v4 = state->v4;
2046
2208
 
2047
2209
  do {
2048
- v1 = XXH32_round(v1, XXH_readLE32(p)); p+=4;
2049
- v2 = XXH32_round(v2, XXH_readLE32(p)); p+=4;
2050
- v3 = XXH32_round(v3, XXH_readLE32(p)); p+=4;
2051
- v4 = XXH32_round(v4, XXH_readLE32(p)); p+=4;
2210
+ state->v[0] = XXH32_round(state->v[0], XXH_readLE32(p)); p+=4;
2211
+ state->v[1] = XXH32_round(state->v[1], XXH_readLE32(p)); p+=4;
2212
+ state->v[2] = XXH32_round(state->v[2], XXH_readLE32(p)); p+=4;
2213
+ state->v[3] = XXH32_round(state->v[3], XXH_readLE32(p)); p+=4;
2052
2214
  } while (p<=limit);
2053
2215
 
2054
- state->v1 = v1;
2055
- state->v2 = v2;
2056
- state->v3 = v3;
2057
- state->v4 = v4;
2058
2216
  }
2059
2217
 
2060
2218
  if (p < bEnd) {
@@ -2073,12 +2231,12 @@ XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state)
2073
2231
  xxh_u32 h32;
2074
2232
 
2075
2233
  if (state->large_len) {
2076
- h32 = XXH_rotl32(state->v1, 1)
2077
- + XXH_rotl32(state->v2, 7)
2078
- + XXH_rotl32(state->v3, 12)
2079
- + XXH_rotl32(state->v4, 18);
2234
+ h32 = XXH_rotl32(state->v[0], 1)
2235
+ + XXH_rotl32(state->v[1], 7)
2236
+ + XXH_rotl32(state->v[2], 12)
2237
+ + XXH_rotl32(state->v[3], 18);
2080
2238
  } else {
2081
- h32 = state->v3 /* == seed */ + XXH_PRIME32_5;
2239
+ h32 = state->v[2] /* == seed */ + XXH_PRIME32_5;
2082
2240
  }
2083
2241
 
2084
2242
  h32 += state->total_len_32;
@@ -2107,7 +2265,7 @@ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t
2107
2265
  {
2108
2266
  XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t));
2109
2267
  if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash);
2110
- memcpy(dst, &hash, sizeof(*dst));
2268
+ XXH_memcpy(dst, &hash, sizeof(*dst));
2111
2269
  }
2112
2270
  /*! @ingroup xxh32_family */
2113
2271
  XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src)
@@ -2134,35 +2292,6 @@ typedef XXH64_hash_t xxh_u64;
2134
2292
  # define U64 xxh_u64
2135
2293
  #endif
2136
2294
 
2137
- /*!
2138
- * XXH_REROLL_XXH64:
2139
- * Whether to reroll the XXH64_finalize() loop.
2140
- *
2141
- * Just like XXH32, we can unroll the XXH64_finalize() loop. This can be a
2142
- * performance gain on 64-bit hosts, as only one jump is required.
2143
- *
2144
- * However, on 32-bit hosts, because arithmetic needs to be done with two 32-bit
2145
- * registers, and 64-bit arithmetic needs to be simulated, it isn't beneficial
2146
- * to unroll. The code becomes ridiculously large (the largest function in the
2147
- * binary on i386!), and rerolling it saves anywhere from 3kB to 20kB. It is
2148
- * also slightly faster because it fits into cache better and is more likely
2149
- * to be inlined by the compiler.
2150
- *
2151
- * If XXH_REROLL is defined, this is ignored and the loop is always rerolled.
2152
- */
2153
- #ifndef XXH_REROLL_XXH64
2154
- # if (defined(__ILP32__) || defined(_ILP32)) /* ILP32 is often defined on 32-bit GCC family */ \
2155
- || !(defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) /* x86-64 */ \
2156
- || defined(_M_ARM64) || defined(__aarch64__) || defined(__arm64__) /* aarch64 */ \
2157
- || defined(__PPC64__) || defined(__PPC64LE__) || defined(__ppc64__) || defined(__powerpc64__) /* ppc64 */ \
2158
- || defined(__mips64__) || defined(__mips64)) /* mips64 */ \
2159
- || (!defined(SIZE_MAX) || SIZE_MAX < ULLONG_MAX) /* check limits */
2160
- # define XXH_REROLL_XXH64 1
2161
- # else
2162
- # define XXH_REROLL_XXH64 0
2163
- # endif
2164
- #endif /* !defined(XXH_REROLL_XXH64) */
2165
-
2166
2295
  #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3))
2167
2296
  /*
2168
2297
  * Manual byteshift. Best for old compilers which don't inline memcpy.
@@ -2197,12 +2326,12 @@ static xxh_u64 XXH_read64(const void* ptr)
2197
2326
 
2198
2327
  /*
2199
2328
  * Portable and safe solution. Generally efficient.
2200
- * see: https://stackoverflow.com/a/32095106/646947
2329
+ * see: http://fastcompression.blogspot.com/2015/08/accessing-unaligned-memory.html
2201
2330
  */
2202
2331
  static xxh_u64 XXH_read64(const void* memPtr)
2203
2332
  {
2204
2333
  xxh_u64 val;
2205
- memcpy(&val, memPtr, sizeof(val));
2334
+ XXH_memcpy(&val, memPtr, sizeof(val));
2206
2335
  return val;
2207
2336
  }
2208
2337
 
@@ -2285,11 +2414,12 @@ XXH_readLE64_align(const void* ptr, XXH_alignment align)
2285
2414
  * @ingroup impl
2286
2415
  * @{
2287
2416
  */
2288
- static const xxh_u64 XXH_PRIME64_1 = 0x9E3779B185EBCA87ULL; /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
2289
- static const xxh_u64 XXH_PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
2290
- static const xxh_u64 XXH_PRIME64_3 = 0x165667B19E3779F9ULL; /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */
2291
- static const xxh_u64 XXH_PRIME64_4 = 0x85EBCA77C2B2AE63ULL; /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
2292
- static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */
2417
+ /* #define rather that static const, to be used as initializers */
2418
+ #define XXH_PRIME64_1 0x9E3779B185EBCA87ULL /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
2419
+ #define XXH_PRIME64_2 0xC2B2AE3D27D4EB4FULL /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
2420
+ #define XXH_PRIME64_3 0x165667B19E3779F9ULL /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */
2421
+ #define XXH_PRIME64_4 0x85EBCA77C2B2AE63ULL /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
2422
+ #define XXH_PRIME64_5 0x27D4EB2F165667C5ULL /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */
2293
2423
 
2294
2424
  #ifdef XXH_OLD_NAMES
2295
2425
  # define PRIME64_1 XXH_PRIME64_1
@@ -2331,126 +2461,27 @@ static xxh_u64 XXH64_avalanche(xxh_u64 h64)
2331
2461
  static xxh_u64
2332
2462
  XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align)
2333
2463
  {
2334
- #define XXH_PROCESS1_64 do { \
2335
- h64 ^= (*ptr++) * XXH_PRIME64_5; \
2336
- h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; \
2337
- } while (0)
2338
-
2339
- #define XXH_PROCESS4_64 do { \
2340
- h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; \
2341
- ptr += 4; \
2342
- h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; \
2343
- } while (0)
2344
-
2345
- #define XXH_PROCESS8_64 do { \
2346
- xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); \
2347
- ptr += 8; \
2348
- h64 ^= k1; \
2349
- h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; \
2350
- } while (0)
2351
-
2352
- /* Rerolled version for 32-bit targets is faster and much smaller. */
2353
- if (XXH_REROLL || XXH_REROLL_XXH64) {
2354
- len &= 31;
2355
- while (len >= 8) {
2356
- XXH_PROCESS8_64;
2357
- len -= 8;
2358
- }
2359
- if (len >= 4) {
2360
- XXH_PROCESS4_64;
2361
- len -= 4;
2362
- }
2363
- while (len > 0) {
2364
- XXH_PROCESS1_64;
2365
- --len;
2366
- }
2367
- return XXH64_avalanche(h64);
2368
- } else {
2369
- switch(len & 31) {
2370
- case 24: XXH_PROCESS8_64;
2371
- /* fallthrough */
2372
- case 16: XXH_PROCESS8_64;
2373
- /* fallthrough */
2374
- case 8: XXH_PROCESS8_64;
2375
- return XXH64_avalanche(h64);
2376
-
2377
- case 28: XXH_PROCESS8_64;
2378
- /* fallthrough */
2379
- case 20: XXH_PROCESS8_64;
2380
- /* fallthrough */
2381
- case 12: XXH_PROCESS8_64;
2382
- /* fallthrough */
2383
- case 4: XXH_PROCESS4_64;
2384
- return XXH64_avalanche(h64);
2385
-
2386
- case 25: XXH_PROCESS8_64;
2387
- /* fallthrough */
2388
- case 17: XXH_PROCESS8_64;
2389
- /* fallthrough */
2390
- case 9: XXH_PROCESS8_64;
2391
- XXH_PROCESS1_64;
2392
- return XXH64_avalanche(h64);
2393
-
2394
- case 29: XXH_PROCESS8_64;
2395
- /* fallthrough */
2396
- case 21: XXH_PROCESS8_64;
2397
- /* fallthrough */
2398
- case 13: XXH_PROCESS8_64;
2399
- /* fallthrough */
2400
- case 5: XXH_PROCESS4_64;
2401
- XXH_PROCESS1_64;
2402
- return XXH64_avalanche(h64);
2403
-
2404
- case 26: XXH_PROCESS8_64;
2405
- /* fallthrough */
2406
- case 18: XXH_PROCESS8_64;
2407
- /* fallthrough */
2408
- case 10: XXH_PROCESS8_64;
2409
- XXH_PROCESS1_64;
2410
- XXH_PROCESS1_64;
2411
- return XXH64_avalanche(h64);
2412
-
2413
- case 30: XXH_PROCESS8_64;
2414
- /* fallthrough */
2415
- case 22: XXH_PROCESS8_64;
2416
- /* fallthrough */
2417
- case 14: XXH_PROCESS8_64;
2418
- /* fallthrough */
2419
- case 6: XXH_PROCESS4_64;
2420
- XXH_PROCESS1_64;
2421
- XXH_PROCESS1_64;
2422
- return XXH64_avalanche(h64);
2423
-
2424
- case 27: XXH_PROCESS8_64;
2425
- /* fallthrough */
2426
- case 19: XXH_PROCESS8_64;
2427
- /* fallthrough */
2428
- case 11: XXH_PROCESS8_64;
2429
- XXH_PROCESS1_64;
2430
- XXH_PROCESS1_64;
2431
- XXH_PROCESS1_64;
2432
- return XXH64_avalanche(h64);
2433
-
2434
- case 31: XXH_PROCESS8_64;
2435
- /* fallthrough */
2436
- case 23: XXH_PROCESS8_64;
2437
- /* fallthrough */
2438
- case 15: XXH_PROCESS8_64;
2439
- /* fallthrough */
2440
- case 7: XXH_PROCESS4_64;
2441
- /* fallthrough */
2442
- case 3: XXH_PROCESS1_64;
2443
- /* fallthrough */
2444
- case 2: XXH_PROCESS1_64;
2445
- /* fallthrough */
2446
- case 1: XXH_PROCESS1_64;
2447
- /* fallthrough */
2448
- case 0: return XXH64_avalanche(h64);
2449
- }
2464
+ if (ptr==NULL) XXH_ASSERT(len == 0);
2465
+ len &= 31;
2466
+ while (len >= 8) {
2467
+ xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr));
2468
+ ptr += 8;
2469
+ h64 ^= k1;
2470
+ h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
2471
+ len -= 8;
2472
+ }
2473
+ if (len >= 4) {
2474
+ h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1;
2475
+ ptr += 4;
2476
+ h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3;
2477
+ len -= 4;
2450
2478
  }
2451
- /* impossible to reach */
2452
- XXH_ASSERT(0);
2453
- return 0; /* unreachable, but some compilers complain without it */
2479
+ while (len > 0) {
2480
+ h64 ^= (*ptr++) * XXH_PRIME64_5;
2481
+ h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1;
2482
+ --len;
2483
+ }
2484
+ return XXH64_avalanche(h64);
2454
2485
  }
2455
2486
 
2456
2487
  #ifdef XXH_OLD_NAMES
@@ -2466,18 +2497,12 @@ XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align)
2466
2497
  XXH_FORCE_INLINE xxh_u64
2467
2498
  XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment align)
2468
2499
  {
2469
- const xxh_u8* bEnd = input + len;
2470
2500
  xxh_u64 h64;
2471
-
2472
- #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
2473
- if (input==NULL) {
2474
- len=0;
2475
- bEnd=input=(const xxh_u8*)(size_t)32;
2476
- }
2477
- #endif
2501
+ if (input==NULL) XXH_ASSERT(len == 0);
2478
2502
 
2479
2503
  if (len>=32) {
2480
- const xxh_u8* const limit = bEnd - 32;
2504
+ const xxh_u8* const bEnd = input + len;
2505
+ const xxh_u8* const limit = bEnd - 31;
2481
2506
  xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
2482
2507
  xxh_u64 v2 = seed + XXH_PRIME64_2;
2483
2508
  xxh_u64 v3 = seed + 0;
@@ -2488,7 +2513,7 @@ XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment
2488
2513
  v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8;
2489
2514
  v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8;
2490
2515
  v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8;
2491
- } while (input<=limit);
2516
+ } while (input<limit);
2492
2517
 
2493
2518
  h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
2494
2519
  h64 = XXH64_mergeRound(h64, v1);
@@ -2543,7 +2568,7 @@ XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
2543
2568
  /*! @ingroup xxh64_family */
2544
2569
  XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState)
2545
2570
  {
2546
- memcpy(dstState, srcState, sizeof(*dstState));
2571
+ XXH_memcpy(dstState, srcState, sizeof(*dstState));
2547
2572
  }
2548
2573
 
2549
2574
  /*! @ingroup xxh64_family */
@@ -2551,12 +2576,12 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t s
2551
2576
  {
2552
2577
  XXH64_state_t state; /* use a local state to memcpy() in order to avoid strict-aliasing warnings */
2553
2578
  memset(&state, 0, sizeof(state));
2554
- state.v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
2555
- state.v2 = seed + XXH_PRIME64_2;
2556
- state.v3 = seed + 0;
2557
- state.v4 = seed - XXH_PRIME64_1;
2579
+ state.v[0] = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
2580
+ state.v[1] = seed + XXH_PRIME64_2;
2581
+ state.v[2] = seed + 0;
2582
+ state.v[3] = seed - XXH_PRIME64_1;
2558
2583
  /* do not write into reserved64, might be removed in a future version */
2559
- memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64));
2584
+ XXH_memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64));
2560
2585
  return XXH_OK;
2561
2586
  }
2562
2587
 
@@ -2564,12 +2589,10 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t s
2564
2589
  XXH_PUBLIC_API XXH_errorcode
2565
2590
  XXH64_update (XXH64_state_t* state, const void* input, size_t len)
2566
2591
  {
2567
- if (input==NULL)
2568
- #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
2592
+ if (input==NULL) {
2593
+ XXH_ASSERT(len == 0);
2569
2594
  return XXH_OK;
2570
- #else
2571
- return XXH_ERROR;
2572
- #endif
2595
+ }
2573
2596
 
2574
2597
  { const xxh_u8* p = (const xxh_u8*)input;
2575
2598
  const xxh_u8* const bEnd = p + len;
@@ -2584,32 +2607,24 @@ XXH64_update (XXH64_state_t* state, const void* input, size_t len)
2584
2607
 
2585
2608
  if (state->memsize) { /* tmp buffer is full */
2586
2609
  XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, 32-state->memsize);
2587
- state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0));
2588
- state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1));
2589
- state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2));
2590
- state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3));
2610
+ state->v[0] = XXH64_round(state->v[0], XXH_readLE64(state->mem64+0));
2611
+ state->v[1] = XXH64_round(state->v[1], XXH_readLE64(state->mem64+1));
2612
+ state->v[2] = XXH64_round(state->v[2], XXH_readLE64(state->mem64+2));
2613
+ state->v[3] = XXH64_round(state->v[3], XXH_readLE64(state->mem64+3));
2591
2614
  p += 32 - state->memsize;
2592
2615
  state->memsize = 0;
2593
2616
  }
2594
2617
 
2595
2618
  if (p+32 <= bEnd) {
2596
2619
  const xxh_u8* const limit = bEnd - 32;
2597
- xxh_u64 v1 = state->v1;
2598
- xxh_u64 v2 = state->v2;
2599
- xxh_u64 v3 = state->v3;
2600
- xxh_u64 v4 = state->v4;
2601
2620
 
2602
2621
  do {
2603
- v1 = XXH64_round(v1, XXH_readLE64(p)); p+=8;
2604
- v2 = XXH64_round(v2, XXH_readLE64(p)); p+=8;
2605
- v3 = XXH64_round(v3, XXH_readLE64(p)); p+=8;
2606
- v4 = XXH64_round(v4, XXH_readLE64(p)); p+=8;
2622
+ state->v[0] = XXH64_round(state->v[0], XXH_readLE64(p)); p+=8;
2623
+ state->v[1] = XXH64_round(state->v[1], XXH_readLE64(p)); p+=8;
2624
+ state->v[2] = XXH64_round(state->v[2], XXH_readLE64(p)); p+=8;
2625
+ state->v[3] = XXH64_round(state->v[3], XXH_readLE64(p)); p+=8;
2607
2626
  } while (p<=limit);
2608
2627
 
2609
- state->v1 = v1;
2610
- state->v2 = v2;
2611
- state->v3 = v3;
2612
- state->v4 = v4;
2613
2628
  }
2614
2629
 
2615
2630
  if (p < bEnd) {
@@ -2628,18 +2643,13 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_digest(const XXH64_state_t* state)
2628
2643
  xxh_u64 h64;
2629
2644
 
2630
2645
  if (state->total_len >= 32) {
2631
- xxh_u64 const v1 = state->v1;
2632
- xxh_u64 const v2 = state->v2;
2633
- xxh_u64 const v3 = state->v3;
2634
- xxh_u64 const v4 = state->v4;
2635
-
2636
- h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
2637
- h64 = XXH64_mergeRound(h64, v1);
2638
- h64 = XXH64_mergeRound(h64, v2);
2639
- h64 = XXH64_mergeRound(h64, v3);
2640
- h64 = XXH64_mergeRound(h64, v4);
2646
+ h64 = XXH_rotl64(state->v[0], 1) + XXH_rotl64(state->v[1], 7) + XXH_rotl64(state->v[2], 12) + XXH_rotl64(state->v[3], 18);
2647
+ h64 = XXH64_mergeRound(h64, state->v[0]);
2648
+ h64 = XXH64_mergeRound(h64, state->v[1]);
2649
+ h64 = XXH64_mergeRound(h64, state->v[2]);
2650
+ h64 = XXH64_mergeRound(h64, state->v[3]);
2641
2651
  } else {
2642
- h64 = state->v3 /*seed*/ + XXH_PRIME64_5;
2652
+ h64 = state->v[2] /*seed*/ + XXH_PRIME64_5;
2643
2653
  }
2644
2654
 
2645
2655
  h64 += (xxh_u64) state->total_len;
@@ -2655,7 +2665,7 @@ XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t
2655
2665
  {
2656
2666
  XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t));
2657
2667
  if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash);
2658
- memcpy(dst, &hash, sizeof(*dst));
2668
+ XXH_memcpy(dst, &hash, sizeof(*dst));
2659
2669
  }
2660
2670
 
2661
2671
  /*! @ingroup xxh64_family */
@@ -2664,7 +2674,7 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src
2664
2674
  return XXH_readBE64(src);
2665
2675
  }
2666
2676
 
2667
-
2677
+ #ifndef XXH_NO_XXH3
2668
2678
 
2669
2679
  /* *********************************************************************
2670
2680
  * XXH3
@@ -2679,7 +2689,9 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src
2679
2689
 
2680
2690
  /* === Compiler specifics === */
2681
2691
 
2682
- #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */
2692
+ #if ((defined(sun) || defined(__sun)) && __cplusplus) /* Solaris includes __STDC_VERSION__ with C++. Tested with GCC 5.5 */
2693
+ # define XXH_RESTRICT /* disable */
2694
+ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */
2683
2695
  # define XXH_RESTRICT restrict
2684
2696
  #else
2685
2697
  /* Note: it might be useful to define __restrict or __restrict__ for some C++ compilers */
@@ -2850,10 +2862,13 @@ enum XXH_VECTOR_TYPE /* fake enum */ {
2850
2862
  # define XXH_VECTOR XXH_AVX2
2851
2863
  # elif defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2))
2852
2864
  # define XXH_VECTOR XXH_SSE2
2853
- # elif defined(__GNUC__) /* msvc support maybe later */ \
2854
- && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \
2855
- && (defined(__LITTLE_ENDIAN__) /* We only support little endian NEON */ \
2856
- || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
2865
+ # elif ( \
2866
+ defined(__ARM_NEON__) || defined(__ARM_NEON) /* gcc */ \
2867
+ || defined(_M_ARM64) || defined(_M_ARM_ARMV7VE) /* msvc */ \
2868
+ ) && ( \
2869
+ defined(_WIN32) || defined(__LITTLE_ENDIAN__) /* little endian only */ \
2870
+ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) \
2871
+ )
2857
2872
  # define XXH_VECTOR XXH_NEON
2858
2873
  # elif (defined(__PPC64__) && defined(__POWER8_VECTOR__)) \
2859
2874
  || (defined(__s390x__) && defined(__VEC__)) \
@@ -3005,7 +3020,7 @@ enum XXH_VECTOR_TYPE /* fake enum */ {
3005
3020
  */
3006
3021
  # if !defined(XXH_NO_VZIP_HACK) /* define to disable */ \
3007
3022
  && defined(__GNUC__) \
3008
- && !defined(__aarch64__) && !defined(__arm64__)
3023
+ && !defined(__aarch64__) && !defined(__arm64__) && !defined(_M_ARM64)
3009
3024
  # define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \
3010
3025
  do { \
3011
3026
  /* Undocumented GCC/Clang operand modifier: %e0 = lower D half, %f0 = upper D half */ \
@@ -3088,7 +3103,7 @@ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val)
3088
3103
  XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr)
3089
3104
  {
3090
3105
  xxh_u64x2 ret;
3091
- memcpy(&ret, ptr, sizeof(xxh_u64x2));
3106
+ XXH_memcpy(&ret, ptr, sizeof(xxh_u64x2));
3092
3107
  # if XXH_VSX_BE
3093
3108
  ret = XXH_vec_revb(ret);
3094
3109
  # endif
@@ -3217,7 +3232,7 @@ XXH_mult32to64(xxh_u64 x, xxh_u64 y)
3217
3232
  * Uses `__uint128_t` and `_umul128` if available, otherwise uses a scalar
3218
3233
  * version.
3219
3234
  *
3220
- * @param lhs, rhs The 64-bit integers to be multiplied
3235
+ * @param lhs , rhs The 64-bit integers to be multiplied
3221
3236
  * @return The 128-bit result represented in an @ref XXH128_hash_t.
3222
3237
  */
3223
3238
  static XXH128_hash_t
@@ -3267,6 +3282,21 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs)
3267
3282
  r128.high64 = product_high;
3268
3283
  return r128;
3269
3284
 
3285
+ /*
3286
+ * MSVC for ARM64's __umulh method.
3287
+ *
3288
+ * This compiles to the same MUL + UMULH as GCC/Clang's __uint128_t method.
3289
+ */
3290
+ #elif defined(_M_ARM64)
3291
+
3292
+ #ifndef _MSC_VER
3293
+ # pragma intrinsic(__umulh)
3294
+ #endif
3295
+ XXH128_hash_t r128;
3296
+ r128.low64 = lhs * rhs;
3297
+ r128.high64 = __umulh(lhs, rhs);
3298
+ return r128;
3299
+
3270
3300
  #else
3271
3301
  /*
3272
3302
  * Portable scalar method. Optimized for 32-bit and 64-bit ALUs.
@@ -3335,7 +3365,7 @@ XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs)
3335
3365
  * The reason for the separate function is to prevent passing too many structs
3336
3366
  * around by value. This will hopefully inline the multiply, but we don't force it.
3337
3367
  *
3338
- * @param lhs, rhs The 64-bit integers to multiply
3368
+ * @param lhs , rhs The 64-bit integers to multiply
3339
3369
  * @return The low 64 bits of the product XOR'd by the high 64 bits.
3340
3370
  * @see XXH_mult64to128()
3341
3371
  */
@@ -3441,7 +3471,7 @@ XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_h
3441
3471
  {
3442
3472
  XXH_ASSERT(input != NULL);
3443
3473
  XXH_ASSERT(secret != NULL);
3444
- XXH_ASSERT(4 <= len && len < 8);
3474
+ XXH_ASSERT(4 <= len && len <= 8);
3445
3475
  seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32;
3446
3476
  { xxh_u32 const input1 = XXH_readLE32(input);
3447
3477
  xxh_u32 const input2 = XXH_readLE32(input + len - 4);
@@ -3457,7 +3487,7 @@ XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_
3457
3487
  {
3458
3488
  XXH_ASSERT(input != NULL);
3459
3489
  XXH_ASSERT(secret != NULL);
3460
- XXH_ASSERT(8 <= len && len <= 16);
3490
+ XXH_ASSERT(9 <= len && len <= 16);
3461
3491
  { xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed;
3462
3492
  xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed;
3463
3493
  xxh_u64 const input_lo = XXH_readLE64(input) ^ bitflip1;
@@ -3527,7 +3557,7 @@ XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input,
3527
3557
  * GCC generates much better scalar code than Clang for the rest of XXH3,
3528
3558
  * which is why finding a more optimal codepath is an interest.
3529
3559
  */
3530
- __asm__ ("" : "+r" (seed64));
3560
+ XXH_COMPILER_GUARD(seed64);
3531
3561
  #endif
3532
3562
  { xxh_u64 const input_lo = XXH_readLE64(input);
3533
3563
  xxh_u64 const input_hi = XXH_readLE64(input+8);
@@ -3637,7 +3667,7 @@ XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len,
3637
3667
  XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64)
3638
3668
  {
3639
3669
  if (!XXH_CPU_LITTLE_ENDIAN) v64 = XXH_swap64(v64);
3640
- memcpy(dst, &v64, sizeof(v64));
3670
+ XXH_memcpy(dst, &v64, sizeof(v64));
3641
3671
  }
3642
3672
 
3643
3673
  /* Several intrinsic functions below are supposed to accept __int64 as argument,
@@ -3689,7 +3719,7 @@ XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc,
3689
3719
  const void* XXH_RESTRICT input,
3690
3720
  const void* XXH_RESTRICT secret)
3691
3721
  {
3692
- XXH_ALIGN(64) __m512i* const xacc = (__m512i *) acc;
3722
+ __m512i* const xacc = (__m512i *) acc;
3693
3723
  XXH_ASSERT((((size_t)acc) & 63) == 0);
3694
3724
  XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i));
3695
3725
 
@@ -3738,7 +3768,7 @@ XXH3_scrambleAcc_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret)
3738
3768
  {
3739
3769
  XXH_ASSERT((((size_t)acc) & 63) == 0);
3740
3770
  XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i));
3741
- { XXH_ALIGN(64) __m512i* const xacc = (__m512i*) acc;
3771
+ { __m512i* const xacc = (__m512i*) acc;
3742
3772
  const __m512i prime32 = _mm512_set1_epi32((int)XXH_PRIME32_1);
3743
3773
 
3744
3774
  /* xacc[0] ^= (xacc[0] >> 47) */
@@ -3765,17 +3795,19 @@ XXH3_initCustomSecret_avx512(void* XXH_RESTRICT customSecret, xxh_u64 seed64)
3765
3795
  XXH_ASSERT(((size_t)customSecret & 63) == 0);
3766
3796
  (void)(&XXH_writeLE64);
3767
3797
  { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m512i);
3768
- __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, -(xxh_i64)seed64);
3798
+ __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, (xxh_i64)(0U - seed64));
3769
3799
 
3770
- XXH_ALIGN(64) const __m512i* const src = (const __m512i*) XXH3_kSecret;
3771
- XXH_ALIGN(64) __m512i* const dest = ( __m512i*) customSecret;
3800
+ const __m512i* const src = (const __m512i*) ((const void*) XXH3_kSecret);
3801
+ __m512i* const dest = ( __m512i*) customSecret;
3772
3802
  int i;
3803
+ XXH_ASSERT(((size_t)src & 63) == 0); /* control alignment */
3804
+ XXH_ASSERT(((size_t)dest & 63) == 0);
3773
3805
  for (i=0; i < nbRounds; ++i) {
3774
3806
  /* GCC has a bug, _mm512_stream_load_si512 accepts 'void*', not 'void const*',
3775
- * this will warn "discards const qualifier". */
3807
+ * this will warn "discards 'const' qualifier". */
3776
3808
  union {
3777
- XXH_ALIGN(64) const __m512i* cp;
3778
- XXH_ALIGN(64) void* p;
3809
+ const __m512i* cp;
3810
+ void* p;
3779
3811
  } remote_const_void;
3780
3812
  remote_const_void.cp = src + i;
3781
3813
  dest[i] = _mm512_add_epi64(_mm512_stream_load_si512(remote_const_void.p), seed);
@@ -3797,7 +3829,7 @@ XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc,
3797
3829
  const void* XXH_RESTRICT secret)
3798
3830
  {
3799
3831
  XXH_ASSERT((((size_t)acc) & 31) == 0);
3800
- { XXH_ALIGN(32) __m256i* const xacc = (__m256i *) acc;
3832
+ { __m256i* const xacc = (__m256i *) acc;
3801
3833
  /* Unaligned. This is mainly for pointer arithmetic, and because
3802
3834
  * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */
3803
3835
  const __m256i* const xinput = (const __m256i *) input;
@@ -3829,7 +3861,7 @@ XXH_FORCE_INLINE XXH_TARGET_AVX2 void
3829
3861
  XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret)
3830
3862
  {
3831
3863
  XXH_ASSERT((((size_t)acc) & 31) == 0);
3832
- { XXH_ALIGN(32) __m256i* const xacc = (__m256i*) acc;
3864
+ { __m256i* const xacc = (__m256i*) acc;
3833
3865
  /* Unaligned. This is mainly for pointer arithmetic, and because
3834
3866
  * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */
3835
3867
  const __m256i* const xsecret = (const __m256i *) secret;
@@ -3861,23 +3893,21 @@ XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_initCustomSecret_avx2(void* XXH_RESTR
3861
3893
  XXH_STATIC_ASSERT(XXH_SEC_ALIGN <= 64);
3862
3894
  (void)(&XXH_writeLE64);
3863
3895
  XXH_PREFETCH(customSecret);
3864
- { __m256i const seed = _mm256_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64, -(xxh_i64)seed64, (xxh_i64)seed64);
3896
+ { __m256i const seed = _mm256_set_epi64x((xxh_i64)(0U - seed64), (xxh_i64)seed64, (xxh_i64)(0U - seed64), (xxh_i64)seed64);
3865
3897
 
3866
- XXH_ALIGN(64) const __m256i* const src = (const __m256i*) XXH3_kSecret;
3867
- XXH_ALIGN(64) __m256i* dest = ( __m256i*) customSecret;
3898
+ const __m256i* const src = (const __m256i*) ((const void*) XXH3_kSecret);
3899
+ __m256i* dest = ( __m256i*) customSecret;
3868
3900
 
3869
3901
  # if defined(__GNUC__) || defined(__clang__)
3870
3902
  /*
3871
3903
  * On GCC & Clang, marking 'dest' as modified will cause the compiler:
3872
3904
  * - do not extract the secret from sse registers in the internal loop
3873
3905
  * - use less common registers, and avoid pushing these reg into stack
3874
- * The asm hack causes Clang to assume that XXH3_kSecretPtr aliases with
3875
- * customSecret, and on aarch64, this prevented LDP from merging two
3876
- * loads together for free. Putting the loads together before the stores
3877
- * properly generates LDP.
3878
3906
  */
3879
- __asm__("" : "+r" (dest));
3907
+ XXH_COMPILER_GUARD(dest);
3880
3908
  # endif
3909
+ XXH_ASSERT(((size_t)src & 31) == 0); /* control alignment */
3910
+ XXH_ASSERT(((size_t)dest & 31) == 0);
3881
3911
 
3882
3912
  /* GCC -O2 need unroll loop manually */
3883
3913
  dest[0] = _mm256_add_epi64(_mm256_stream_load_si256(src+0), seed);
@@ -3905,7 +3935,7 @@ XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc,
3905
3935
  {
3906
3936
  /* SSE2 is just a half-scale version of the AVX2 version. */
3907
3937
  XXH_ASSERT((((size_t)acc) & 15) == 0);
3908
- { XXH_ALIGN(16) __m128i* const xacc = (__m128i *) acc;
3938
+ { __m128i* const xacc = (__m128i *) acc;
3909
3939
  /* Unaligned. This is mainly for pointer arithmetic, and because
3910
3940
  * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */
3911
3941
  const __m128i* const xinput = (const __m128i *) input;
@@ -3937,7 +3967,7 @@ XXH_FORCE_INLINE XXH_TARGET_SSE2 void
3937
3967
  XXH3_scrambleAcc_sse2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret)
3938
3968
  {
3939
3969
  XXH_ASSERT((((size_t)acc) & 15) == 0);
3940
- { XXH_ALIGN(16) __m128i* const xacc = (__m128i*) acc;
3970
+ { __m128i* const xacc = (__m128i*) acc;
3941
3971
  /* Unaligned. This is mainly for pointer arithmetic, and because
3942
3972
  * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */
3943
3973
  const __m128i* const xsecret = (const __m128i *) secret;
@@ -3969,27 +3999,29 @@ XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTR
3969
3999
  { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m128i);
3970
4000
 
3971
4001
  # if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900
3972
- // MSVC 32bit mode does not support _mm_set_epi64x before 2015
3973
- XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, -(xxh_i64)seed64 };
4002
+ /* MSVC 32bit mode does not support _mm_set_epi64x before 2015 */
4003
+ XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, (xxh_i64)(0U - seed64) };
3974
4004
  __m128i const seed = _mm_load_si128((__m128i const*)seed64x2);
3975
4005
  # else
3976
- __m128i const seed = _mm_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64);
4006
+ __m128i const seed = _mm_set_epi64x((xxh_i64)(0U - seed64), (xxh_i64)seed64);
3977
4007
  # endif
3978
4008
  int i;
3979
4009
 
3980
- XXH_ALIGN(64) const float* const src = (float const*) XXH3_kSecret;
3981
- XXH_ALIGN(XXH_SEC_ALIGN) __m128i* dest = (__m128i*) customSecret;
4010
+ const void* const src16 = XXH3_kSecret;
4011
+ __m128i* dst16 = (__m128i*) customSecret;
3982
4012
  # if defined(__GNUC__) || defined(__clang__)
3983
4013
  /*
3984
4014
  * On GCC & Clang, marking 'dest' as modified will cause the compiler:
3985
4015
  * - do not extract the secret from sse registers in the internal loop
3986
4016
  * - use less common registers, and avoid pushing these reg into stack
3987
4017
  */
3988
- __asm__("" : "+r" (dest));
4018
+ XXH_COMPILER_GUARD(dst16);
3989
4019
  # endif
4020
+ XXH_ASSERT(((size_t)src16 & 15) == 0); /* control alignment */
4021
+ XXH_ASSERT(((size_t)dst16 & 15) == 0);
3990
4022
 
3991
4023
  for (i=0; i < nbRounds; ++i) {
3992
- dest[i] = _mm_add_epi64(_mm_castps_si128(_mm_load_ps(src+i*4)), seed);
4024
+ dst16[i] = _mm_add_epi64(_mm_load_si128((const __m128i *)src16+i), seed);
3993
4025
  } }
3994
4026
  }
3995
4027
 
@@ -4004,7 +4036,7 @@ XXH3_accumulate_512_neon( void* XXH_RESTRICT acc,
4004
4036
  {
4005
4037
  XXH_ASSERT((((size_t)acc) & 15) == 0);
4006
4038
  {
4007
- XXH_ALIGN(16) uint64x2_t* const xacc = (uint64x2_t *) acc;
4039
+ uint64x2_t* const xacc = (uint64x2_t *) acc;
4008
4040
  /* We don't use a uint32x4_t pointer because it causes bus errors on ARMv7. */
4009
4041
  uint8_t const* const xinput = (const uint8_t *) input;
4010
4042
  uint8_t const* const xsecret = (const uint8_t *) secret;
@@ -4051,8 +4083,8 @@ XXH3_scrambleAcc_neon(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret)
4051
4083
  uint64x2_t data_vec = veorq_u64 (acc_vec, shifted);
4052
4084
 
4053
4085
  /* xacc[i] ^= xsecret[i]; */
4054
- uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16));
4055
- uint64x2_t data_key = veorq_u64(data_vec, vreinterpretq_u64_u8(key_vec));
4086
+ uint8x16_t key_vec = vld1q_u8 (xsecret + (i * 16));
4087
+ uint64x2_t data_key = veorq_u64 (data_vec, vreinterpretq_u64_u8(key_vec));
4056
4088
 
4057
4089
  /* xacc[i] *= XXH_PRIME32_1 */
4058
4090
  uint32x2_t data_key_lo, data_key_hi;
@@ -4096,7 +4128,8 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc,
4096
4128
  const void* XXH_RESTRICT input,
4097
4129
  const void* XXH_RESTRICT secret)
4098
4130
  {
4099
- xxh_u64x2* const xacc = (xxh_u64x2*) acc; /* presumed aligned */
4131
+ /* presumed aligned */
4132
+ unsigned long long* const xacc = (unsigned long long*) acc;
4100
4133
  xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */
4101
4134
  xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */
4102
4135
  xxh_u64x2 const v32 = { 32, 32 };
@@ -4111,14 +4144,18 @@ XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc,
4111
4144
  xxh_u32x4 const shuffled = (xxh_u32x4)vec_rl(data_key, v32);
4112
4145
  /* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */
4113
4146
  xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled);
4114
- xacc[i] += product;
4147
+ /* acc_vec = xacc[i]; */
4148
+ xxh_u64x2 acc_vec = vec_xl(0, xacc + 2 * i);
4149
+ acc_vec += product;
4115
4150
 
4116
4151
  /* swap high and low halves */
4117
4152
  #ifdef __s390x__
4118
- xacc[i] += vec_permi(data_vec, data_vec, 2);
4153
+ acc_vec += vec_permi(data_vec, data_vec, 2);
4119
4154
  #else
4120
- xacc[i] += vec_xxpermdi(data_vec, data_vec, 2);
4155
+ acc_vec += vec_xxpermdi(data_vec, data_vec, 2);
4121
4156
  #endif
4157
+ /* xacc[i] = acc_vec; */
4158
+ vec_xst(acc_vec, 0, xacc + 2 * i);
4122
4159
  }
4123
4160
  }
4124
4161
 
@@ -4161,7 +4198,7 @@ XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc,
4161
4198
  const void* XXH_RESTRICT input,
4162
4199
  const void* XXH_RESTRICT secret)
4163
4200
  {
4164
- XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */
4201
+ xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */
4165
4202
  const xxh_u8* const xinput = (const xxh_u8*) input; /* no alignment restriction */
4166
4203
  const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */
4167
4204
  size_t i;
@@ -4177,7 +4214,7 @@ XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc,
4177
4214
  XXH_FORCE_INLINE void
4178
4215
  XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret)
4179
4216
  {
4180
- XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */
4217
+ xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */
4181
4218
  const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */
4182
4219
  size_t i;
4183
4220
  XXH_ASSERT((((size_t)acc) & (XXH_ACC_ALIGN-1)) == 0);
@@ -4231,7 +4268,7 @@ XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64)
4231
4268
  * without hack: 2654.4 MB/s
4232
4269
  * with hack: 3202.9 MB/s
4233
4270
  */
4234
- __asm__("" : "+r" (kSecretPtr));
4271
+ XXH_COMPILER_GUARD(kSecretPtr);
4235
4272
  #endif
4236
4273
  /*
4237
4274
  * Note: in debug mode, this overrides the asm optimization
@@ -4396,7 +4433,7 @@ XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secre
4396
4433
  * without hack: 2063.7 MB/s
4397
4434
  * with hack: 2560.7 MB/s
4398
4435
  */
4399
- __asm__("" : "+r" (result64));
4436
+ XXH_COMPILER_GUARD(result64);
4400
4437
  #endif
4401
4438
  }
4402
4439
 
@@ -4425,9 +4462,11 @@ XXH3_hashLong_64b_internal(const void* XXH_RESTRICT input, size_t len,
4425
4462
  }
4426
4463
 
4427
4464
  /*
4428
- * It's important for performance that XXH3_hashLong is not inlined.
4465
+ * It's important for performance to transmit secret's size (when it's static)
4466
+ * so that the compiler can properly optimize the vectorized loop.
4467
+ * This makes a big performance difference for "medium" keys (<1 KB) when using AVX instruction set.
4429
4468
  */
4430
- XXH_NO_INLINE XXH64_hash_t
4469
+ XXH_FORCE_INLINE XXH64_hash_t
4431
4470
  XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len,
4432
4471
  XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen)
4433
4472
  {
@@ -4436,11 +4475,10 @@ XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len,
4436
4475
  }
4437
4476
 
4438
4477
  /*
4439
- * It's important for performance that XXH3_hashLong is not inlined.
4440
- * Since the function is not inlined, the compiler may not be able to understand that,
4441
- * in some scenarios, its `secret` argument is actually a compile time constant.
4442
- * This variant enforces that the compiler can detect that,
4443
- * and uses this opportunity to streamline the generated code for better performance.
4478
+ * It's preferable for performance that XXH3_hashLong is not inlined,
4479
+ * as it results in a smaller function for small data, easier to the instruction cache.
4480
+ * Note that inside this no_inline function, we do inline the internal loop,
4481
+ * and provide a statically defined secret size to allow optimization of vector loop.
4444
4482
  */
4445
4483
  XXH_NO_INLINE XXH64_hash_t
4446
4484
  XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len,
@@ -4540,6 +4578,14 @@ XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed)
4540
4578
  return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed);
4541
4579
  }
4542
4580
 
4581
+ XXH_PUBLIC_API XXH64_hash_t
4582
+ XXH3_64bits_withSecretandSeed(const void* input, size_t len, const void* secret, size_t secretSize, XXH64_hash_t seed)
4583
+ {
4584
+ if (len <= XXH3_MIDSIZE_MAX)
4585
+ return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), NULL);
4586
+ return XXH3_hashLong_64b_withSecret(input, len, seed, (const xxh_u8*)secret, secretSize);
4587
+ }
4588
+
4543
4589
 
4544
4590
  /* === XXH3 streaming === */
4545
4591
 
@@ -4628,13 +4674,13 @@ XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr)
4628
4674
  XXH_PUBLIC_API void
4629
4675
  XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state)
4630
4676
  {
4631
- memcpy(dst_state, src_state, sizeof(*dst_state));
4677
+ XXH_memcpy(dst_state, src_state, sizeof(*dst_state));
4632
4678
  }
4633
4679
 
4634
4680
  static void
4635
4681
  XXH3_reset_internal(XXH3_state_t* statePtr,
4636
- XXH64_hash_t seed,
4637
- const void* secret, size_t secretSize)
4682
+ XXH64_hash_t seed,
4683
+ const void* secret, size_t secretSize)
4638
4684
  {
4639
4685
  size_t const initStart = offsetof(XXH3_state_t, bufferedSize);
4640
4686
  size_t const initLength = offsetof(XXH3_state_t, nbStripesPerBlock) - initStart;
@@ -4651,6 +4697,7 @@ XXH3_reset_internal(XXH3_state_t* statePtr,
4651
4697
  statePtr->acc[6] = XXH_PRIME64_5;
4652
4698
  statePtr->acc[7] = XXH_PRIME32_1;
4653
4699
  statePtr->seed = seed;
4700
+ statePtr->useSeed = (seed != 0);
4654
4701
  statePtr->extSecret = (const unsigned char*)secret;
4655
4702
  XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN);
4656
4703
  statePtr->secretLimit = secretSize - XXH_STRIPE_LEN;
@@ -4683,11 +4730,24 @@ XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed)
4683
4730
  {
4684
4731
  if (statePtr == NULL) return XXH_ERROR;
4685
4732
  if (seed==0) return XXH3_64bits_reset(statePtr);
4686
- if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed);
4733
+ if ((seed != statePtr->seed) || (statePtr->extSecret != NULL))
4734
+ XXH3_initCustomSecret(statePtr->customSecret, seed);
4687
4735
  XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE);
4688
4736
  return XXH_OK;
4689
4737
  }
4690
4738
 
4739
+ /*! @ingroup xxh3_family */
4740
+ XXH_PUBLIC_API XXH_errorcode
4741
+ XXH3_64bits_reset_withSecretandSeed(XXH3_state_t* statePtr, const void* secret, size_t secretSize, XXH64_hash_t seed64)
4742
+ {
4743
+ if (statePtr == NULL) return XXH_ERROR;
4744
+ if (secret == NULL) return XXH_ERROR;
4745
+ if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR;
4746
+ XXH3_reset_internal(statePtr, seed64, secret, secretSize);
4747
+ statePtr->useSeed = 1; /* always, even if seed64==0 */
4748
+ return XXH_OK;
4749
+ }
4750
+
4691
4751
  /* Note : when XXH3_consumeStripes() is invoked,
4692
4752
  * there must be a guarantee that at least one more byte must be consumed from input
4693
4753
  * so that the function can blindly consume all stripes using the "normal" secret segment */
@@ -4715,35 +4775,48 @@ XXH3_consumeStripes(xxh_u64* XXH_RESTRICT acc,
4715
4775
  }
4716
4776
  }
4717
4777
 
4778
+ #ifndef XXH3_STREAM_USE_STACK
4779
+ # ifndef __clang__ /* clang doesn't need additional stack space */
4780
+ # define XXH3_STREAM_USE_STACK 1
4781
+ # endif
4782
+ #endif
4718
4783
  /*
4719
4784
  * Both XXH3_64bits_update and XXH3_128bits_update use this routine.
4720
4785
  */
4721
4786
  XXH_FORCE_INLINE XXH_errorcode
4722
- XXH3_update(XXH3_state_t* state,
4723
- const xxh_u8* input, size_t len,
4787
+ XXH3_update(XXH3_state_t* XXH_RESTRICT const state,
4788
+ const xxh_u8* XXH_RESTRICT input, size_t len,
4724
4789
  XXH3_f_accumulate_512 f_acc512,
4725
4790
  XXH3_f_scrambleAcc f_scramble)
4726
4791
  {
4727
- if (input==NULL)
4728
- #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
4792
+ if (input==NULL) {
4793
+ XXH_ASSERT(len == 0);
4729
4794
  return XXH_OK;
4730
- #else
4731
- return XXH_ERROR;
4732
- #endif
4795
+ }
4733
4796
 
4797
+ XXH_ASSERT(state != NULL);
4734
4798
  { const xxh_u8* const bEnd = input + len;
4735
4799
  const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret;
4736
-
4800
+ #if defined(XXH3_STREAM_USE_STACK) && XXH3_STREAM_USE_STACK >= 1
4801
+ /* For some reason, gcc and MSVC seem to suffer greatly
4802
+ * when operating accumulators directly into state.
4803
+ * Operating into stack space seems to enable proper optimization.
4804
+ * clang, on the other hand, doesn't seem to need this trick */
4805
+ XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[8]; memcpy(acc, state->acc, sizeof(acc));
4806
+ #else
4807
+ xxh_u64* XXH_RESTRICT const acc = state->acc;
4808
+ #endif
4737
4809
  state->totalLen += len;
4738
4810
  XXH_ASSERT(state->bufferedSize <= XXH3_INTERNALBUFFER_SIZE);
4739
4811
 
4740
- if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) { /* fill in tmp buffer */
4812
+ /* small input : just fill in tmp buffer */
4813
+ if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) {
4741
4814
  XXH_memcpy(state->buffer + state->bufferedSize, input, len);
4742
4815
  state->bufferedSize += (XXH32_hash_t)len;
4743
4816
  return XXH_OK;
4744
4817
  }
4745
- /* total input is now > XXH3_INTERNALBUFFER_SIZE */
4746
4818
 
4819
+ /* total input is now > XXH3_INTERNALBUFFER_SIZE */
4747
4820
  #define XXH3_INTERNALBUFFER_STRIPES (XXH3_INTERNALBUFFER_SIZE / XXH_STRIPE_LEN)
4748
4821
  XXH_STATIC_ASSERT(XXH3_INTERNALBUFFER_SIZE % XXH_STRIPE_LEN == 0); /* clean multiple */
4749
4822
 
@@ -4755,7 +4828,7 @@ XXH3_update(XXH3_state_t* state,
4755
4828
  size_t const loadSize = XXH3_INTERNALBUFFER_SIZE - state->bufferedSize;
4756
4829
  XXH_memcpy(state->buffer + state->bufferedSize, input, loadSize);
4757
4830
  input += loadSize;
4758
- XXH3_consumeStripes(state->acc,
4831
+ XXH3_consumeStripes(acc,
4759
4832
  &state->nbStripesSoFar, state->nbStripesPerBlock,
4760
4833
  state->buffer, XXH3_INTERNALBUFFER_STRIPES,
4761
4834
  secret, state->secretLimit,
@@ -4764,25 +4837,62 @@ XXH3_update(XXH3_state_t* state,
4764
4837
  }
4765
4838
  XXH_ASSERT(input < bEnd);
4766
4839
 
4767
- /* Consume input by a multiple of internal buffer size */
4768
- if (input+XXH3_INTERNALBUFFER_SIZE < bEnd) {
4769
- const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE;
4770
- do {
4771
- XXH3_consumeStripes(state->acc,
4772
- &state->nbStripesSoFar, state->nbStripesPerBlock,
4773
- input, XXH3_INTERNALBUFFER_STRIPES,
4774
- secret, state->secretLimit,
4775
- f_acc512, f_scramble);
4776
- input += XXH3_INTERNALBUFFER_SIZE;
4777
- } while (input<limit);
4778
- /* for last partial stripe */
4779
- memcpy(state->buffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN);
4840
+ /* large input to consume : ingest per full block */
4841
+ if ((size_t)(bEnd - input) > state->nbStripesPerBlock * XXH_STRIPE_LEN) {
4842
+ size_t nbStripes = (size_t)(bEnd - 1 - input) / XXH_STRIPE_LEN;
4843
+ XXH_ASSERT(state->nbStripesPerBlock >= state->nbStripesSoFar);
4844
+ /* join to current block's end */
4845
+ { size_t const nbStripesToEnd = state->nbStripesPerBlock - state->nbStripesSoFar;
4846
+ XXH_ASSERT(nbStripes <= nbStripes);
4847
+ XXH3_accumulate(acc, input, secret + state->nbStripesSoFar * XXH_SECRET_CONSUME_RATE, nbStripesToEnd, f_acc512);
4848
+ f_scramble(acc, secret + state->secretLimit);
4849
+ state->nbStripesSoFar = 0;
4850
+ input += nbStripesToEnd * XXH_STRIPE_LEN;
4851
+ nbStripes -= nbStripesToEnd;
4852
+ }
4853
+ /* consume per entire blocks */
4854
+ while(nbStripes >= state->nbStripesPerBlock) {
4855
+ XXH3_accumulate(acc, input, secret, state->nbStripesPerBlock, f_acc512);
4856
+ f_scramble(acc, secret + state->secretLimit);
4857
+ input += state->nbStripesPerBlock * XXH_STRIPE_LEN;
4858
+ nbStripes -= state->nbStripesPerBlock;
4859
+ }
4860
+ /* consume last partial block */
4861
+ XXH3_accumulate(acc, input, secret, nbStripes, f_acc512);
4862
+ input += nbStripes * XXH_STRIPE_LEN;
4863
+ XXH_ASSERT(input < bEnd); /* at least some bytes left */
4864
+ state->nbStripesSoFar = nbStripes;
4865
+ /* buffer predecessor of last partial stripe */
4866
+ XXH_memcpy(state->buffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN);
4867
+ XXH_ASSERT(bEnd - input <= XXH_STRIPE_LEN);
4868
+ } else {
4869
+ /* content to consume <= block size */
4870
+ /* Consume input by a multiple of internal buffer size */
4871
+ if (bEnd - input > XXH3_INTERNALBUFFER_SIZE) {
4872
+ const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE;
4873
+ do {
4874
+ XXH3_consumeStripes(acc,
4875
+ &state->nbStripesSoFar, state->nbStripesPerBlock,
4876
+ input, XXH3_INTERNALBUFFER_STRIPES,
4877
+ secret, state->secretLimit,
4878
+ f_acc512, f_scramble);
4879
+ input += XXH3_INTERNALBUFFER_SIZE;
4880
+ } while (input<limit);
4881
+ /* buffer predecessor of last partial stripe */
4882
+ XXH_memcpy(state->buffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN);
4883
+ }
4780
4884
  }
4781
- XXH_ASSERT(input < bEnd);
4782
4885
 
4783
4886
  /* Some remaining input (always) : buffer it */
4887
+ XXH_ASSERT(input < bEnd);
4888
+ XXH_ASSERT(bEnd - input <= XXH3_INTERNALBUFFER_SIZE);
4889
+ XXH_ASSERT(state->bufferedSize == 0);
4784
4890
  XXH_memcpy(state->buffer, input, (size_t)(bEnd-input));
4785
4891
  state->bufferedSize = (XXH32_hash_t)(bEnd-input);
4892
+ #if defined(XXH3_STREAM_USE_STACK) && XXH3_STREAM_USE_STACK >= 1
4893
+ /* save stack accumulators into state */
4894
+ memcpy(state->acc, acc, sizeof(acc));
4895
+ #endif
4786
4896
  }
4787
4897
 
4788
4898
  return XXH_OK;
@@ -4806,7 +4916,7 @@ XXH3_digest_long (XXH64_hash_t* acc,
4806
4916
  * Digest on a local copy. This way, the state remains unaltered, and it can
4807
4917
  * continue ingesting more input afterwards.
4808
4918
  */
4809
- memcpy(acc, state->acc, sizeof(state->acc));
4919
+ XXH_memcpy(acc, state->acc, sizeof(state->acc));
4810
4920
  if (state->bufferedSize >= XXH_STRIPE_LEN) {
4811
4921
  size_t const nbStripes = (state->bufferedSize - 1) / XXH_STRIPE_LEN;
4812
4922
  size_t nbStripesSoFar = state->nbStripesSoFar;
@@ -4823,8 +4933,8 @@ XXH3_digest_long (XXH64_hash_t* acc,
4823
4933
  xxh_u8 lastStripe[XXH_STRIPE_LEN];
4824
4934
  size_t const catchupSize = XXH_STRIPE_LEN - state->bufferedSize;
4825
4935
  XXH_ASSERT(state->bufferedSize > 0); /* there is always some input buffered */
4826
- memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize);
4827
- memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize);
4936
+ XXH_memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize);
4937
+ XXH_memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize);
4828
4938
  XXH3_accumulate_512(acc,
4829
4939
  lastStripe,
4830
4940
  secret + state->secretLimit - XXH_SECRET_LASTACC_START);
@@ -4843,58 +4953,13 @@ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* state)
4843
4953
  (xxh_u64)state->totalLen * XXH_PRIME64_1);
4844
4954
  }
4845
4955
  /* totalLen <= XXH3_MIDSIZE_MAX: digesting a short input */
4846
- if (state->seed)
4956
+ if (state->useSeed)
4847
4957
  return XXH3_64bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed);
4848
4958
  return XXH3_64bits_withSecret(state->buffer, (size_t)(state->totalLen),
4849
4959
  secret, state->secretLimit + XXH_STRIPE_LEN);
4850
4960
  }
4851
4961
 
4852
4962
 
4853
- #define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x))
4854
-
4855
- /*! @ingroup xxh3_family */
4856
- XXH_PUBLIC_API void
4857
- XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize)
4858
- {
4859
- XXH_ASSERT(secretBuffer != NULL);
4860
- if (customSeedSize == 0) {
4861
- memcpy(secretBuffer, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE);
4862
- return;
4863
- }
4864
- XXH_ASSERT(customSeed != NULL);
4865
-
4866
- { size_t const segmentSize = sizeof(XXH128_hash_t);
4867
- size_t const nbSegments = XXH_SECRET_DEFAULT_SIZE / segmentSize;
4868
- XXH128_canonical_t scrambler;
4869
- XXH64_hash_t seeds[12];
4870
- size_t segnb;
4871
- XXH_ASSERT(nbSegments == 12);
4872
- XXH_ASSERT(segmentSize * nbSegments == XXH_SECRET_DEFAULT_SIZE); /* exact multiple */
4873
- XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0));
4874
-
4875
- /*
4876
- * Copy customSeed to seeds[], truncating or repeating as necessary.
4877
- */
4878
- { size_t toFill = XXH_MIN(customSeedSize, sizeof(seeds));
4879
- size_t filled = toFill;
4880
- memcpy(seeds, customSeed, toFill);
4881
- while (filled < sizeof(seeds)) {
4882
- toFill = XXH_MIN(filled, sizeof(seeds) - filled);
4883
- memcpy((char*)seeds + filled, seeds, toFill);
4884
- filled += toFill;
4885
- } }
4886
-
4887
- /* generate secret */
4888
- memcpy(secretBuffer, &scrambler, sizeof(scrambler));
4889
- for (segnb=1; segnb < nbSegments; segnb++) {
4890
- size_t const segmentStart = segnb * segmentSize;
4891
- XXH128_canonical_t segment;
4892
- XXH128_canonicalFromHash(&segment,
4893
- XXH128(&scrambler, sizeof(scrambler), XXH_readLE64(seeds + segnb) + segnb) );
4894
- memcpy((char*)secretBuffer + segmentStart, &segment, sizeof(segment));
4895
- } }
4896
- }
4897
-
4898
4963
 
4899
4964
  /* ==========================================
4900
4965
  * XXH3 128 bits (a.k.a XXH128)
@@ -5196,9 +5261,10 @@ XXH3_hashLong_128b_default(const void* XXH_RESTRICT input, size_t len,
5196
5261
  }
5197
5262
 
5198
5263
  /*
5199
- * It's important for performance that XXH3_hashLong is not inlined.
5264
+ * It's important for performance to pass @secretLen (when it's static)
5265
+ * to the compiler, so that it can properly optimize the vectorized loop.
5200
5266
  */
5201
- XXH_NO_INLINE XXH128_hash_t
5267
+ XXH_FORCE_INLINE XXH128_hash_t
5202
5268
  XXH3_hashLong_128b_withSecret(const void* XXH_RESTRICT input, size_t len,
5203
5269
  XXH64_hash_t seed64,
5204
5270
  const void* XXH_RESTRICT secret, size_t secretLen)
@@ -5291,6 +5357,15 @@ XXH3_128bits_withSeed(const void* input, size_t len, XXH64_hash_t seed)
5291
5357
  XXH3_hashLong_128b_withSeed);
5292
5358
  }
5293
5359
 
5360
+ /*! @ingroup xxh3_family */
5361
+ XXH_PUBLIC_API XXH128_hash_t
5362
+ XXH3_128bits_withSecretandSeed(const void* input, size_t len, const void* secret, size_t secretSize, XXH64_hash_t seed)
5363
+ {
5364
+ if (len <= XXH3_MIDSIZE_MAX)
5365
+ return XXH3_128bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), NULL);
5366
+ return XXH3_hashLong_128b_withSecret(input, len, seed, secret, secretSize);
5367
+ }
5368
+
5294
5369
  /*! @ingroup xxh3_family */
5295
5370
  XXH_PUBLIC_API XXH128_hash_t
5296
5371
  XXH128(const void* input, size_t len, XXH64_hash_t seed)
@@ -5302,7 +5377,7 @@ XXH128(const void* input, size_t len, XXH64_hash_t seed)
5302
5377
  /* === XXH3 128-bit streaming === */
5303
5378
 
5304
5379
  /*
5305
- * All the functions are actually the same as for 64-bit streaming variant.
5380
+ * All initialization and update functions are identical to 64-bit streaming variant.
5306
5381
  * The only difference is the finalization routine.
5307
5382
  */
5308
5383
 
@@ -5310,31 +5385,28 @@ XXH128(const void* input, size_t len, XXH64_hash_t seed)
5310
5385
  XXH_PUBLIC_API XXH_errorcode
5311
5386
  XXH3_128bits_reset(XXH3_state_t* statePtr)
5312
5387
  {
5313
- if (statePtr == NULL) return XXH_ERROR;
5314
- XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE);
5315
- return XXH_OK;
5388
+ return XXH3_64bits_reset(statePtr);
5316
5389
  }
5317
5390
 
5318
5391
  /*! @ingroup xxh3_family */
5319
5392
  XXH_PUBLIC_API XXH_errorcode
5320
5393
  XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize)
5321
5394
  {
5322
- if (statePtr == NULL) return XXH_ERROR;
5323
- XXH3_reset_internal(statePtr, 0, secret, secretSize);
5324
- if (secret == NULL) return XXH_ERROR;
5325
- if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR;
5326
- return XXH_OK;
5395
+ return XXH3_64bits_reset_withSecret(statePtr, secret, secretSize);
5327
5396
  }
5328
5397
 
5329
5398
  /*! @ingroup xxh3_family */
5330
5399
  XXH_PUBLIC_API XXH_errorcode
5331
5400
  XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed)
5332
5401
  {
5333
- if (statePtr == NULL) return XXH_ERROR;
5334
- if (seed==0) return XXH3_128bits_reset(statePtr);
5335
- if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed);
5336
- XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE);
5337
- return XXH_OK;
5402
+ return XXH3_64bits_reset_withSeed(statePtr, seed);
5403
+ }
5404
+
5405
+ /*! @ingroup xxh3_family */
5406
+ XXH_PUBLIC_API XXH_errorcode
5407
+ XXH3_128bits_reset_withSecretandSeed(XXH3_state_t* statePtr, const void* secret, size_t secretSize, XXH64_hash_t seed)
5408
+ {
5409
+ return XXH3_64bits_reset_withSecretandSeed(statePtr, secret, secretSize, seed);
5338
5410
  }
5339
5411
 
5340
5412
  /*! @ingroup xxh3_family */
@@ -5409,8 +5481,8 @@ XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash)
5409
5481
  hash.high64 = XXH_swap64(hash.high64);
5410
5482
  hash.low64 = XXH_swap64(hash.low64);
5411
5483
  }
5412
- memcpy(dst, &hash.high64, sizeof(hash.high64));
5413
- memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64));
5484
+ XXH_memcpy(dst, &hash.high64, sizeof(hash.high64));
5485
+ XXH_memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64));
5414
5486
  }
5415
5487
 
5416
5488
  /*! @ingroup xxh3_family */
@@ -5423,6 +5495,69 @@ XXH128_hashFromCanonical(const XXH128_canonical_t* src)
5423
5495
  return h;
5424
5496
  }
5425
5497
 
5498
+
5499
+
5500
+ /* ==========================================
5501
+ * Secret generators
5502
+ * ==========================================
5503
+ */
5504
+ #define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x))
5505
+
5506
+ static void XXH3_combine16(void* dst, XXH128_hash_t h128)
5507
+ {
5508
+ XXH_writeLE64( dst, XXH_readLE64(dst) ^ h128.low64 );
5509
+ XXH_writeLE64( (char*)dst+8, XXH_readLE64((char*)dst+8) ^ h128.high64 );
5510
+ }
5511
+
5512
+ /*! @ingroup xxh3_family */
5513
+ XXH_PUBLIC_API XXH_errorcode
5514
+ XXH3_generateSecret(void* secretBuffer, size_t secretSize, const void* customSeed, size_t customSeedSize)
5515
+ {
5516
+ XXH_ASSERT(secretBuffer != NULL);
5517
+ if (secretBuffer == NULL) return XXH_ERROR;
5518
+ XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN);
5519
+ if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR;
5520
+ if (customSeedSize == 0) {
5521
+ customSeed = XXH3_kSecret;
5522
+ customSeedSize = XXH_SECRET_DEFAULT_SIZE;
5523
+ }
5524
+ XXH_ASSERT(customSeed != NULL);
5525
+ if (customSeed == NULL) return XXH_ERROR;
5526
+
5527
+ /* Fill secretBuffer with a copy of customSeed - repeat as needed */
5528
+ { size_t pos = 0;
5529
+ while (pos < secretSize) {
5530
+ size_t const toCopy = XXH_MIN((secretSize - pos), customSeedSize);
5531
+ memcpy((char*)secretBuffer + pos, customSeed, toCopy);
5532
+ pos += toCopy;
5533
+ } }
5534
+
5535
+ { size_t const nbSeg16 = secretSize / 16;
5536
+ size_t n;
5537
+ XXH128_canonical_t scrambler;
5538
+ XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0));
5539
+ for (n=0; n<nbSeg16; n++) {
5540
+ XXH128_hash_t const h128 = XXH128(&scrambler, sizeof(scrambler), n);
5541
+ XXH3_combine16((char*)secretBuffer + n*16, h128);
5542
+ }
5543
+ /* last segment */
5544
+ XXH3_combine16((char*)secretBuffer + secretSize - 16, XXH128_hashFromCanonical(&scrambler));
5545
+ }
5546
+ return XXH_OK;
5547
+ }
5548
+
5549
+ /*! @ingroup xxh3_family */
5550
+ XXH_PUBLIC_API void
5551
+ XXH3_generateSecret_fromSeed(void* secretBuffer, XXH64_hash_t seed)
5552
+ {
5553
+ XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE];
5554
+ XXH3_initCustomSecret(secret, seed);
5555
+ XXH_ASSERT(secretBuffer != NULL);
5556
+ memcpy(secretBuffer, secret, XXH_SECRET_DEFAULT_SIZE);
5557
+ }
5558
+
5559
+
5560
+
5426
5561
  /* Pop our optimization override from above */
5427
5562
  #if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \
5428
5563
  && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \
@@ -5432,6 +5567,8 @@ XXH128_hashFromCanonical(const XXH128_canonical_t* src)
5432
5567
 
5433
5568
  #endif /* XXH_NO_LONG_LONG */
5434
5569
 
5570
+ #endif /* XXH_NO_XXH3 */
5571
+
5435
5572
  /*!
5436
5573
  * @}
5437
5574
  */