grpc 1.73.0 → 1.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +38 -17
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/interception_chain.h +7 -11
  11. data/src/core/channelz/channel_trace.cc +213 -115
  12. data/src/core/channelz/channel_trace.h +380 -86
  13. data/src/core/channelz/channelz.cc +270 -181
  14. data/src/core/channelz/channelz.h +168 -55
  15. data/src/core/channelz/channelz_registry.cc +2 -1
  16. data/src/core/channelz/channelz_registry.h +24 -0
  17. data/src/core/channelz/property_list.cc +357 -0
  18. data/src/core/channelz/property_list.h +202 -0
  19. data/src/core/channelz/ztrace_collector.h +3 -2
  20. data/src/core/client_channel/backup_poller.cc +17 -2
  21. data/src/core/client_channel/client_channel.cc +17 -28
  22. data/src/core/client_channel/client_channel_filter.cc +19 -29
  23. data/src/core/client_channel/config_selector.h +8 -2
  24. data/src/core/client_channel/dynamic_filters.cc +5 -6
  25. data/src/core/client_channel/dynamic_filters.h +1 -1
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  27. data/src/core/client_channel/retry_filter.cc +21 -27
  28. data/src/core/client_channel/retry_filter.h +10 -7
  29. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  30. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  31. data/src/core/client_channel/retry_interceptor.cc +30 -44
  32. data/src/core/client_channel/retry_interceptor.h +18 -17
  33. data/src/core/client_channel/retry_throttle.cc +46 -61
  34. data/src/core/client_channel/retry_throttle.h +17 -39
  35. data/src/core/client_channel/subchannel.cc +43 -19
  36. data/src/core/client_channel/subchannel.h +8 -0
  37. data/src/core/config/config_vars.cc +2 -0
  38. data/src/core/config/core_configuration.cc +1 -0
  39. data/src/core/config/core_configuration.h +11 -0
  40. data/src/core/credentials/call/call_creds_registry.h +125 -0
  41. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  42. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  43. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  44. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  45. data/src/core/credentials/call/jwt_util.cc +70 -0
  46. data/src/core/credentials/call/jwt_util.h +32 -0
  47. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  48. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  49. data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
  50. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  51. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  54. data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
  55. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  56. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  57. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  58. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  59. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
  60. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  61. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  62. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  63. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
  64. data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
  65. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  67. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  69. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  70. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  71. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  72. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  73. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  74. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  75. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
  76. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  77. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  78. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  79. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  80. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  82. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  83. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  84. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  85. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  86. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
  87. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  88. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  89. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  93. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  94. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  95. data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
  96. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  97. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  98. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  99. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  100. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  101. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  102. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  103. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  104. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  105. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  106. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  107. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  108. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  109. data/src/core/filter/auth/auth_filters.h +0 -25
  110. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  111. data/src/core/filter/filter_args.h +9 -23
  112. data/src/core/handshaker/handshaker.cc +23 -14
  113. data/src/core/handshaker/handshaker.h +3 -0
  114. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  115. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
  116. data/src/core/handshaker/security/secure_endpoint.cc +70 -25
  117. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  118. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  119. data/src/core/lib/channel/channel_args.cc +15 -0
  120. data/src/core/lib/channel/channel_args.h +3 -0
  121. data/src/core/lib/channel/channel_stack.cc +22 -23
  122. data/src/core/lib/channel/channel_stack.h +9 -7
  123. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  124. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  125. data/src/core/lib/channel/promise_based_filter.h +5 -5
  126. data/src/core/lib/debug/trace_impl.h +0 -1
  127. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  128. data/src/core/lib/event_engine/ares_resolver.h +48 -2
  129. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
  130. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
  131. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
  132. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  133. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  134. data/src/core/lib/event_engine/event_engine.cc +7 -0
  135. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  136. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  137. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
  139. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
  140. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
  141. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
  142. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
  143. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  144. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  145. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
  146. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  147. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  148. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
  149. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  150. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
  151. data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
  152. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
  153. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  154. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  155. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  156. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  157. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  158. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  159. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  160. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  161. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  162. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
  163. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  164. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  165. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  166. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  167. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  168. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  169. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  170. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  171. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  172. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  173. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  174. data/src/core/lib/event_engine/shim.cc +9 -0
  175. data/src/core/lib/event_engine/shim.h +3 -0
  176. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  177. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  178. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  179. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  180. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
  181. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  182. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  183. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  184. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  185. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  186. data/src/core/lib/experiments/experiments.cc +45 -93
  187. data/src/core/lib/experiments/experiments.h +21 -51
  188. data/src/core/lib/iomgr/endpoint.cc +4 -3
  189. data/src/core/lib/iomgr/endpoint.h +7 -4
  190. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  191. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  192. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  193. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  194. data/src/core/lib/iomgr/tcp_posix.cc +12 -6
  195. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  196. data/src/core/lib/promise/activity.h +1 -0
  197. data/src/core/lib/promise/arena_promise.h +23 -7
  198. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  199. data/src/core/lib/promise/detail/promise_like.h +118 -11
  200. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  201. data/src/core/lib/promise/detail/seq_state.h +687 -548
  202. data/src/core/lib/promise/if.h +20 -0
  203. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  204. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  205. data/src/core/lib/promise/loop.h +65 -3
  206. data/src/core/lib/promise/map.h +24 -0
  207. data/src/core/lib/promise/match_promise.h +103 -0
  208. data/src/core/lib/promise/mpsc.cc +425 -0
  209. data/src/core/lib/promise/mpsc.h +490 -0
  210. data/src/core/lib/promise/party.cc +50 -1
  211. data/src/core/lib/promise/party.h +66 -1
  212. data/src/core/lib/promise/race.h +31 -0
  213. data/src/core/lib/promise/seq.h +4 -1
  214. data/src/core/lib/promise/status_flag.h +7 -0
  215. data/src/core/lib/promise/try_seq.h +4 -1
  216. data/src/core/lib/promise/wait_set.cc +28 -0
  217. data/src/core/lib/promise/wait_set.h +86 -0
  218. data/src/core/lib/resource_quota/arena.h +19 -0
  219. data/src/core/lib/slice/slice.h +5 -0
  220. data/src/core/lib/surface/channel_create.cc +88 -13
  221. data/src/core/lib/surface/channel_create.h +4 -0
  222. data/src/core/lib/surface/channel_init.cc +164 -47
  223. data/src/core/lib/surface/channel_init.h +64 -1
  224. data/src/core/lib/surface/filter_stack_call.cc +18 -9
  225. data/src/core/lib/surface/init.cc +6 -15
  226. data/src/core/lib/surface/legacy_channel.cc +3 -5
  227. data/src/core/lib/surface/legacy_channel.h +3 -1
  228. data/src/core/lib/surface/version.cc +2 -2
  229. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  230. data/src/core/lib/transport/promise_endpoint.h +307 -0
  231. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  232. data/src/core/load_balancing/delegating_helper.h +2 -3
  233. data/src/core/load_balancing/health_check_client.cc +1 -5
  234. data/src/core/load_balancing/lb_policy.h +1 -3
  235. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  236. data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
  237. data/src/core/load_balancing/xds/cds.cc +10 -1
  238. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  239. data/src/core/resolver/xds/xds_config.cc +6 -3
  240. data/src/core/resolver/xds/xds_config.h +9 -4
  241. data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
  242. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  243. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  244. data/src/core/server/server.cc +83 -12
  245. data/src/core/server/server.h +21 -2
  246. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  247. data/src/core/service_config/service_config.h +1 -1
  248. data/src/core/service_config/service_config_impl.h +1 -1
  249. data/src/core/telemetry/context_list_entry.cc +38 -0
  250. data/src/core/telemetry/context_list_entry.h +42 -12
  251. data/src/core/telemetry/stats_data.cc +233 -207
  252. data/src/core/telemetry/stats_data.h +250 -153
  253. data/src/core/telemetry/tcp_tracer.h +1 -1
  254. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  255. data/src/core/tsi/fake_transport_security.cc +17 -0
  256. data/src/core/tsi/ssl_transport_security.cc +2 -0
  257. data/src/core/tsi/transport_security_grpc.cc +8 -0
  258. data/src/core/tsi/transport_security_grpc.h +15 -0
  259. data/src/core/util/backoff.cc +1 -5
  260. data/src/core/util/backoff.h +1 -0
  261. data/src/core/util/down_cast.h +1 -1
  262. data/src/core/util/function_signature.h +15 -1
  263. data/src/core/util/http_client/httpcli.cc +12 -5
  264. data/src/core/util/http_client/httpcli.h +4 -1
  265. data/src/core/util/latent_see.h +8 -5
  266. data/src/core/util/log.cc +4 -0
  267. data/src/core/util/memory_usage.h +268 -0
  268. data/src/core/util/per_cpu.cc +2 -0
  269. data/src/core/util/per_cpu.h +7 -0
  270. data/src/core/util/shared_bit_gen.h +20 -0
  271. data/src/core/util/single_set_ptr.h +2 -2
  272. data/src/core/util/upb_utils.h +42 -0
  273. data/src/core/util/uri.cc +3 -2
  274. data/src/core/util/useful.h +53 -2
  275. data/src/core/util/wait_for_single_owner.cc +31 -0
  276. data/src/core/util/wait_for_single_owner.h +24 -0
  277. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  278. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  279. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  280. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  281. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  282. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  283. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  284. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  285. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  286. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  287. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  288. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  289. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  290. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  291. data/src/core/xds/xds_client/xds_client.cc +26 -5
  292. data/src/ruby/ext/grpc/extconf.rb +2 -0
  293. data/src/ruby/ext/grpc/rb_call.c +1 -8
  294. data/src/ruby/ext/grpc/rb_channel.c +72 -568
  295. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  296. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  297. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  298. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  299. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  300. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  301. data/src/ruby/ext/grpc/rb_server.c +31 -50
  302. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  303. data/src/ruby/lib/grpc/version.rb +1 -1
  304. data/src/ruby/spec/core_spec.rb +22 -0
  305. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  306. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  307. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  308. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  309. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  310. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  311. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  312. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  313. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  314. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  315. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  316. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  317. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  318. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  319. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  320. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  321. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  322. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  323. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  324. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  325. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  326. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  327. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  328. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  329. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  330. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  331. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  332. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  333. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  334. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  335. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  336. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  337. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  338. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  339. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  340. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  341. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  342. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  343. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  344. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  345. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  346. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  347. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  348. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  349. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  350. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  351. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  352. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  353. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  354. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  355. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  356. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  357. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  358. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  359. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  360. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  361. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  362. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  363. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  364. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  365. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  366. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  367. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  368. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  369. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  370. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  371. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  372. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  373. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  374. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  375. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  376. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  377. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  378. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  379. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  380. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  381. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  382. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  383. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  384. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  385. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  387. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  388. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  389. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  390. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  391. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  392. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  393. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  394. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  395. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  396. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  397. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  398. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  399. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  400. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  401. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  402. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  403. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  404. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  405. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  406. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  407. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  408. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  409. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  410. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  411. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  412. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  413. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  414. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  415. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  416. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  417. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  418. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  419. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  420. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  421. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  422. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  423. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  424. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  425. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  426. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  427. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  428. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  429. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  430. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  431. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  432. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  433. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  434. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  435. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  436. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  437. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  438. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  439. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  440. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  441. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  444. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  445. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  451. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  452. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  453. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  454. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  455. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  456. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  457. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  458. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  460. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  461. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  462. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  463. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  464. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  465. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  466. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  467. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  468. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  469. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  470. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  471. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  472. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  473. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  474. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  475. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  476. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  478. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  481. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  482. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  483. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  484. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  485. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  486. metadata +72 -20
  487. data/src/core/lib/event_engine/forkable.cc +0 -105
  488. data/src/core/lib/event_engine/forkable.h +0 -67
  489. data/src/core/lib/iomgr/python_util.h +0 -46
  490. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  491. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  492. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  493. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  494. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  495. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  496. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  497. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  498. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  499. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -117,7 +117,7 @@
117
117
  //
118
118
  // LTS releases can be obtained from
119
119
  // https://github.com/abseil/abseil-cpp/releases.
120
- #define ABSL_LTS_RELEASE_VERSION 20250127
120
+ #define ABSL_LTS_RELEASE_VERSION 20250512
121
121
  #define ABSL_LTS_RELEASE_PATCH_LEVEL 1
122
122
 
123
123
  // Helper macro to convert a CPP variable to a string literal.
@@ -274,15 +274,12 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
274
274
  #define ABSL_HAVE_STD_IS_TRIVIALLY_COPYABLE 1
275
275
  #endif
276
276
 
277
-
278
277
  // ABSL_HAVE_THREAD_LOCAL
279
278
  //
280
- // DEPRECATED - `thread_local` is available on all supported platforms.
281
- // Checks whether C++11's `thread_local` storage duration specifier is
282
- // supported.
279
+ // Checks whether the `thread_local` storage duration specifier is supported.
283
280
  #ifdef ABSL_HAVE_THREAD_LOCAL
284
281
  #error ABSL_HAVE_THREAD_LOCAL cannot be directly set
285
- #else
282
+ #elif !defined(__XTENSA__)
286
283
  #define ABSL_HAVE_THREAD_LOCAL 1
287
284
  #endif
288
285
 
@@ -469,6 +466,9 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
469
466
  //
470
467
  // Checks the endianness of the platform.
471
468
  //
469
+ // Prefer using `std::endian` in C++20, or `absl::endian` from
470
+ // absl/numeric/bits.h prior to C++20.
471
+ //
472
472
  // Notes: uses the built in endian macros provided by GCC (since 4.6) and
473
473
  // Clang (since 3.2); see
474
474
  // https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html.
@@ -520,54 +520,22 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
520
520
  #define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0
521
521
  #endif
522
522
 
523
- // ABSL_HAVE_STD_ANY
524
- //
525
- // Checks whether C++17 std::any is available.
526
- #ifdef ABSL_HAVE_STD_ANY
527
- #error "ABSL_HAVE_STD_ANY cannot be directly set."
528
- #elif defined(__cpp_lib_any) && __cpp_lib_any >= 201606L
529
- #define ABSL_HAVE_STD_ANY 1
530
- #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
531
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
532
- !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
523
+ // Deprecated macros for polyfill detection.
533
524
  #define ABSL_HAVE_STD_ANY 1
534
- #endif
535
-
536
- // ABSL_HAVE_STD_OPTIONAL
537
- //
538
- // Checks whether C++17 std::optional is available.
539
- #ifdef ABSL_HAVE_STD_OPTIONAL
540
- #error "ABSL_HAVE_STD_OPTIONAL cannot be directly set."
541
- #elif defined(__cpp_lib_optional) && __cpp_lib_optional >= 202106L
542
- #define ABSL_HAVE_STD_OPTIONAL 1
543
- #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
544
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
545
- !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
525
+ #define ABSL_USES_STD_ANY 1
546
526
  #define ABSL_HAVE_STD_OPTIONAL 1
547
- #endif
548
-
549
- // ABSL_HAVE_STD_VARIANT
550
- //
551
- // Checks whether C++17 std::variant is available.
552
- #ifdef ABSL_HAVE_STD_VARIANT
553
- #error "ABSL_HAVE_STD_VARIANT cannot be directly set."
554
- #elif defined(__cpp_lib_variant) && __cpp_lib_variant >= 201606L
555
- #define ABSL_HAVE_STD_VARIANT 1
556
- #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
557
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L && \
558
- !ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE
527
+ #define ABSL_USES_STD_OPTIONAL 1
559
528
  #define ABSL_HAVE_STD_VARIANT 1
560
- #endif
529
+ #define ABSL_USES_STD_VARIANT 1
561
530
 
562
531
  // ABSL_HAVE_STD_STRING_VIEW
563
532
  //
564
- // Checks whether C++17 std::string_view is available.
533
+ // Deprecated: always defined to 1.
534
+ // std::string_view was added in C++17, which means all versions of C++
535
+ // supported by Abseil have it.
565
536
  #ifdef ABSL_HAVE_STD_STRING_VIEW
566
537
  #error "ABSL_HAVE_STD_STRING_VIEW cannot be directly set."
567
- #elif defined(__cpp_lib_string_view) && __cpp_lib_string_view >= 201606L
568
- #define ABSL_HAVE_STD_STRING_VIEW 1
569
- #elif defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
570
- ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
538
+ #else
571
539
  #define ABSL_HAVE_STD_STRING_VIEW 1
572
540
  #endif
573
541
 
@@ -587,63 +555,15 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
587
555
  #define ABSL_HAVE_STD_ORDERING 1
588
556
  #endif
589
557
 
590
- // ABSL_USES_STD_ANY
591
- //
592
- // Indicates whether absl::any is an alias for std::any.
593
- #if !defined(ABSL_OPTION_USE_STD_ANY)
594
- #error options.h is misconfigured.
595
- #elif ABSL_OPTION_USE_STD_ANY == 0 || \
596
- (ABSL_OPTION_USE_STD_ANY == 2 && !defined(ABSL_HAVE_STD_ANY))
597
- #undef ABSL_USES_STD_ANY
598
- #elif ABSL_OPTION_USE_STD_ANY == 1 || \
599
- (ABSL_OPTION_USE_STD_ANY == 2 && defined(ABSL_HAVE_STD_ANY))
600
- #define ABSL_USES_STD_ANY 1
601
- #else
602
- #error options.h is misconfigured.
603
- #endif
604
-
605
- // ABSL_USES_STD_OPTIONAL
606
- //
607
- // Indicates whether absl::optional is an alias for std::optional.
608
- #if !defined(ABSL_OPTION_USE_STD_OPTIONAL)
609
- #error options.h is misconfigured.
610
- #elif ABSL_OPTION_USE_STD_OPTIONAL == 0 || \
611
- (ABSL_OPTION_USE_STD_OPTIONAL == 2 && !defined(ABSL_HAVE_STD_OPTIONAL))
612
- #undef ABSL_USES_STD_OPTIONAL
613
- #elif ABSL_OPTION_USE_STD_OPTIONAL == 1 || \
614
- (ABSL_OPTION_USE_STD_OPTIONAL == 2 && defined(ABSL_HAVE_STD_OPTIONAL))
615
- #define ABSL_USES_STD_OPTIONAL 1
616
- #else
617
- #error options.h is misconfigured.
618
- #endif
619
-
620
- // ABSL_USES_STD_VARIANT
621
- //
622
- // Indicates whether absl::variant is an alias for std::variant.
623
- #if !defined(ABSL_OPTION_USE_STD_VARIANT)
624
- #error options.h is misconfigured.
625
- #elif ABSL_OPTION_USE_STD_VARIANT == 0 || \
626
- (ABSL_OPTION_USE_STD_VARIANT == 2 && !defined(ABSL_HAVE_STD_VARIANT))
627
- #undef ABSL_USES_STD_VARIANT
628
- #elif ABSL_OPTION_USE_STD_VARIANT == 1 || \
629
- (ABSL_OPTION_USE_STD_VARIANT == 2 && defined(ABSL_HAVE_STD_VARIANT))
630
- #define ABSL_USES_STD_VARIANT 1
631
- #else
632
- #error options.h is misconfigured.
633
- #endif
634
-
635
558
  // ABSL_USES_STD_STRING_VIEW
636
559
  //
637
560
  // Indicates whether absl::string_view is an alias for std::string_view.
638
561
  #if !defined(ABSL_OPTION_USE_STD_STRING_VIEW)
639
562
  #error options.h is misconfigured.
640
- #elif ABSL_OPTION_USE_STD_STRING_VIEW == 0 || \
641
- (ABSL_OPTION_USE_STD_STRING_VIEW == 2 && \
642
- !defined(ABSL_HAVE_STD_STRING_VIEW))
563
+ #elif ABSL_OPTION_USE_STD_STRING_VIEW == 0
643
564
  #undef ABSL_USES_STD_STRING_VIEW
644
565
  #elif ABSL_OPTION_USE_STD_STRING_VIEW == 1 || \
645
- (ABSL_OPTION_USE_STD_STRING_VIEW == 2 && \
646
- defined(ABSL_HAVE_STD_STRING_VIEW))
566
+ ABSL_OPTION_USE_STD_STRING_VIEW == 2
647
567
  #define ABSL_USES_STD_STRING_VIEW 1
648
568
  #else
649
569
  #error options.h is misconfigured.
@@ -665,14 +585,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
665
585
  #error options.h is misconfigured.
666
586
  #endif
667
587
 
668
- // In debug mode, MSVC 2017's std::variant throws a EXCEPTION_ACCESS_VIOLATION
669
- // SEH exception from emplace for variant<SomeStruct> when constructing the
670
- // struct can throw. This defeats some of variant_test and
671
- // variant_exception_safety_test.
672
- #if defined(_MSC_VER) && _MSC_VER >= 1700 && defined(_DEBUG)
673
- #define ABSL_INTERNAL_MSVC_2017_DBG_MODE
674
- #endif
675
-
676
588
  // ABSL_INTERNAL_MANGLED_NS
677
589
  // ABSL_INTERNAL_MANGLED_BACKREFERENCE
678
590
  //
@@ -813,36 +725,15 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
813
725
 
814
726
  // ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION
815
727
  //
816
- // Class template argument deduction is a language feature added in C++17.
728
+ // Deprecated: always defined to 1.
729
+ // Class template argument deduction is a language feature added in C++17,
730
+ // which means all versions of C++ supported by Abseil have it.
817
731
  #ifdef ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION
818
732
  #error "ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION cannot be directly set."
819
- #elif defined(__cpp_deduction_guides)
733
+ #else
820
734
  #define ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION 1
821
735
  #endif
822
736
 
823
- // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
824
- //
825
- // Prior to C++17, static constexpr variables defined in classes required a
826
- // separate definition outside of the class body, for example:
827
- //
828
- // class Foo {
829
- // static constexpr int kBar = 0;
830
- // };
831
- // constexpr int Foo::kBar;
832
- //
833
- // In C++17, these variables defined in classes are considered inline variables,
834
- // and the extra declaration is redundant. Since some compilers warn on the
835
- // extra declarations, ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL can be used
836
- // conditionally ignore them:
837
- //
838
- // #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
839
- // constexpr int Foo::kBar;
840
- // #endif
841
- #if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
842
- ABSL_INTERNAL_CPLUSPLUS_LANG < 201703L
843
- #define ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL 1
844
- #endif
845
-
846
737
  // `ABSL_INTERNAL_HAS_RTTI` determines whether abseil is being compiled with
847
738
  // RTTI support.
848
739
  #ifdef ABSL_INTERNAL_HAS_RTTI
@@ -1,4 +1,3 @@
1
- //
2
1
  // Copyright 2020 The Abseil Authors.
3
2
  //
4
3
  // Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,37 +13,33 @@
14
13
  // limitations under the License.
15
14
  //
16
15
 
17
- #ifndef ABSL_BASE_INTERNAL_FAST_TYPE_ID_H_
18
- #define ABSL_BASE_INTERNAL_FAST_TYPE_ID_H_
16
+ #ifndef ABSL_BASE_FAST_TYPE_ID_H_
17
+ #define ABSL_BASE_FAST_TYPE_ID_H_
19
18
 
20
19
  #include "absl/base/config.h"
21
20
 
22
21
  namespace absl {
23
22
  ABSL_NAMESPACE_BEGIN
24
- namespace base_internal {
25
23
 
24
+ namespace base_internal {
26
25
  template <typename Type>
27
26
  struct FastTypeTag {
28
- constexpr static char dummy_var = 0;
27
+ static constexpr char kDummyVar = 0;
29
28
  };
29
+ } // namespace base_internal
30
30
 
31
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
32
- template <typename Type>
33
- constexpr char FastTypeTag<Type>::dummy_var;
34
- #endif
31
+ // The type returned by `absl::FastTypeId<T>()`.
32
+ using FastTypeIdType = const void*;
35
33
 
36
- // FastTypeId<Type>() evaluates at compile/link-time to a unique pointer for the
34
+ // `absl::FastTypeId<Type>()` evaluates at compile-time to a unique id for the
37
35
  // passed-in type. These are meant to be good match for keys into maps or
38
36
  // straight up comparisons.
39
- using FastTypeIdType = const void*;
40
-
41
37
  template <typename Type>
42
- constexpr inline FastTypeIdType FastTypeId() {
43
- return &FastTypeTag<Type>::dummy_var;
38
+ constexpr FastTypeIdType FastTypeId() {
39
+ return &base_internal::FastTypeTag<Type>::kDummyVar;
44
40
  }
45
41
 
46
- } // namespace base_internal
47
42
  ABSL_NAMESPACE_END
48
43
  } // namespace absl
49
44
 
50
- #endif // ABSL_BASE_INTERNAL_FAST_TYPE_ID_H_
45
+ #endif // ABSL_BASE_FAST_TYPE_ID_H_
@@ -35,11 +35,6 @@ namespace base_internal {
35
35
 
36
36
  #if ABSL_USE_UNSCALED_CYCLECLOCK
37
37
 
38
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
39
- constexpr int32_t CycleClock::kShift;
40
- constexpr double CycleClock::kFrequencyScale;
41
- #endif
42
-
43
38
  ABSL_CONST_INIT std::atomic<CycleClockSourceFunc>
44
39
  CycleClock::cycle_clock_source_{nullptr};
45
40
 
@@ -18,7 +18,6 @@
18
18
  #include <cstdint>
19
19
 
20
20
  #include "absl/base/config.h"
21
- #include "absl/base/internal/inline_variable.h"
22
21
  #include "absl/base/internal/unscaledcycleclock_config.h"
23
22
 
24
23
  namespace absl {
@@ -31,22 +30,23 @@ namespace base_internal {
31
30
  // Not debug mode and the UnscaledCycleClock frequency is the CPU
32
31
  // frequency. Scale the CycleClock to prevent overflow if someone
33
32
  // tries to represent the time as cycles since the Unix epoch.
34
- ABSL_INTERNAL_INLINE_CONSTEXPR(int32_t, kCycleClockShift, 1);
33
+ inline constexpr int32_t kCycleClockShift = 1;
35
34
  #else
36
35
  // Not debug mode and the UnscaledCycleClock isn't operating at the
37
36
  // raw CPU frequency. There is no need to do any scaling, so don't
38
37
  // needlessly sacrifice precision.
39
- ABSL_INTERNAL_INLINE_CONSTEXPR(int32_t, kCycleClockShift, 0);
38
+ inline constexpr int32_t kCycleClockShift = 0;
40
39
  #endif
41
40
  #else // NDEBUG
42
41
  // In debug mode use a different shift to discourage depending on a
43
42
  // particular shift value.
44
- ABSL_INTERNAL_INLINE_CONSTEXPR(int32_t, kCycleClockShift, 2);
43
+ inline constexpr int32_t kCycleClockShift = 2;
45
44
  #endif // NDEBUG
46
45
 
47
- ABSL_INTERNAL_INLINE_CONSTEXPR(double, kCycleClockFrequencyScale,
48
- 1.0 / (1 << kCycleClockShift));
49
- #endif // ABSL_USE_UNSCALED_CYCLECLOC
46
+ inline constexpr double kCycleClockFrequencyScale =
47
+ 1.0 / (1 << kCycleClockShift);
48
+
49
+ #endif // ABSL_USE_UNSCALED_CYCLECLOCK
50
50
 
51
51
  } // namespace base_internal
52
52
  ABSL_NAMESPACE_END
@@ -12,6 +12,8 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  //
15
+ // This file is for Abseil internal use only.
16
+ // See //absl/numeric/bits.h for supported functions related to endian-ness.
15
17
 
16
18
  #ifndef ABSL_BASE_INTERNAL_ENDIAN_H_
17
19
  #define ABSL_BASE_INTERNAL_ENDIAN_H_
@@ -28,44 +30,38 @@
28
30
  namespace absl {
29
31
  ABSL_NAMESPACE_BEGIN
30
32
 
31
- inline uint64_t gbswap_64(uint64_t host_int) {
33
+ constexpr uint64_t gbswap_64(uint64_t x) {
32
34
  #if ABSL_HAVE_BUILTIN(__builtin_bswap64) || defined(__GNUC__)
33
- return __builtin_bswap64(host_int);
34
- #elif defined(_MSC_VER)
35
- return _byteswap_uint64(host_int);
35
+ return __builtin_bswap64(x);
36
36
  #else
37
- return (((host_int & uint64_t{0xFF}) << 56) |
38
- ((host_int & uint64_t{0xFF00}) << 40) |
39
- ((host_int & uint64_t{0xFF0000}) << 24) |
40
- ((host_int & uint64_t{0xFF000000}) << 8) |
41
- ((host_int & uint64_t{0xFF00000000}) >> 8) |
42
- ((host_int & uint64_t{0xFF0000000000}) >> 24) |
43
- ((host_int & uint64_t{0xFF000000000000}) >> 40) |
44
- ((host_int & uint64_t{0xFF00000000000000}) >> 56));
37
+ return (((x & uint64_t{0xFF}) << 56) |
38
+ ((x & uint64_t{0xFF00}) << 40) |
39
+ ((x & uint64_t{0xFF0000}) << 24) |
40
+ ((x & uint64_t{0xFF000000}) << 8) |
41
+ ((x & uint64_t{0xFF00000000}) >> 8) |
42
+ ((x & uint64_t{0xFF0000000000}) >> 24) |
43
+ ((x & uint64_t{0xFF000000000000}) >> 40) |
44
+ ((x & uint64_t{0xFF00000000000000}) >> 56));
45
45
  #endif
46
46
  }
47
47
 
48
- inline uint32_t gbswap_32(uint32_t host_int) {
48
+ constexpr uint32_t gbswap_32(uint32_t x) {
49
49
  #if ABSL_HAVE_BUILTIN(__builtin_bswap32) || defined(__GNUC__)
50
- return __builtin_bswap32(host_int);
51
- #elif defined(_MSC_VER)
52
- return _byteswap_ulong(host_int);
50
+ return __builtin_bswap32(x);
53
51
  #else
54
- return (((host_int & uint32_t{0xFF}) << 24) |
55
- ((host_int & uint32_t{0xFF00}) << 8) |
56
- ((host_int & uint32_t{0xFF0000}) >> 8) |
57
- ((host_int & uint32_t{0xFF000000}) >> 24));
52
+ return (((x & uint32_t{0xFF}) << 24) |
53
+ ((x & uint32_t{0xFF00}) << 8) |
54
+ ((x & uint32_t{0xFF0000}) >> 8) |
55
+ ((x & uint32_t{0xFF000000}) >> 24));
58
56
  #endif
59
57
  }
60
58
 
61
- inline uint16_t gbswap_16(uint16_t host_int) {
59
+ constexpr uint16_t gbswap_16(uint16_t x) {
62
60
  #if ABSL_HAVE_BUILTIN(__builtin_bswap16) || defined(__GNUC__)
63
- return __builtin_bswap16(host_int);
64
- #elif defined(_MSC_VER)
65
- return _byteswap_ushort(host_int);
61
+ return __builtin_bswap16(x);
66
62
  #else
67
- return (((host_int & uint16_t{0xFF}) << 8) |
68
- ((host_int & uint16_t{0xFF00}) >> 8));
63
+ return (((x & uint16_t{0xFF}) << 8) |
64
+ ((x & uint16_t{0xFF00}) >> 8));
69
65
  #endif
70
66
  }
71
67
 
@@ -161,27 +157,27 @@ inline int64_t ToHost(int64_t x) {
161
157
  }
162
158
 
163
159
  // Functions to do unaligned loads and stores in little-endian order.
164
- inline uint16_t Load16(absl::Nonnull<const void *> p) {
160
+ inline uint16_t Load16(const void* absl_nonnull p) {
165
161
  return ToHost16(ABSL_INTERNAL_UNALIGNED_LOAD16(p));
166
162
  }
167
163
 
168
- inline void Store16(absl::Nonnull<void *> p, uint16_t v) {
164
+ inline void Store16(void* absl_nonnull p, uint16_t v) {
169
165
  ABSL_INTERNAL_UNALIGNED_STORE16(p, FromHost16(v));
170
166
  }
171
167
 
172
- inline uint32_t Load32(absl::Nonnull<const void *> p) {
168
+ inline uint32_t Load32(const void* absl_nonnull p) {
173
169
  return ToHost32(ABSL_INTERNAL_UNALIGNED_LOAD32(p));
174
170
  }
175
171
 
176
- inline void Store32(absl::Nonnull<void *> p, uint32_t v) {
172
+ inline void Store32(void* absl_nonnull p, uint32_t v) {
177
173
  ABSL_INTERNAL_UNALIGNED_STORE32(p, FromHost32(v));
178
174
  }
179
175
 
180
- inline uint64_t Load64(absl::Nonnull<const void *> p) {
176
+ inline uint64_t Load64(const void* absl_nonnull p) {
181
177
  return ToHost64(ABSL_INTERNAL_UNALIGNED_LOAD64(p));
182
178
  }
183
179
 
184
- inline void Store64(absl::Nonnull<void *> p, uint64_t v) {
180
+ inline void Store64(void* absl_nonnull p, uint64_t v) {
185
181
  ABSL_INTERNAL_UNALIGNED_STORE64(p, FromHost64(v));
186
182
  }
187
183
 
@@ -251,27 +247,27 @@ inline int64_t ToHost(int64_t x) {
251
247
  }
252
248
 
253
249
  // Functions to do unaligned loads and stores in big-endian order.
254
- inline uint16_t Load16(absl::Nonnull<const void *> p) {
250
+ inline uint16_t Load16(const void* absl_nonnull p) {
255
251
  return ToHost16(ABSL_INTERNAL_UNALIGNED_LOAD16(p));
256
252
  }
257
253
 
258
- inline void Store16(absl::Nonnull<void *> p, uint16_t v) {
254
+ inline void Store16(void* absl_nonnull p, uint16_t v) {
259
255
  ABSL_INTERNAL_UNALIGNED_STORE16(p, FromHost16(v));
260
256
  }
261
257
 
262
- inline uint32_t Load32(absl::Nonnull<const void *> p) {
258
+ inline uint32_t Load32(const void* absl_nonnull p) {
263
259
  return ToHost32(ABSL_INTERNAL_UNALIGNED_LOAD32(p));
264
260
  }
265
261
 
266
- inline void Store32(absl::Nonnull<void *>p, uint32_t v) {
262
+ inline void Store32(void* absl_nonnull p, uint32_t v) {
267
263
  ABSL_INTERNAL_UNALIGNED_STORE32(p, FromHost32(v));
268
264
  }
269
265
 
270
- inline uint64_t Load64(absl::Nonnull<const void *> p) {
266
+ inline uint64_t Load64(const void* absl_nonnull p) {
271
267
  return ToHost64(ABSL_INTERNAL_UNALIGNED_LOAD64(p));
272
268
  }
273
269
 
274
- inline void Store64(absl::Nonnull<void *> p, uint64_t v) {
270
+ inline void Store64(void* absl_nonnull p, uint64_t v) {
275
271
  ABSL_INTERNAL_UNALIGNED_STORE64(p, FromHost64(v));
276
272
  }
277
273
 
@@ -0,0 +1,71 @@
1
+ // Copyright 2025 The Abseil Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // -----------------------------------------------------------------------------
16
+ // File: internal/iterator_traits.h
17
+ // -----------------------------------------------------------------------------
18
+ //
19
+ // Helpers for querying traits of iterators, for implementing containers, etc.
20
+
21
+ #ifndef ABSL_BASE_INTERNAL_ITERATOR_TRAITS_H_
22
+ #define ABSL_BASE_INTERNAL_ITERATOR_TRAITS_H_
23
+
24
+ #include <iterator>
25
+ #include <type_traits>
26
+
27
+ #include "absl/base/config.h"
28
+ #include "absl/meta/type_traits.h"
29
+
30
+ namespace absl {
31
+ ABSL_NAMESPACE_BEGIN
32
+ namespace base_internal {
33
+
34
+ template <typename Iterator, typename = void>
35
+ struct IteratorCategory {};
36
+
37
+ template <typename Iterator>
38
+ struct IteratorCategory<
39
+ Iterator,
40
+ absl::void_t<typename std::iterator_traits<Iterator>::iterator_category>> {
41
+ using type = typename std::iterator_traits<Iterator>::iterator_category;
42
+ };
43
+
44
+ template <typename Iterator, typename = void>
45
+ struct IteratorConceptImpl : IteratorCategory<Iterator> {};
46
+
47
+ template <typename Iterator>
48
+ struct IteratorConceptImpl<
49
+ Iterator,
50
+ absl::void_t<typename std::iterator_traits<Iterator>::iterator_concept>> {
51
+ using type = typename std::iterator_traits<Iterator>::iterator_concept;
52
+ };
53
+
54
+ // The newer `std::iterator_traits<Iterator>::iterator_concept` if available,
55
+ // else `std::iterator_traits<Iterator>::iterator_category`.
56
+ template <typename Iterator>
57
+ using IteratorConcept = typename IteratorConceptImpl<Iterator>::type;
58
+
59
+ template <typename IteratorTag, typename Iterator>
60
+ using IsAtLeastIterator =
61
+ std::is_convertible<IteratorConcept<Iterator>, IteratorTag>;
62
+
63
+ template <typename Iterator>
64
+ using IsAtLeastForwardIterator =
65
+ IsAtLeastIterator<std::forward_iterator_tag, Iterator>;
66
+
67
+ } // namespace base_internal
68
+ ABSL_NAMESPACE_END
69
+ } // namespace absl
70
+
71
+ #endif // ABSL_BASE_INTERNAL_ITERATOR_TRAITS_H_
@@ -330,7 +330,7 @@ size_t GetPageSize() {
330
330
  GetSystemInfo(&system_info);
331
331
  return std::max(system_info.dwPageSize, system_info.dwAllocationGranularity);
332
332
  #elif defined(__wasm__) || defined(__asmjs__) || defined(__hexagon__)
333
- return getpagesize();
333
+ return static_cast<size_t>(getpagesize());
334
334
  #else
335
335
  return static_cast<size_t>(sysconf(_SC_PAGESIZE));
336
336
  #endif
@@ -448,8 +448,8 @@ static inline uintptr_t RoundUp(uintptr_t addr, uintptr_t align) {
448
448
  // that the freelist is in the correct order, that it
449
449
  // consists of regions marked "unallocated", and that no two regions
450
450
  // are adjacent in memory (they should have been coalesced).
451
- // L >= arena->mu
452
- static AllocList *Next(int i, AllocList *prev, LowLevelAlloc::Arena *arena) {
451
+ static AllocList *Next(int i, AllocList *prev, LowLevelAlloc::Arena *arena)
452
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(arena->mu) {
453
453
  ABSL_RAW_CHECK(i < prev->levels, "too few levels in Next()");
454
454
  AllocList *next = prev->next[i];
455
455
  if (next != nullptr) {
@@ -473,6 +473,7 @@ static void Coalesce(AllocList *a) {
473
473
  if (n != nullptr && reinterpret_cast<char *>(a) + a->header.size ==
474
474
  reinterpret_cast<char *>(n)) {
475
475
  LowLevelAlloc::Arena *arena = a->header.arena;
476
+ arena->mu.AssertHeld();
476
477
  a->header.size += n->header.size;
477
478
  n->header.magic = 0;
478
479
  n->header.arena = nullptr;
@@ -486,8 +487,8 @@ static void Coalesce(AllocList *a) {
486
487
  }
487
488
 
488
489
  // Adds block at location "v" to the free list
489
- // L >= arena->mu
490
- static void AddToFreelist(void *v, LowLevelAlloc::Arena *arena) {
490
+ static void AddToFreelist(void *v, LowLevelAlloc::Arena *arena)
491
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(arena->mu) {
491
492
  AllocList *f = reinterpret_cast<AllocList *>(reinterpret_cast<char *>(v) -
492
493
  sizeof(f->header));
493
494
  ABSL_RAW_CHECK(f->header.magic == Magic(kMagicAllocated, &f->header),
@@ -11,16 +11,11 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
-
15
- #ifndef ABSL_BASE_INTERNAL_NULLABILITY_IMPL_H_
16
- #define ABSL_BASE_INTERNAL_NULLABILITY_IMPL_H_
17
-
18
- #include <memory>
19
- #include <type_traits>
14
+ #ifndef ABSL_BASE_INTERNAL_NULLABILITY_DEPRECATED_H_
15
+ #define ABSL_BASE_INTERNAL_NULLABILITY_DEPRECATED_H_
20
16
 
21
17
  #include "absl/base/attributes.h"
22
18
  #include "absl/base/config.h"
23
- #include "absl/meta/type_traits.h"
24
19
 
25
20
  namespace absl {
26
21
  ABSL_NAMESPACE_BEGIN
@@ -63,7 +58,49 @@ using NullabilityUnknownImpl
63
58
  #endif
64
59
 
65
60
  } // namespace nullability_internal
61
+
62
+ // The following template aliases are deprecated forms of nullability
63
+ // annotations. They have some limitations, for example, an incompatibility with
64
+ // `auto*` pointers, as `auto` cannot be used in a template argument.
65
+ //
66
+ // It is important to note that these annotations are not distinct strong
67
+ // *types*. They are alias templates defined to be equal to the underlying
68
+ // pointer type. A pointer annotated `Nonnull<T*>`, for example, is simply a
69
+ // pointer of type `T*`.
70
+ //
71
+ // Prefer the macro style annotations in `absl/base/nullability.h` instead.
72
+
73
+ // absl::Nonnull, analogous to absl_nonnull
74
+ //
75
+ // Example:
76
+ // absl::Nonnull<int*> foo;
77
+ // Is equivalent to:
78
+ // int* absl_nonnull foo;
79
+ template <typename T>
80
+ using Nonnull [[deprecated("Use `absl_nonnull`.")]] =
81
+ nullability_internal::NonnullImpl<T>;
82
+
83
+ // absl::Nullable, analogous to absl_nullable
84
+ //
85
+ // Example:
86
+ // absl::Nullable<int*> foo;
87
+ // Is equivalent to:
88
+ // int* absl_nullable foo;
89
+ template <typename T>
90
+ using Nullable [[deprecated("Use `absl_nullable`.")]] =
91
+ nullability_internal::NullableImpl<T>;
92
+
93
+ // absl::NullabilityUnknown, analogous to absl_nullability_unknown
94
+ //
95
+ // Example:
96
+ // absl::NullabilityUnknown<int*> foo;
97
+ // Is equivalent to:
98
+ // int* absl_nullability_unknown foo;
99
+ template <typename T>
100
+ using NullabilityUnknown [[deprecated("Use `absl_nullability_unknown`.")]] =
101
+ nullability_internal::NullabilityUnknownImpl<T>;
102
+
66
103
  ABSL_NAMESPACE_END
67
104
  } // namespace absl
68
105
 
69
- #endif // ABSL_BASE_INTERNAL_NULLABILITY_IMPL_H_
106
+ #endif // ABSL_BASE_INTERNAL_NULLABILITY_DEPRECATED_H_
@@ -67,15 +67,6 @@ void RegisterSpinLockProfiler(void (*fn)(const void *contendedlock,
67
67
  submit_profile_data.Store(fn);
68
68
  }
69
69
 
70
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
71
- // Static member variable definitions.
72
- constexpr uint32_t SpinLock::kSpinLockHeld;
73
- constexpr uint32_t SpinLock::kSpinLockCooperative;
74
- constexpr uint32_t SpinLock::kSpinLockDisabledScheduling;
75
- constexpr uint32_t SpinLock::kSpinLockSleeper;
76
- constexpr uint32_t SpinLock::kWaitTimeMask;
77
- #endif
78
-
79
70
  // Uncommon constructors.
80
71
  SpinLock::SpinLock(base_internal::SchedulingMode mode)
81
72
  : lockword_(IsCooperative(mode) ? kSpinLockCooperative : 0) {