re2 1.24.0 → 1.25.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 (370) hide show
  1. package/LICENSE +15 -20
  2. package/README.md +63 -4
  3. package/binding.gyp +1 -2
  4. package/lib/addon.cc +9 -5
  5. package/lib/exec.cc +4 -4
  6. package/lib/match.cc +4 -4
  7. package/lib/new.cc +6 -6
  8. package/lib/pattern.cc +148 -1
  9. package/lib/replace.cc +5 -4
  10. package/lib/search.cc +1 -1
  11. package/lib/set.cc +85 -10
  12. package/lib/test.cc +1 -1
  13. package/lib/unicode_properties.h +15840 -0
  14. package/lib/wrapped_re2.h +40 -4
  15. package/lib/wrapped_re2_set.h +3 -1
  16. package/llms-full.txt +497 -0
  17. package/llms.txt +135 -0
  18. package/package.json +19 -11
  19. package/re2.d.ts +2 -0
  20. package/re2.js +1 -0
  21. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
  22. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  23. package/vendor/abseil-cpp/FAQ.md +130 -79
  24. package/vendor/abseil-cpp/MODULE.bazel +6 -7
  25. package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
  26. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
  27. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
  28. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  29. package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
  30. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
  31. package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
  32. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
  33. package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
  34. package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
  35. package/vendor/abseil-cpp/absl/base/casts.h +8 -1
  36. package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
  37. package/vendor/abseil-cpp/absl/base/config.h +53 -9
  38. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
  39. package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
  40. package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
  41. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
  42. package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
  43. package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
  44. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
  45. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
  46. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  47. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
  48. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  49. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  50. package/vendor/abseil-cpp/absl/base/macros.h +36 -20
  51. package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
  52. package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
  53. package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
  54. package/vendor/abseil-cpp/absl/base/options.h +55 -1
  55. package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
  56. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  57. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  58. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
  59. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
  60. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
  61. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
  62. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  63. package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
  64. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
  65. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
  68. package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
  69. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
  70. package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
  71. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
  72. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
  73. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
  74. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
  75. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
  76. package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
  77. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
  78. package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
  79. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
  80. package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
  81. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  82. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
  83. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
  84. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
  87. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
  88. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
  89. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
  90. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
  91. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
  92. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
  93. package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
  94. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
  95. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
  96. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
  97. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
  101. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
  102. package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
  103. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
  104. package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
  105. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
  106. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
  107. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
  108. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
  109. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
  110. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
  111. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  112. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  113. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  114. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
  115. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
  116. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
  117. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  118. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
  119. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
  120. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
  121. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
  122. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
  123. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  124. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
  125. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
  126. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
  127. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
  128. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
  129. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  130. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
  131. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
  132. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  133. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
  134. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
  135. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  136. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
  137. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
  138. package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
  139. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
  140. package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
  141. package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
  142. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
  143. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
  144. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
  145. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
  146. package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
  147. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
  148. package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
  149. package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
  150. package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
  151. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
  152. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
  153. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
  154. package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  155. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  156. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  157. package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
  158. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
  159. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
  160. package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
  161. package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
  162. package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
  163. package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
  164. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
  165. package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
  166. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
  167. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
  168. package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
  169. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
  170. package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  171. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
  172. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
  173. package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
  174. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  175. package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
  176. package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  177. package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  178. package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
  179. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
  180. package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
  181. package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
  182. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
  183. package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
  184. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
  185. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
  186. package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  187. package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
  188. package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
  189. package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
  190. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  191. package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
  192. package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
  193. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
  194. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
  195. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
  196. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
  197. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
  198. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
  199. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
  200. package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
  201. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
  202. package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
  203. package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
  204. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  205. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
  206. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  207. package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
  208. package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
  209. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  210. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
  211. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  212. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  213. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  214. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  215. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
  216. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
  217. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  218. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
  219. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  220. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
  221. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  222. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  223. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
  224. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
  225. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  226. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
  227. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  228. package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
  229. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
  230. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  231. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
  232. package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
  233. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
  234. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  235. package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
  236. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  237. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  238. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
  239. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
  240. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
  241. package/vendor/abseil-cpp/absl/status/status.cc +62 -70
  242. package/vendor/abseil-cpp/absl/status/status.h +249 -23
  243. package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
  244. package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
  245. package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
  246. package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
  247. package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
  248. package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
  249. package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
  250. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
  251. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  252. package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
  253. package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
  254. package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
  255. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
  256. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
  257. package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
  258. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
  259. package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
  260. package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
  261. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  262. package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
  263. package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
  264. package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
  265. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
  266. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
  267. package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
  268. package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
  269. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
  270. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
  271. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  272. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  273. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  274. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
  275. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
  276. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
  277. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
  278. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
  279. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  280. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  281. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  282. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
  283. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
  284. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
  285. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
  286. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
  287. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  288. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  289. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
  290. package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
  291. package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
  292. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
  293. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
  294. package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
  295. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
  296. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
  297. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
  298. package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
  299. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
  300. package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
  301. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
  302. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
  303. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  304. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
  305. package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
  306. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
  307. package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
  308. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
  309. package/vendor/abseil-cpp/absl/time/clock.h +3 -0
  310. package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
  311. package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
  312. package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
  313. package/vendor/abseil-cpp/absl/time/format.cc +3 -10
  314. package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
  315. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
  316. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
  317. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
  318. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
  330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
  331. package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
  332. package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
  333. package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
  334. package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
  335. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
  336. package/vendor/abseil-cpp/absl/types/any.h +26 -4
  337. package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
  338. package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
  339. package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
  340. package/vendor/abseil-cpp/absl/types/compare.h +4 -4
  341. package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
  342. package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
  343. package/vendor/abseil-cpp/absl/types/optional.h +30 -3
  344. package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
  345. package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
  346. package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
  347. package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
  348. package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
  349. package/vendor/abseil-cpp/absl/types/span.h +19 -23
  350. package/vendor/abseil-cpp/absl/types/variant.h +75 -18
  351. package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
  352. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
  353. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
  354. package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
  355. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
  356. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
  357. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
  358. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
  359. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
  360. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
  361. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  362. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
  363. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
  364. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
  365. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
  366. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
  367. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
  368. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  369. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  370. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
@@ -45,6 +45,7 @@
45
45
 
46
46
  #include "absl/base/attributes.h"
47
47
  #include "absl/base/config.h"
48
+ #include "absl/base/macros.h"
48
49
 
49
50
  #ifdef __cpp_lib_span
50
51
  #include <span> // NOLINT(build/c++20)
@@ -103,9 +104,10 @@ struct is_detected : is_detected_impl<void, Op, Args...>::type {};
103
104
  // metafunction allows you to create a general case that maps to `void` while
104
105
  // allowing specializations that map to specific types.
105
106
  //
106
- // This metafunction is not 100% compatible with the C++17 `std::void_t`
107
- // metafunction. It has slightly different behavior, such as when ordering
108
- // partial specializations. It is recommended to use `std::void_t` instead.
107
+ // This metafunction is a workaround for some implementations of `std::void_t`
108
+ // that evaluate to `void` prematurely, causing partial specializations to
109
+ // appear duplicated (and thus invalid) to the compiler prior to substitution
110
+ // taking place. Whenever possible, use `std::void_t` instead.
109
111
  template <typename... Ts>
110
112
  using void_t = typename type_traits_internal::VoidTImpl<Ts...>::type;
111
113
 
@@ -115,38 +117,115 @@ using void_t = typename type_traits_internal::VoidTImpl<Ts...>::type;
115
117
  //
116
118
  // See the documentation for the STL <type_traits> header for more information:
117
119
  // https://en.cppreference.com/w/cpp/header/type_traits
118
- using std::add_const_t;
119
- using std::add_cv_t;
120
- using std::add_lvalue_reference_t;
121
- using std::add_pointer_t;
122
- using std::add_rvalue_reference_t;
123
- using std::add_volatile_t;
124
- using std::common_type_t;
125
- using std::conditional_t;
126
- using std::conjunction;
127
- using std::decay_t;
128
- using std::enable_if_t;
129
- using std::disjunction;
130
- using std::is_copy_assignable;
131
- using std::is_function;
132
- using std::is_move_assignable;
133
- using std::is_trivially_copy_assignable;
134
- using std::is_trivially_copy_constructible;
135
- using std::is_trivially_default_constructible;
136
- using std::is_trivially_destructible;
137
- using std::is_trivially_move_assignable;
138
- using std::is_trivially_move_constructible;
139
- using std::make_signed_t;
140
- using std::make_unsigned_t;
141
- using std::negation;
142
- using std::remove_all_extents_t;
143
- using std::remove_const_t;
144
- using std::remove_cv_t;
145
- using std::remove_extent_t;
146
- using std::remove_pointer_t;
147
- using std::remove_reference_t;
148
- using std::remove_volatile_t;
149
- using std::underlying_type_t;
120
+
121
+ template <class T>
122
+ using add_const_t ABSL_DEPRECATE_AND_INLINE() = std::add_const_t<T>;
123
+
124
+ template <class T>
125
+ using add_cv_t ABSL_DEPRECATE_AND_INLINE() = std::add_cv_t<T>;
126
+
127
+ template <class T>
128
+ using add_lvalue_reference_t ABSL_DEPRECATE_AND_INLINE() =
129
+ std::add_lvalue_reference_t<T>;
130
+
131
+ template <class T>
132
+ using add_pointer_t ABSL_DEPRECATE_AND_INLINE() = std::add_pointer_t<T>;
133
+
134
+ template <class T>
135
+ using add_rvalue_reference_t ABSL_DEPRECATE_AND_INLINE() =
136
+ std::add_rvalue_reference_t<T>;
137
+
138
+ template <class T>
139
+ using add_volatile_t ABSL_DEPRECATE_AND_INLINE() = std::add_volatile_t<T>;
140
+
141
+ template <class... T>
142
+ using common_type_t ABSL_DEPRECATE_AND_INLINE() = std::common_type_t<T...>;
143
+
144
+ template <bool C, class T, class F>
145
+ using conditional_t ABSL_DEPRECATE_AND_INLINE() = std::conditional_t<C, T, F>;
146
+
147
+ template <class... T>
148
+ using conjunction ABSL_DEPRECATE_AND_INLINE() = std::conjunction<T...>;
149
+
150
+ template <class T>
151
+ using decay_t ABSL_DEPRECATE_AND_INLINE() = std::decay_t<T>;
152
+
153
+ template <bool C, class T = void>
154
+ using enable_if_t [[deprecated("Use std::enable_if_t instead.")]] =
155
+ std::enable_if_t<C, T>;
156
+
157
+ template <class... T>
158
+ using disjunction ABSL_DEPRECATE_AND_INLINE() = std::disjunction<T...>;
159
+
160
+ template <class T>
161
+ using is_copy_assignable ABSL_DEPRECATE_AND_INLINE() =
162
+ std::is_copy_assignable<T>;
163
+
164
+ template <class T>
165
+ using is_function ABSL_DEPRECATE_AND_INLINE() = std::is_function<T>;
166
+
167
+ template <class T>
168
+ using is_move_assignable ABSL_DEPRECATE_AND_INLINE() =
169
+ std::is_move_assignable<T>;
170
+
171
+ template <class T>
172
+ using is_trivially_copy_assignable ABSL_DEPRECATE_AND_INLINE() =
173
+ std::is_trivially_copy_assignable<T>;
174
+
175
+ template <class T>
176
+ using is_trivially_copy_constructible ABSL_DEPRECATE_AND_INLINE() =
177
+ std::is_trivially_copy_constructible<T>;
178
+
179
+ template <class T>
180
+ using is_trivially_default_constructible ABSL_DEPRECATE_AND_INLINE() =
181
+ std::is_trivially_default_constructible<T>;
182
+
183
+ template <class T>
184
+ using is_trivially_destructible ABSL_DEPRECATE_AND_INLINE() =
185
+ std::is_trivially_destructible<T>;
186
+
187
+ template <class T>
188
+ using is_trivially_move_assignable ABSL_DEPRECATE_AND_INLINE() =
189
+ std::is_trivially_move_assignable<T>;
190
+
191
+ template <class T>
192
+ using is_trivially_move_constructible ABSL_DEPRECATE_AND_INLINE() =
193
+ std::is_trivially_move_constructible<T>;
194
+
195
+ template <class T>
196
+ using make_signed_t ABSL_DEPRECATE_AND_INLINE() = std::make_signed_t<T>;
197
+
198
+ template <class T>
199
+ using make_unsigned_t ABSL_DEPRECATE_AND_INLINE() = std::make_unsigned_t<T>;
200
+
201
+ template <class T>
202
+ using negation ABSL_DEPRECATE_AND_INLINE() = std::negation<T>;
203
+
204
+ template <class T>
205
+ using remove_all_extents_t ABSL_DEPRECATE_AND_INLINE() =
206
+ std::remove_all_extents_t<T>;
207
+
208
+ template <class T>
209
+ using remove_const_t ABSL_DEPRECATE_AND_INLINE() = std::remove_const_t<T>;
210
+
211
+ template <class T>
212
+ using remove_cv_t ABSL_DEPRECATE_AND_INLINE() = std::remove_cv_t<T>;
213
+
214
+ template <class T>
215
+ using remove_extent_t ABSL_DEPRECATE_AND_INLINE() = std::remove_extent_t<T>;
216
+
217
+ template <class T>
218
+ using remove_pointer_t ABSL_DEPRECATE_AND_INLINE() = std::remove_pointer_t<T>;
219
+
220
+ template <class T>
221
+ using remove_reference_t ABSL_DEPRECATE_AND_INLINE() =
222
+ std::remove_reference_t<T>;
223
+
224
+ template <class T>
225
+ using remove_volatile_t ABSL_DEPRECATE_AND_INLINE() = std::remove_volatile_t<T>;
226
+
227
+ template <class T>
228
+ using underlying_type_t ABSL_DEPRECATE_AND_INLINE() = std::underlying_type_t<T>;
150
229
 
151
230
  #if defined(__cpp_lib_remove_cvref) && __cpp_lib_remove_cvref >= 201711L
152
231
  template <typename T>
@@ -211,31 +290,16 @@ template <typename F>
211
290
  using result_of_t = typename type_traits_internal::result_of<F>::type;
212
291
 
213
292
  namespace type_traits_internal {
214
- // In MSVC we can't probe std::hash or stdext::hash because it triggers a
215
- // static_assert instead of failing substitution. Libc++ prior to 4.0
216
- // also used a static_assert.
217
- //
218
- #if defined(_MSC_VER) || (defined(_LIBCPP_VERSION) && \
219
- _LIBCPP_VERSION < 4000 && _LIBCPP_STD_VER > 11)
220
- #define ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_ 0
221
- #else
222
- #define ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_ 1
223
- #endif
224
293
 
225
- #if !ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
226
- template <typename Key, typename = size_t>
227
- struct IsHashable : std::true_type {};
228
- #else // ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
229
294
  template <typename Key, typename = void>
230
295
  struct IsHashable : std::false_type {};
231
296
 
232
297
  template <typename Key>
233
298
  struct IsHashable<
234
299
  Key,
235
- absl::enable_if_t<std::is_convertible<
300
+ std::enable_if_t<std::is_convertible<
236
301
  decltype(std::declval<std::hash<Key>&>()(std::declval<Key const&>())),
237
302
  std::size_t>::value>> : std::true_type {};
238
- #endif // !ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
239
303
 
240
304
  struct AssertHashEnabledHelper {
241
305
  private:
@@ -258,7 +322,7 @@ struct AssertHashEnabledHelper {
258
322
  static_assert(
259
323
  std::is_copy_constructible<std::hash<Key>>::value,
260
324
  "std::hash<Key> must be copy constructible when it is enabled");
261
- static_assert(absl::is_copy_assignable<std::hash<Key>>::value,
325
+ static_assert(std::is_copy_assignable<std::hash<Key>>::value,
262
326
  "std::hash<Key> must be copy assignable when it is enabled");
263
327
  // is_destructible is unchecked as it's implied by each of the
264
328
  // is_constructible checks.
@@ -321,7 +385,7 @@ struct IsNothrowSwappable
321
385
  //
322
386
  // Performs the swap idiom from a namespace where valid candidates may only be
323
387
  // found in `std` or via ADL.
324
- template <class T, absl::enable_if_t<IsSwappable<T>::value, int> = 0>
388
+ template <class T, std::enable_if_t<IsSwappable<T>::value, int> = 0>
325
389
  void Swap(T& lhs, T& rhs) noexcept(IsNothrowSwappable<T>::value) {
326
390
  swap(lhs, rhs);
327
391
  }
@@ -490,7 +554,7 @@ template <typename T>
490
554
  struct IsOwnerImpl<
491
555
  T,
492
556
  std::enable_if_t<std::is_class<typename T::absl_internal_is_view>::value>>
493
- : absl::negation<typename T::absl_internal_is_view> {};
557
+ : std::negation<typename T::absl_internal_is_view> {};
494
558
 
495
559
  // A trait to determine whether a type is an owner.
496
560
  // Do *not* depend on the correctness of this trait for correct code behavior.
@@ -570,7 +634,7 @@ struct IsView<std::span<T>> : std::true_type {};
570
634
  // Until then, we consider an assignment from an "owner" (such as std::string)
571
635
  // to a "view" (such as std::string_view) to be a lifetime-bound assignment.
572
636
  template <typename T, typename U>
573
- using IsLifetimeBoundAssignment = absl::conjunction<
637
+ using IsLifetimeBoundAssignment = std::conjunction<
574
638
  std::integral_constant<bool, !std::is_lvalue_reference<U>::value>,
575
639
  IsOwner<absl::remove_cvref_t<U>>, IsView<absl::remove_cvref_t<T>>>;
576
640
 
@@ -33,8 +33,8 @@ using ::testing::StaticAssertTypeEq;
33
33
 
34
34
  template <typename T>
35
35
  using IsOwnerAndNotView =
36
- absl::conjunction<absl::type_traits_internal::IsOwner<T>,
37
- absl::negation<absl::type_traits_internal::IsView<T>>>;
36
+ std::conjunction<absl::type_traits_internal::IsOwner<T>,
37
+ std::negation<absl::type_traits_internal::IsView<T>>>;
38
38
 
39
39
  static_assert(
40
40
  IsOwnerAndNotView<std::pair<std::vector<int>, std::string>>::value,
@@ -70,13 +70,13 @@ struct StructC {};
70
70
 
71
71
  struct TypeWithBarFunction {
72
72
  template <class T,
73
- absl::enable_if_t<std::is_same<T&&, StructA&>::value, int> = 0>
73
+ std::enable_if_t<std::is_same<T&&, StructA&>::value, int> = 0>
74
74
  ReturnType bar(T&&, const StructB&, StructC&&) &&; // NOLINT
75
75
  };
76
76
 
77
77
  struct TypeWithBarFunctionAndConvertibleReturnType {
78
78
  template <class T,
79
- absl::enable_if_t<std::is_same<T&&, StructA&>::value, int> = 0>
79
+ std::enable_if_t<std::is_same<T&&, StructA&>::value, int> = 0>
80
80
  ConvertibleToReturnType bar(T&&, const StructB&, StructC&&) &&; // NOLINT
81
81
  };
82
82
 
@@ -160,19 +160,19 @@ enum class TypeEnum { A, B, C, D };
160
160
 
161
161
  struct GetTypeT {
162
162
  template <typename T,
163
- absl::enable_if_t<std::is_same<T, TypeA>::value, int> = 0>
163
+ std::enable_if_t<std::is_same<T, TypeA>::value, int> = 0>
164
164
  TypeEnum operator()(Wrap<T>) const {
165
165
  return TypeEnum::A;
166
166
  }
167
167
 
168
168
  template <typename T,
169
- absl::enable_if_t<std::is_same<T, TypeB>::value, int> = 0>
169
+ std::enable_if_t<std::is_same<T, TypeB>::value, int> = 0>
170
170
  TypeEnum operator()(Wrap<T>) const {
171
171
  return TypeEnum::B;
172
172
  }
173
173
 
174
174
  template <typename T,
175
- absl::enable_if_t<std::is_same<T, TypeC>::value, int> = 0>
175
+ std::enable_if_t<std::is_same<T, TypeC>::value, int> = 0>
176
176
  TypeEnum operator()(Wrap<T>) const {
177
177
  return TypeEnum::C;
178
178
  }
@@ -93,11 +93,11 @@ TEST(Uint128, IntrinsicTypeTraitsTest) {
93
93
  #endif // ABSL_HAVE_INTRINSIC_INT128
94
94
 
95
95
  TEST(Uint128, TrivialTraitsTest) {
96
- static_assert(absl::is_trivially_default_constructible<absl::uint128>::value,
96
+ static_assert(std::is_trivially_default_constructible<absl::uint128>::value,
97
97
  "");
98
- static_assert(absl::is_trivially_copy_constructible<absl::uint128>::value,
98
+ static_assert(std::is_trivially_copy_constructible<absl::uint128>::value,
99
99
  "");
100
- static_assert(absl::is_trivially_copy_assignable<absl::uint128>::value, "");
100
+ static_assert(std::is_trivially_copy_assignable<absl::uint128>::value, "");
101
101
  static_assert(std::is_trivially_destructible<absl::uint128>::value, "");
102
102
  }
103
103
 
@@ -619,10 +619,10 @@ TEST(Int128, IntrinsicTypeTraitsTest) {
619
619
  #endif // ABSL_HAVE_INTRINSIC_INT128
620
620
 
621
621
  TEST(Int128, TrivialTraitsTest) {
622
- static_assert(absl::is_trivially_default_constructible<absl::int128>::value,
622
+ static_assert(std::is_trivially_default_constructible<absl::int128>::value,
623
623
  "");
624
- static_assert(absl::is_trivially_copy_constructible<absl::int128>::value, "");
625
- static_assert(absl::is_trivially_copy_assignable<absl::int128>::value, "");
624
+ static_assert(std::is_trivially_copy_constructible<absl::int128>::value, "");
625
+ static_assert(std::is_trivially_copy_assignable<absl::int128>::value, "");
626
626
  static_assert(std::is_trivially_destructible<absl::int128>::value, "");
627
627
  }
628
628
 
@@ -40,6 +40,7 @@ cc_library(
40
40
  linkopts = ABSL_DEFAULT_LINKOPTS,
41
41
  visibility = [
42
42
  "//absl:__subpackages__",
43
+ "//absl:friends",
43
44
  ],
44
45
  deps = [
45
46
  "//absl/base:config",
@@ -77,6 +78,7 @@ cc_library(
77
78
  linkopts = ABSL_DEFAULT_LINKOPTS,
78
79
  visibility = [
79
80
  "//absl:__subpackages__",
81
+ "//absl:friends",
80
82
  ],
81
83
  deps = [
82
84
  "//absl/base:config",
@@ -106,8 +108,8 @@ cc_library(
106
108
  copts = ABSL_DEFAULT_COPTS,
107
109
  linkopts = ABSL_DEFAULT_LINKOPTS,
108
110
  visibility = [
109
- # TODO(b/304670045): remove after periodic_sampler moves to //spanner/common.
110
111
  "//absl:__subpackages__",
112
+ "//absl:friends",
111
113
  ],
112
114
  deps = [
113
115
  ":exponential_biased",
@@ -60,7 +60,6 @@ StatusOr<std::string> MarshalHashtableProfile(
60
60
  const auto capacity_id = builder.InternString("capacity");
61
61
  const auto size_id = builder.InternString("size");
62
62
  const auto num_erases_id = builder.InternString("num_erases");
63
- const auto num_insert_hits_id = builder.InternString("num_insert_hits");
64
63
  const auto num_rehashes_id = builder.InternString("num_rehashes");
65
64
  const auto max_probe_length_id = builder.InternString("max_probe_length");
66
65
  const auto total_probe_length_id = builder.InternString("total_probe_length");
@@ -89,9 +88,6 @@ StatusOr<std::string> MarshalHashtableProfile(
89
88
  add_label(size_id, info.size.load(std::memory_order_relaxed));
90
89
  add_label(num_erases_id,
91
90
  info.num_erases.load(std::memory_order_relaxed));
92
- // TODO(b/436909492): Revisit whether this value is useful.
93
- add_label(num_insert_hits_id,
94
- info.num_insert_hits.load(std::memory_order_relaxed));
95
91
  add_label(num_rehashes_id,
96
92
  info.num_rehashes.load(std::memory_order_relaxed));
97
93
  add_label(max_probe_length_id,
@@ -400,6 +400,38 @@ void ProfileBuilder::AddCurrentMappings() {
400
400
 
401
401
  const bool is_main_executable = builder.mappings_.empty();
402
402
 
403
+ // Storage for path to executable as dlpi_name isn't populated for the
404
+ // main executable. +1 to allow for the null terminator that readlink
405
+ // does not add.
406
+ char self_filename[PATH_MAX + 1];
407
+ const char* filename = info->dlpi_name;
408
+ if (filename == nullptr || filename[0] == '\0') {
409
+ // This is either the main executable or the VDSO. The main
410
+ // executable is always the first entry processed by callbacks.
411
+ if (is_main_executable) {
412
+ // This is the main executable.
413
+ ssize_t ret = readlink("/proc/self/exe", self_filename,
414
+ sizeof(self_filename) - 1);
415
+ if (ret >= 0 && static_cast<size_t>(ret) < sizeof(self_filename)) {
416
+ self_filename[ret] = '\0';
417
+ filename = self_filename;
418
+ }
419
+ } else {
420
+ // This is the VDSO.
421
+ filename = GetSoName(info);
422
+ }
423
+ }
424
+
425
+ char resolved_path[PATH_MAX];
426
+ absl::string_view resolved_filename;
427
+ if (realpath(filename, resolved_path)) {
428
+ resolved_filename = resolved_path;
429
+ } else {
430
+ resolved_filename = filename;
431
+ }
432
+
433
+ const std::string build_id = GetBuildId(info);
434
+
403
435
  // Evaluate all the loadable segments.
404
436
  for (int i = 0; i < info->dlpi_phnum; ++i) {
405
437
  if (info->dlpi_phdr[i].p_type != PT_LOAD) {
@@ -414,39 +446,6 @@ void ProfileBuilder::AddCurrentMappings() {
414
446
  const size_t memory_limit = memory_start + pt_load->p_memsz;
415
447
  const size_t file_offset = pt_load->p_offset;
416
448
 
417
- // Storage for path to executable as dlpi_name isn't populated for the
418
- // main executable. +1 to allow for the null terminator that readlink
419
- // does not add.
420
- char self_filename[PATH_MAX + 1];
421
- const char* filename = info->dlpi_name;
422
- if (filename == nullptr || filename[0] == '\0') {
423
- // This is either the main executable or the VDSO. The main
424
- // executable is always the first entry processed by callbacks.
425
- if (is_main_executable) {
426
- // This is the main executable.
427
- ssize_t ret = readlink("/proc/self/exe", self_filename,
428
- sizeof(self_filename) - 1);
429
- if (ret >= 0 &&
430
- static_cast<size_t>(ret) < sizeof(self_filename)) {
431
- self_filename[ret] = '\0';
432
- filename = self_filename;
433
- }
434
- } else {
435
- // This is the VDSO.
436
- filename = GetSoName(info);
437
- }
438
- }
439
-
440
- char resolved_path[PATH_MAX];
441
- absl::string_view resolved_filename;
442
- if (realpath(filename, resolved_path)) {
443
- resolved_filename = resolved_path;
444
- } else {
445
- resolved_filename = filename;
446
- }
447
-
448
- const std::string build_id = GetBuildId(info);
449
-
450
449
  // Add to profile.
451
450
  builder.AddMapping(memory_start, memory_limit, file_offset,
452
451
  resolved_filename, build_id);
@@ -116,8 +116,31 @@ class ProfileBuilder {
116
116
  void set_default_sample_type_id(StringId default_sample_type_id);
117
117
 
118
118
  private:
119
- absl::flat_hash_map<std::string, StringId> string_table_{{"", StringId(0)}};
120
- absl::flat_hash_map<uintptr_t, LocationId> location_table_;
119
+ // We turn off hashtable profiling for the ProfileBuilder's own tables.
120
+ //
121
+ // This is necessary since we use this class to construct hashtable profiles,
122
+ // which entails walking the hashtable profiling data and we don't want to
123
+ // encounter it reentrantly.
124
+ template <typename T>
125
+ struct HashtablezBarrier : std::allocator<T> {
126
+ HashtablezBarrier() = default;
127
+
128
+ template <typename U>
129
+ HashtablezBarrier(const HashtablezBarrier<U>&) {}
130
+
131
+ template <class U>
132
+ struct rebind {
133
+ using other = HashtablezBarrier<U>;
134
+ };
135
+ };
136
+
137
+ template <typename K, typename V>
138
+ using UnprofiledHashMap = absl::flat_hash_map<
139
+ K, V, DefaultHashContainerHash<K>, DefaultHashContainerEq<K>,
140
+ HashtablezBarrier<std::pair<const K, V>>>;
141
+
142
+ UnprofiledHashMap<std::string, StringId> string_table_{{"", StringId(0)}};
143
+ UnprofiledHashMap<uintptr_t, LocationId> location_table_;
121
144
  // mapping_table_ stores the start address of each mapping in mapping_
122
145
  // to its index.
123
146
  absl::btree_map<uintptr_t, size_t> mapping_table_;
@@ -49,15 +49,17 @@ struct Info : public Sample<Info> {
49
49
 
50
50
  std::vector<size_t> GetSizes(SampleRecorder<Info>* s) {
51
51
  std::vector<size_t> res;
52
- s->Iterate([&](const Info& info) {
52
+ EXPECT_EQ(s->Iterate([&](const Info& info) {
53
53
  res.push_back(info.size.load(std::memory_order_acquire));
54
- });
54
+ }),
55
+ 0);
55
56
  return res;
56
57
  }
57
58
 
58
59
  std::vector<int64_t> GetWeights(SampleRecorder<Info>* s) {
59
60
  std::vector<int64_t> res;
60
- s->Iterate([&](const Info& info) { res.push_back(info.weight); });
61
+ EXPECT_EQ(s->Iterate([&](const Info& info) { res.push_back(info.weight); }),
62
+ 0);
61
63
  return res;
62
64
  }
63
65
 
@@ -141,9 +143,10 @@ TEST(SampleRecorderTest, MultiThreaded) {
141
143
  }
142
144
  case 2: {
143
145
  absl::Duration oldest = absl::ZeroDuration();
144
- sampler.Iterate([&](const Info& info) {
146
+ EXPECT_EQ(sampler.Iterate([&](const Info& info) {
145
147
  oldest = std::max(oldest, absl::Now() - info.create_time);
146
- });
148
+ }),
149
+ 0);
147
150
  ASSERT_GE(oldest, absl::ZeroDuration());
148
151
  break;
149
152
  }
@@ -128,13 +128,14 @@ cc_library(
128
128
  copts = ABSL_DEFAULT_COPTS,
129
129
  linkopts = ABSL_DEFAULT_LINKOPTS,
130
130
  deps = [
131
+ ":mocking_access",
131
132
  ":random",
132
133
  "//absl/base:config",
133
134
  "//absl/base:core_headers",
134
135
  "//absl/base:fast_type_id",
135
136
  "//absl/meta:type_traits",
136
- "//absl/random/internal:distribution_caller",
137
137
  "//absl/random/internal:fast_uniform_bits",
138
+ "//absl/random/internal:traits",
138
139
  ],
139
140
  )
140
141
 
@@ -160,6 +161,7 @@ cc_library(
160
161
  ],
161
162
  linkopts = ABSL_DEFAULT_LINKOPTS,
162
163
  deps = [
164
+ ":mocking_access",
163
165
  ":random",
164
166
  "//absl/base:config",
165
167
  "//absl/base:fast_type_id",
@@ -171,6 +173,16 @@ cc_library(
171
173
  ],
172
174
  )
173
175
 
176
+ cc_library(
177
+ name = "mocking_access",
178
+ hdrs = ["mocking_access.h"],
179
+ deps = [
180
+ "//absl/base:config",
181
+ "//absl/base:fast_type_id",
182
+ "//absl/meta:type_traits",
183
+ ],
184
+ )
185
+
174
186
  cc_test(
175
187
  name = "bernoulli_distribution_test",
176
188
  size = "small",
@@ -44,9 +44,10 @@ absl_cc_library(
44
44
  DEPS
45
45
  absl::config
46
46
  absl::core_headers
47
- absl::random_internal_distribution_caller
48
47
  absl::random_internal_fast_uniform_bits
49
48
  absl::type_traits
49
+ absl::random_mocking_access
50
+ absl::random_internal_traits
50
51
  )
51
52
 
52
53
  absl_cc_test(
@@ -68,6 +69,21 @@ absl_cc_test(
68
69
  GTest::gtest_main
69
70
  )
70
71
 
72
+ absl_cc_library(
73
+ NAME
74
+ random_mocking_access
75
+ HDRS
76
+ "mocking_access.h"
77
+ COPTS
78
+ ${ABSL_DEFAULT_COPTS}
79
+ LINKOPTS
80
+ ${ABSL_DEFAULT_LINKOPTS}
81
+ DEPS
82
+ absl::config
83
+ absl::fast_type_id
84
+ absl::type_traits
85
+ )
86
+
71
87
  # Internal-only target, do not depend on directly.
72
88
  absl_cc_library(
73
89
  NAME
@@ -82,6 +98,7 @@ absl_cc_library(
82
98
  absl::config
83
99
  absl::fast_type_id
84
100
  absl::optional
101
+ absl::random_mocking_access
85
102
  )
86
103
 
87
104
  # Internal-only target, do not depend on directly.
@@ -118,6 +135,7 @@ absl_cc_library(
118
135
  absl::flat_hash_map
119
136
  absl::raw_logging_internal
120
137
  absl::random_internal_mock_helpers
138
+ absl::random_mocking_access
121
139
  absl::random_random
122
140
  absl::type_traits
123
141
  absl::utility
@@ -536,6 +554,9 @@ absl_cc_library(
536
554
  ${ABSL_DEFAULT_LINKOPTS}
537
555
  DEPS
538
556
  absl::config
557
+ absl::type_traits
558
+ absl::bits
559
+ absl::int128
539
560
  )
540
561
 
541
562
  # Internal-only target, do not depend on directly.
@@ -553,6 +574,7 @@ absl_cc_library(
553
574
  absl::utility
554
575
  absl::fast_type_id
555
576
  absl::type_traits
577
+ absl::random_mocking_access
556
578
  )
557
579
 
558
580
  # Internal-only target, do not depend on directly.
@@ -852,7 +874,6 @@ absl_cc_library(
852
874
  absl::random_internal_platform
853
875
  absl::random_internal_randen_hwaes_impl
854
876
  absl::config
855
- absl::optional
856
877
  )
857
878
 
858
879
  # Internal-only target, do not depend on directly.
@@ -97,7 +97,7 @@ class DefaultConstructorSeedSeq {};
97
97
  template <typename Engine, typename SSeq = DefaultConstructorSeedSeq>
98
98
  Engine make_engine() {
99
99
  constexpr bool use_default_initialization =
100
- std::is_same_v<SSeq, DefaultConstructorSeedSeq>;
100
+ std::is_same_v<SSeq, DefaultConstructorSeedSeq>;
101
101
  if constexpr (use_default_initialization) {
102
102
  return Engine();
103
103
  } else {
@@ -282,7 +282,7 @@ beta_distribution<RealType>::AlgorithmJoehnk(
282
282
  using random_internal::GeneratePositiveTag;
283
283
  using random_internal::GenerateRealFromBits;
284
284
  using real_type =
285
- absl::conditional_t<std::is_same<RealType, float>::value, float, double>;
285
+ std::conditional_t<std::is_same<RealType, float>::value, float, double>;
286
286
 
287
287
  // Based on Joehnk, M. D. Erzeugung von betaverteilten und gammaverteilten
288
288
  // Zufallszahlen. Metrika 8.1 (1964): 5-15.
@@ -340,7 +340,7 @@ beta_distribution<RealType>::AlgorithmCheng(
340
340
  using random_internal::GeneratePositiveTag;
341
341
  using random_internal::GenerateRealFromBits;
342
342
  using real_type =
343
- absl::conditional_t<std::is_same<RealType, float>::value, float, double>;
343
+ std::conditional_t<std::is_same<RealType, float>::value, float, double>;
344
344
 
345
345
  // Based on Cheng, Russell CH. Generating beta variates with nonintegral
346
346
  // shape parameters. Communications of the ACM 21.4 (1978): 317-322.