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
@@ -63,6 +63,7 @@
63
63
  #include <list>
64
64
  #include <map>
65
65
  #include <memory>
66
+ #include <optional>
66
67
  #include <set>
67
68
  #include <string>
68
69
  #include <string_view>
@@ -71,12 +72,14 @@
71
72
  #include <unordered_map>
72
73
  #include <unordered_set>
73
74
  #include <utility>
75
+ #include <variant>
74
76
  #include <vector>
75
77
 
76
78
  #include "absl/base/attributes.h"
77
79
  #include "absl/base/internal/endian.h"
78
80
  #include "absl/base/internal/unaligned_access.h"
79
81
  #include "absl/base/optimization.h"
82
+ #include "absl/base/options.h"
80
83
  #include "absl/base/port.h"
81
84
  #include "absl/container/fixed_array.h"
82
85
  #include "absl/hash/internal/city.h"
@@ -94,6 +97,10 @@
94
97
  #include <filesystem> // NOLINT
95
98
  #endif
96
99
 
100
+ // We are allowed to use a non-portable hardware-accelerated implementation in
101
+ // headers if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
102
+ #if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
103
+
97
104
  // 32-bit builds with SSE 4.2 do not have _mm_crc32_u64, so the
98
105
  // __x86_64__ condition is necessary.
99
106
  #if defined(__SSE4_2__) && defined(__x86_64__)
@@ -104,7 +111,10 @@
104
111
  #define ABSL_HASH_INTERNAL_CRC32_U32 _mm_crc32_u32
105
112
  #define ABSL_HASH_INTERNAL_CRC32_U8 _mm_crc32_u8
106
113
 
107
- #elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__)
114
+ // 32-bit builds with AVX do not have _mm_crc32_u64, so the _M_X64 condition is
115
+ // necessary.
116
+ #elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__) && \
117
+ defined(_M_X64)
108
118
 
109
119
  // MSVC AVX (/arch:AVX) implies SSE 4.2.
110
120
  #include <intrin.h>
@@ -124,6 +134,15 @@
124
134
  #define ABSL_HASH_INTERNAL_CRC32_U32 __crc32cw
125
135
  #define ABSL_HASH_INTERNAL_CRC32_U8 __crc32cb
126
136
 
137
+ #endif // Platform tests
138
+
139
+ #endif // ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
140
+
141
+
142
+ #if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY == 1
143
+ #ifndef ABSL_HASH_INTERNAL_HAS_CRC32
144
+ #error "Hardware acceleration is required by ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY but not supported on this platform; see absl/base/options.h"
145
+ #endif
127
146
  #endif
128
147
 
129
148
  namespace absl {
@@ -399,7 +418,7 @@ struct HashWithSeed {
399
418
  // Convenience function that combines `hash_state` with the byte representation
400
419
  // of `value`.
401
420
  template <typename H, typename T,
402
- absl::enable_if_t<FitsIn64Bits<T>::value, int> = 0>
421
+ std::enable_if_t<FitsIn64Bits<T>::value, int> = 0>
403
422
  H hash_bytes(H hash_state, const T& value) {
404
423
  const unsigned char* start = reinterpret_cast<const unsigned char*>(&value);
405
424
  uint64_t v;
@@ -416,7 +435,7 @@ H hash_bytes(H hash_state, const T& value) {
416
435
  return CombineRaw()(std::move(hash_state), v);
417
436
  }
418
437
  template <typename H, typename T,
419
- absl::enable_if_t<!FitsIn64Bits<T>::value, int> = 0>
438
+ std::enable_if_t<!FitsIn64Bits<T>::value, int> = 0>
420
439
  H hash_bytes(H hash_state, const T& value) {
421
440
  const unsigned char* start = reinterpret_cast<const unsigned char*>(&value);
422
441
  return H::combine_contiguous(std::move(hash_state), start, sizeof(value));
@@ -585,7 +604,7 @@ AbslHashValue(H hash_state, const std::pair<T1, T2>& p) {
585
604
  // Helper function for hashing a tuple. The third argument should
586
605
  // be an index_sequence running from 0 to tuple_size<Tuple> - 1.
587
606
  template <typename H, typename Tuple, size_t... Is>
588
- H hash_tuple(H hash_state, const Tuple& t, absl::index_sequence<Is...>) {
607
+ H hash_tuple(H hash_state, const Tuple& t, std::index_sequence<Is...>) {
589
608
  return H::combine(std::move(hash_state), std::get<Is>(t)...);
590
609
  }
591
610
 
@@ -596,11 +615,11 @@ template <typename H, typename... Ts>
596
615
  // for now.
597
616
  H
598
617
  #else // _MSC_VER
599
- typename std::enable_if<absl::conjunction<is_hashable<Ts>...>::value, H>::type
618
+ typename std::enable_if<std::conjunction<is_hashable<Ts>...>::value, H>::type
600
619
  #endif // _MSC_VER
601
620
  AbslHashValue(H hash_state, const std::tuple<Ts...>& t) {
602
621
  return hash_internal::hash_tuple(std::move(hash_state), t,
603
- absl::make_index_sequence<sizeof...(Ts)>());
622
+ std::make_index_sequence<sizeof...(Ts)>());
604
623
  }
605
624
 
606
625
  // -----------------------------------------------------------------------------
@@ -645,7 +664,7 @@ H AbslHashValue(H hash_state, absl::string_view str) {
645
664
 
646
665
  // Support std::wstring, std::u16string and std::u32string.
647
666
  template <typename Char, typename Alloc, typename H,
648
- typename = absl::enable_if_t<std::is_same<Char, wchar_t>::value ||
667
+ typename = std::enable_if_t<std::is_same<Char, wchar_t>::value ||
649
668
  std::is_same<Char, char16_t>::value ||
650
669
  std::is_same<Char, char32_t>::value>>
651
670
  H AbslHashValue(
@@ -656,7 +675,7 @@ H AbslHashValue(
656
675
 
657
676
  // Support std::wstring_view, std::u16string_view and std::u32string_view.
658
677
  template <typename Char, typename H,
659
- typename = absl::enable_if_t<std::is_same<Char, wchar_t>::value ||
678
+ typename = std::enable_if_t<std::is_same<Char, wchar_t>::value ||
660
679
  std::is_same<Char, char16_t>::value ||
661
680
  std::is_same<Char, char32_t>::value>>
662
681
  H AbslHashValue(H hash_state, std::basic_string_view<Char> str) {
@@ -675,7 +694,7 @@ H AbslHashValue(H hash_state, std::basic_string_view<Char> str) {
675
694
  // Support std::filesystem::path. The SFINAE is required because some string
676
695
  // types are implicitly convertible to std::filesystem::path.
677
696
  template <typename Path, typename H,
678
- typename = absl::enable_if_t<
697
+ typename = std::enable_if_t<
679
698
  std::is_same_v<Path, std::filesystem::path>>>
680
699
  H AbslHashValue(H hash_state, const Path& path) {
681
700
  // This is implemented by deferring to the standard library to compute the
@@ -895,10 +914,10 @@ typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
895
914
  return H::combine(std::move(hash_state), opt.get());
896
915
  }
897
916
 
898
- // AbslHashValue for hashing absl::optional
917
+ // AbslHashValue for hashing std::optional
899
918
  template <typename H, typename T>
900
919
  typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
901
- H hash_state, const absl::optional<T>& opt) {
920
+ H hash_state, const std::optional<T>& opt) {
902
921
  if (opt) hash_state = H::combine(std::move(hash_state), *opt);
903
922
  return H::combine(std::move(hash_state), opt.has_value());
904
923
  }
@@ -912,12 +931,12 @@ struct VariantVisitor {
912
931
  }
913
932
  };
914
933
 
915
- // AbslHashValue for hashing absl::variant
934
+ // AbslHashValue for hashing std::variant
916
935
  template <typename H, typename... T>
917
- typename std::enable_if<conjunction<is_hashable<T>...>::value, H>::type
918
- AbslHashValue(H hash_state, const absl::variant<T...>& v) {
936
+ typename std::enable_if<std::conjunction<is_hashable<T>...>::value, H>::type
937
+ AbslHashValue(H hash_state, const std::variant<T...>& v) {
919
938
  if (!v.valueless_by_exception()) {
920
- hash_state = absl::visit(VariantVisitor<H>{std::move(hash_state)}, v);
939
+ hash_state = std::visit(VariantVisitor<H>{std::move(hash_state)}, v);
921
940
  }
922
941
  return H::combine(std::move(hash_state), v.index());
923
942
  }
@@ -1057,10 +1076,51 @@ inline uint32_t Read1To3(const unsigned char* p, size_t len) {
1057
1076
  return mem0 | mem1;
1058
1077
  }
1059
1078
 
1079
+ #ifdef ABSL_HASH_INTERNAL_HAS_CRC32
1080
+
1081
+ ABSL_ATTRIBUTE_ALWAYS_INLINE inline uint64_t CombineRawImpl(uint64_t state,
1082
+ uint64_t value) {
1083
+ // We use a union to access the high and low 32 bits of the state.
1084
+ union {
1085
+ uint64_t u64;
1086
+ struct {
1087
+ #ifdef ABSL_IS_LITTLE_ENDIAN
1088
+ uint32_t low, high;
1089
+ #else // big endian
1090
+ uint32_t high, low;
1091
+ #endif
1092
+ } u32s;
1093
+ } s;
1094
+ s.u64 = state;
1095
+ // The general idea here is to do two CRC32 operations in parallel using the
1096
+ // low and high 32 bits of state as CRC states. Note that: (1) when absl::Hash
1097
+ // is inlined into swisstable lookups, we know that the seed's high bits are
1098
+ // zero so s.u32s.high is available immediately. (2) We chose to multiply
1099
+ // value by 3 for the low CRC because (a) multiplication by 3 can be done in 1
1100
+ // cycle on x86/ARM and (b) multiplication has carry bits so it's nonlinear in
1101
+ // GF(2) and therefore ensures that the two CRCs are independent (unlike bit
1102
+ // rotation, XOR, etc). (3) We also tried using addition instead of
1103
+ // multiplication by 3, but (a) code size is larger and (b) if the input keys
1104
+ // all have 0s in the bits where the addition constant has 1s, then the
1105
+ // addition is equivalent to XOR and linear in GF(2). (4) The union makes it
1106
+ // easy for the compiler to understand that the high and low CRC states are
1107
+ // independent from each other so that when CombineRawImpl is repeated (e.g.
1108
+ // for std::pair<size_t, size_t>), the CRC chains can run in parallel. We
1109
+ // originally tried using bswaps rather than shifting by 32 bits (to get from
1110
+ // high to low bits) because bswap is one byte smaller in code size, but the
1111
+ // compiler couldn't understand that the CRC chains were independent.
1112
+ s.u32s.high =
1113
+ static_cast<uint32_t>(ABSL_HASH_INTERNAL_CRC32_U64(s.u32s.high, value));
1114
+ s.u32s.low = static_cast<uint32_t>(
1115
+ ABSL_HASH_INTERNAL_CRC32_U64(s.u32s.low, 3 * value));
1116
+ return s.u64;
1117
+ }
1118
+ #else // ABSL_HASH_INTERNAL_HAS_CRC32
1060
1119
  ABSL_ATTRIBUTE_ALWAYS_INLINE inline uint64_t CombineRawImpl(uint64_t state,
1061
1120
  uint64_t value) {
1062
1121
  return Mix(state ^ value, kMul);
1063
1122
  }
1123
+ #endif // ABSL_HASH_INTERNAL_HAS_CRC32
1064
1124
 
1065
1125
  // Slow dispatch path for calls to CombineContiguousImpl with a size argument
1066
1126
  // larger than inlined size. Has the same effect as calling
@@ -1219,8 +1279,7 @@ inline uint64_t CombineContiguousImpl(
1219
1279
  }
1220
1280
  #endif // ABSL_HASH_INTERNAL_HAS_CRC32
1221
1281
 
1222
- #if defined(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE) && \
1223
- ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
1282
+ #if defined(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE)
1224
1283
  #define ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_ 1
1225
1284
  #else
1226
1285
  #define ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_ 0
@@ -1254,14 +1313,14 @@ struct HashSelect {
1254
1313
  struct UniquelyRepresentedProbe {
1255
1314
  template <typename H, typename T>
1256
1315
  static auto Invoke(H state, const T& value)
1257
- -> absl::enable_if_t<is_uniquely_represented<T>::value, H> {
1316
+ -> std::enable_if_t<is_uniquely_represented<T>::value, H> {
1258
1317
  return hash_internal::hash_bytes(std::move(state), value);
1259
1318
  }
1260
1319
  };
1261
1320
 
1262
1321
  struct HashValueProbe {
1263
1322
  template <typename H, typename T>
1264
- static auto Invoke(H state, const T& value) -> absl::enable_if_t<
1323
+ static auto Invoke(H state, const T& value) -> std::enable_if_t<
1265
1324
  std::is_same<H,
1266
1325
  decltype(AbslHashValue(std::move(state), value))>::value,
1267
1326
  H> {
@@ -1272,7 +1331,7 @@ struct HashSelect {
1272
1331
  struct LegacyHashProbe {
1273
1332
  #if ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_
1274
1333
  template <typename H, typename T>
1275
- static auto Invoke(H state, const T& value) -> absl::enable_if_t<
1334
+ static auto Invoke(H state, const T& value) -> std::enable_if_t<
1276
1335
  std::is_convertible<
1277
1336
  decltype(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE::hash<T>()(value)),
1278
1337
  size_t>::value,
@@ -1287,7 +1346,7 @@ struct HashSelect {
1287
1346
  struct StdHashProbe {
1288
1347
  template <typename H, typename T>
1289
1348
  static auto Invoke(H state, const T& value)
1290
- -> absl::enable_if_t<type_traits_internal::IsHashable<T>::value, H> {
1349
+ -> std::enable_if_t<type_traits_internal::IsHashable<T>::value, H> {
1291
1350
  return hash_internal::hash_bytes(std::move(state), std::hash<T>{}(value));
1292
1351
  }
1293
1352
  };
@@ -1309,7 +1368,7 @@ struct HashSelect {
1309
1368
  // Probe each implementation in order.
1310
1369
  // disjunction provides short circuiting wrt instantiation.
1311
1370
  template <typename T>
1312
- using Apply = absl::disjunction< //
1371
+ using Apply = std::disjunction< //
1313
1372
  Probe<WeaklyMixedIntegerProbe, T>, //
1314
1373
  Probe<UniquelyRepresentedProbe, T>, //
1315
1374
  Probe<HashValueProbe, T>, //
@@ -1325,8 +1384,8 @@ struct is_hashable
1325
1384
  class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
1326
1385
  template <typename T>
1327
1386
  using IntegralFastPath =
1328
- conjunction<std::is_integral<T>, is_uniquely_represented<T>,
1329
- FitsIn64Bits<T>>;
1387
+ std::conjunction<std::is_integral<T>, is_uniquely_represented<T>,
1388
+ FitsIn64Bits<T>>;
1330
1389
 
1331
1390
  public:
1332
1391
  // Move only
@@ -1354,13 +1413,13 @@ class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
1354
1413
  // Otherwise we would be instantiating and calling dozens of functions for
1355
1414
  // something that is just one multiplication and a couple xor's.
1356
1415
  // The result should be the same as running the whole algorithm, but faster.
1357
- template <typename T, absl::enable_if_t<IntegralFastPath<T>::value, int> = 0>
1416
+ template <typename T, std::enable_if_t<IntegralFastPath<T>::value, int> = 0>
1358
1417
  static size_t hash_with_seed(T value, size_t seed) {
1359
1418
  return static_cast<size_t>(
1360
1419
  CombineRawImpl(seed, static_cast<std::make_unsigned_t<T>>(value)));
1361
1420
  }
1362
1421
 
1363
- template <typename T, absl::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
1422
+ template <typename T, std::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
1364
1423
  static size_t hash_with_seed(const T& value, size_t seed) {
1365
1424
  return static_cast<size_t>(combine(MixingHashState{seed}, value).state_);
1366
1425
  }
@@ -1482,7 +1541,7 @@ struct HashImpl {
1482
1541
 
1483
1542
  template <typename T>
1484
1543
  struct Hash
1485
- : absl::conditional_t<is_hashable<T>::value, HashImpl<T>, PoisonedHash> {};
1544
+ : std::conditional_t<is_hashable<T>::value, HashImpl<T>, PoisonedHash> {};
1486
1545
 
1487
1546
  template <typename H>
1488
1547
  template <typename T, typename... Ts>
@@ -368,7 +368,7 @@ TEST(LowLevelHashTest, VerifyGolden) {
368
368
  << "We only maintain golden data for little endian 64 bit systems with "
369
369
  "128 bit intristics.";
370
370
  }
371
- #elif defined(__SSE4_2__) && defined(__AES__)
371
+ #elif (defined(__SSE4_2__) && defined(__AES__))
372
372
  constexpr uint64_t kGolden[kNumGoldenOutputs] = {
373
373
  0xd6bdb2c9ba5e55f2, 0xffd3e23d4115a8ae, 0x2c3218ef486127de,
374
374
  0x554fa7f3a262b886, 0x06304cbf82e312d3, 0x490b3fb5af80622c,
@@ -403,6 +403,41 @@ TEST(LowLevelHashTest, VerifyGolden) {
403
403
  0x724110fb509e4376, 0xebe74b016b5cfb88, 0x3b0fe11dcf175fc9,
404
404
  0x20b737b9c0490538, 0x0db21c429b45fd17,
405
405
  };
406
+ #elif (defined(ABSL_INTERNAL_HAVE_ARM_NEON) && defined(__ARM_FEATURE_CRYPTO))
407
+ constexpr uint64_t kGolden[kNumGoldenOutputs] = {
408
+ 0xe3de56d839559570, 0x77afbb8906ccf19a, 0xe66e02ad8e92c12f,
409
+ 0x36cc6f2fe751bc64, 0xf4d28aea3ed69ade, 0xf246fd6a4ca33ab3,
410
+ 0xcae9edaf829a6575, 0x11fa7c88bf4cc73a, 0x98c47bfbae3d8c02,
411
+ 0x27545ea34451a56f, 0x14b4c1a27d26d2b2, 0x7613ca9857e7cbe0,
412
+ 0x02efc8f12e71bb88, 0x9c1a83672eee7d5b, 0x2b89aa9cfde6d9b3,
413
+ 0xabeb2cf68ab463dc, 0xfb3db51d62d71d28, 0x3177cc3e0927e344,
414
+ 0xb5798fc1d348beb6, 0x212c471510859095, 0x191df651c270548d,
415
+ 0x1b15d6b8e8cc3105, 0xdc51a9e369fbab13, 0xb674fd0372fab5aa,
416
+ 0x048aec21666fc8d5, 0x8b15383bc4a7e244, 0xf8945c253a43469f,
417
+ 0x513f31e6bf240064, 0xc37c6225063c266f, 0x2a6747f8952ec44c,
418
+ 0xa7a0f11d3607f268, 0x9b58d5c889166fb3, 0xb75ca76a67212a39,
419
+ 0x9a71a476bf4933f3, 0x3f049a71b475edf7, 0x7a49c8907a278e5e,
420
+ 0xf9a78757d9355ac9, 0xbe1bd9d70ee46398, 0x600e24a76a359a39,
421
+ 0x235905ade793a5f0, 0x940c36e0df8ec13a, 0x9300c551cb93a286,
422
+ 0x5e265b90e4828aba, 0x42dee1626c647735, 0x8cd32910c1f17a8c,
423
+ 0x642f44f3f8290fb0, 0xb73ee167c5f8655e, 0x9d05deadb2a47fe4,
424
+ 0x03b359dff5351708, 0x19a6427c0ee9c907, 0x0692dc026847e0d9,
425
+ 0xe4023ba608b25f1e, 0xf438ad7eea71dfc1, 0x205120c9355d4ac8,
426
+ 0xd4cf2cb1f412c846, 0x82d7d98b87ecf53a, 0x2cc779469cc3d690,
427
+ 0xf93545883141ce8e, 0x0f794c869b82a28a, 0x014e9fccfe7f7d9e,
428
+ 0xb6953652e49e4e0a, 0x68035eabb056e9b6, 0xf1b3a6847e610274,
429
+ 0x59dc584137c0cb55, 0xafb36238ad797ec6, 0xb9f331777a030104,
430
+ 0x2899a97f98140d3b, 0x0ae342d8d4f80ad0, 0xcfb25544c873fbd1,
431
+ 0xcb2498ca84b01a4c, 0x1a50e4a0d8db8406, 0x0afbf05b7c8c146e,
432
+ 0x1b45ee2ee670d71b, 0xef9204d9fcc31075, 0x2a5750d2ef558495,
433
+ 0x8e151888d0ce024e, 0x26882404dd58bcc9, 0x6c830f947bf2195f,
434
+ 0x2ff0c1fa64bf8cfb, 0x8f108f869e11d224, 0x7ce757787a04fd76,
435
+ 0xee55da944ebbbd85, 0x43563645bb00dcd0, 0x643848bf73336681,
436
+ 0x050f54d0478ffd52, 0xc5c1bff1bc3c008c, 0x48fd0f2729c9402d,
437
+ 0x7685b990e3e264af, 0x940dccac3264ed16, 0x688f94ee88c9ba90,
438
+ 0xca112c7825f3944b, 0x584cb5ddba130be2, 0xb7ced01f7140dff6,
439
+ 0xc10dcbb4e77168e6, 0xb5ea4360351ebaef,
440
+ };
406
441
  #else
407
442
  constexpr uint64_t kGolden[kNumGoldenOutputs] = {
408
443
  0x669da02f8d009e0f, 0xceb19bf2255445cd, 0x0e746992d6d43a7c,
@@ -18,8 +18,11 @@
18
18
  #include <algorithm>
19
19
  #include <cstddef>
20
20
  #include <cstdint>
21
+ #include <memory>
22
+ #include <optional>
21
23
  #include <ostream>
22
24
  #include <string>
25
+ #include <type_traits>
23
26
  #include <vector>
24
27
 
25
28
  #include "absl/hash/hash.h"
@@ -44,7 +47,7 @@ namespace hash_internal {
44
47
  template <typename T>
45
48
  class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
46
49
  public:
47
- SpyHashStateImpl() : error_(std::make_shared<absl::optional<std::string>>()) {
50
+ SpyHashStateImpl() : error_(std::make_shared<std::optional<std::string>>()) {
48
51
  static_assert(std::is_void<T>::value, "");
49
52
  }
50
53
 
@@ -198,7 +201,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
198
201
  return state;
199
202
  }
200
203
 
201
- absl::optional<std::string> error() const {
204
+ std::optional<std::string> error() const {
202
205
  if (moved_from_) {
203
206
  return "Returned a moved-from instance of the hash state object.";
204
207
  }
@@ -212,7 +215,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
212
215
 
213
216
  struct UnorderedCombinerCallback {
214
217
  std::vector<std::string> element_hash_representations;
215
- std::shared_ptr<absl::optional<std::string>> error;
218
+ std::shared_ptr<std::optional<std::string>> error;
216
219
 
217
220
  // The inner spy can have a different type.
218
221
  template <typename U>
@@ -242,7 +245,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
242
245
  // This is a shared_ptr because we want all instances of the particular
243
246
  // SpyHashState run to share the field. This way we can set the error for
244
247
  // use-after-move and all the copies will see it.
245
- std::shared_ptr<absl::optional<std::string>> error_;
248
+ std::shared_ptr<std::optional<std::string>> error_;
246
249
  bool moved_from_ = false;
247
250
  };
248
251
 
@@ -267,7 +270,7 @@ bool RunOnStartup<f>::run = (f(), true);
267
270
  template <
268
271
  typename T, typename U,
269
272
  // Only trigger for when (T != U),
270
- typename = absl::enable_if_t<!std::is_same<T, U>::value>,
273
+ typename = std::enable_if_t<!std::is_same<T, U>::value>,
271
274
  // This statement works in two ways:
272
275
  // - First, it instantiates RunOnStartup and forces the initialization of
273
276
  // `run`, which set the global variable.
@@ -209,6 +209,7 @@ cc_library(
209
209
  "//absl/strings",
210
210
  "//absl/strings:internal",
211
211
  "//absl/types:optional",
212
+ "//absl/types:source_location",
212
213
  "//absl/utility",
213
214
  ],
214
215
  )
@@ -285,7 +286,6 @@ cc_test(
285
286
  ":vlog_is_on",
286
287
  "//absl/base:log_severity",
287
288
  "//absl/flags:flag",
288
- "//absl/types:optional",
289
289
  "@googletest//:gtest",
290
290
  "@googletest//:gtest_main",
291
291
  ],
@@ -405,6 +405,7 @@ cc_test(
405
405
  "//absl/log/internal:test_helpers",
406
406
  "//absl/log/internal:test_matchers",
407
407
  "//absl/strings",
408
+ "//absl/types:source_location",
408
409
  "@googletest//:gtest",
409
410
  "@googletest//:gtest_main",
410
411
  ],
@@ -501,7 +502,7 @@ cc_test(
501
502
  "//absl/log/internal:test_matchers",
502
503
  "//absl/strings",
503
504
  "//absl/strings:str_format",
504
- "//absl/types:optional",
505
+ "//absl/types:source_location",
505
506
  "@googletest//:gtest",
506
507
  "@googletest//:gtest_main",
507
508
  ],
@@ -566,6 +567,7 @@ cc_test(
566
567
  "//absl/log/internal:test_helpers",
567
568
  "//absl/log/internal:test_matchers",
568
569
  "//absl/strings",
570
+ "//absl/types:source_location",
569
571
  "@googletest//:gtest",
570
572
  "@googletest//:gtest_main",
571
573
  ],
@@ -586,6 +588,7 @@ cc_test(
586
588
  "//absl/log/internal:test_matchers",
587
589
  "//absl/strings",
588
590
  "//absl/time",
591
+ "//absl/types:source_location",
589
592
  "@googletest//:gtest",
590
593
  "@googletest//:gtest_main",
591
594
  ],
@@ -215,6 +215,7 @@ absl_cc_library(
215
215
  absl::memory
216
216
  absl::nullability
217
217
  absl::raw_logging_internal
218
+ absl::source_location
218
219
  absl::span
219
220
  absl::strerror
220
221
  absl::strings
@@ -632,6 +633,7 @@ absl_cc_library(
632
633
  absl::absl_log
633
634
  absl::log_severity
634
635
  absl::optional
636
+ absl::source_location
635
637
  absl::strings
636
638
  absl::strings_internal
637
639
  absl::utility
@@ -757,7 +759,6 @@ absl_cc_library(
757
759
  absl::nullability
758
760
  absl::strings
759
761
  absl::synchronization
760
- absl::optional
761
762
  )
762
763
 
763
764
  absl_cc_library(
@@ -806,7 +807,6 @@ absl_cc_test(
806
807
  absl::vlog_is_on
807
808
  absl::log_severity
808
809
  absl::flags
809
- absl::optional
810
810
  GTest::gmock_main
811
811
  )
812
812
 
@@ -1016,8 +1016,8 @@ absl_cc_test(
1016
1016
  absl::config
1017
1017
  absl::log
1018
1018
  absl::log_internal_test_matchers
1019
- absl::optional
1020
1019
  absl::scoped_mock_log
1020
+ absl::source_location
1021
1021
  absl::str_format
1022
1022
  absl::strings
1023
1023
  GTest::gmock_main
@@ -1082,6 +1082,7 @@ absl_cc_test(
1082
1082
  absl::log_streamer
1083
1083
  absl::log_severity
1084
1084
  absl::scoped_mock_log
1085
+ absl::source_location
1085
1086
  absl::strings
1086
1087
  GTest::gmock_main
1087
1088
  )
@@ -1102,6 +1103,7 @@ absl_cc_test(
1102
1103
  absl::log_internal_test_matchers
1103
1104
  absl::log_sink
1104
1105
  absl::scoped_mock_log
1106
+ absl::source_location
1105
1107
  absl::strings
1106
1108
  absl::time
1107
1109
  GTest::gmock_main
@@ -63,8 +63,6 @@
63
63
  #include "absl/log/internal/vlog_config.h" // IWYU pragma: export
64
64
  #include "absl/strings/string_view.h"
65
65
 
66
- // IWYU pragma: private, include "absl/log/log.h"
67
-
68
66
  // This is expanded at the callsite to allow the compiler to optimize
69
67
  // always-false cases out of the build.
70
68
  // An ABSL_MAX_VLOG_VERBOSITY of 2 means that VLOG(3) and above should never
@@ -39,6 +39,9 @@ licenses(["notice"])
39
39
 
40
40
  package_group(
41
41
  name = "internal_users",
42
+ includes = [
43
+ "//absl:friends",
44
+ ],
42
45
  packages = [
43
46
  "//absl/log",
44
47
  ],
@@ -105,6 +108,7 @@ cc_library(
105
108
  copts = ABSL_DEFAULT_COPTS,
106
109
  linkopts = ABSL_DEFAULT_LINKOPTS,
107
110
  visibility = [
111
+ "//absl:friends",
108
112
  "//absl/log:__pkg__",
109
113
  ],
110
114
  deps = [
@@ -118,6 +122,11 @@ cc_library(
118
122
  hdrs = ["flags.h"],
119
123
  copts = ABSL_DEFAULT_COPTS,
120
124
  linkopts = ABSL_DEFAULT_LINKOPTS,
125
+ visibility = [
126
+ ":internal_users",
127
+ "//absl:friends",
128
+ "//absl/status:__pkg__",
129
+ ],
121
130
  deps = [
122
131
  "//absl/flags:flag",
123
132
  ],
@@ -150,6 +159,7 @@ cc_library(
150
159
  copts = ABSL_DEFAULT_COPTS,
151
160
  linkopts = ABSL_DEFAULT_LINKOPTS,
152
161
  visibility = [
162
+ "//absl:friends",
153
163
  "//absl/log:__pkg__",
154
164
  ],
155
165
  deps = [
@@ -182,6 +192,7 @@ cc_library(
182
192
  copts = ABSL_DEFAULT_COPTS,
183
193
  linkopts = ABSL_DEFAULT_LINKOPTS,
184
194
  visibility = [
195
+ "//absl:friends",
185
196
  "//absl/log:__pkg__",
186
197
  ],
187
198
  deps = [
@@ -210,6 +221,7 @@ cc_library(
210
221
  "//absl/strings",
211
222
  "//absl/strings:internal",
212
223
  "//absl/time",
224
+ "//absl/types:source_location",
213
225
  "//absl/types:span",
214
226
  ],
215
227
  )
@@ -458,7 +470,9 @@ cc_library(
458
470
  copts = ABSL_DEFAULT_COPTS,
459
471
  linkopts = ABSL_DEFAULT_LINKOPTS,
460
472
  visibility = [
473
+ "//absl:friends",
461
474
  "//absl/log:__subpackages__",
475
+ "//absl/status:__pkg__",
462
476
  ],
463
477
  deps = [
464
478
  ":fnmatch",
@@ -470,7 +484,6 @@ cc_library(
470
484
  "//absl/memory",
471
485
  "//absl/strings",
472
486
  "//absl/synchronization",
473
- "//absl/types:optional",
474
487
  ],
475
488
  )
476
489
 
@@ -556,6 +569,7 @@ cc_library(
556
569
  linkopts = ABSL_DEFAULT_LINKOPTS,
557
570
  visibility = [
558
571
  "//absl:__subpackages__",
572
+ "//absl:friends",
559
573
  ],
560
574
  deps = [
561
575
  "//absl/base:config",
@@ -227,7 +227,8 @@ void LogMessage::LogMessageData::InitializeEncodingAndFormat() {
227
227
  EncodeVarint(EventTag::kSeverity,
228
228
  ProtoSeverity(entry.log_severity(), entry.verbosity()),
229
229
  &encoded_remaining());
230
- EncodeVarint(EventTag::kThreadId, entry.tid(), &encoded_remaining());
230
+ EncodeVarint(EventTag::kThreadId, static_cast<uint64_t>(entry.tid()),
231
+ &encoded_remaining());
231
232
  }
232
233
 
233
234
  void LogMessage::LogMessageData::FinalizeEncodingAndFormat() {
@@ -278,8 +279,8 @@ LogMessage::LogMessage(const char* absl_nonnull file, int line,
278
279
  : LogMessage(absl::string_view(file), line, severity) {}
279
280
  LogMessage::LogMessage(absl::string_view file, int line,
280
281
  absl::LogSeverity severity)
281
- : data_(absl::make_unique<LogMessageData>(file, line, severity,
282
- absl::Now())) {
282
+ : data_(
283
+ std::make_unique<LogMessageData>(file, line, severity, absl::Now())) {
283
284
  data_->first_fatal = false;
284
285
  data_->is_perror = false;
285
286
  data_->fail_quietly = false;
@@ -720,7 +721,7 @@ void LogMessage::CopyToEncodedBufferWithStructuredProtoField(
720
721
  }
721
722
 
722
723
  // Write the string, truncating if necessary.
723
- if (!EncodeStringTruncate(ValueTag::kString, str, &encoded_remaining_copy)) {
724
+ if (!EncodeStringTruncate(tag_value, str, &encoded_remaining_copy)) {
724
725
  // The length of the string itself did not fit; zero `encoded_remaining()`
725
726
  // so the value is not encoded at all.
726
727
  data_->encoded_remaining().remove_suffix(data_->encoded_remaining().size());
@@ -50,6 +50,8 @@
50
50
  #include "absl/strings/has_absl_stringify.h"
51
51
  #include "absl/strings/string_view.h"
52
52
  #include "absl/time/time.h"
53
+ #include "absl/types/source_location.h"
54
+ #include "absl/types/span.h"
53
55
 
54
56
  namespace absl {
55
57
  ABSL_NAMESPACE_BEGIN
@@ -86,6 +88,11 @@ class LogMessage {
86
88
  // Overrides the location inferred from the callsite. The string pointed to
87
89
  // by `file` must be valid until the end of the statement.
88
90
  LogMessage& AtLocation(absl::string_view file, int line);
91
+ // `loc` doesn't default to `absl::SourceLocation::current()` here since the
92
+ // callsite is already the default location for `LOG` statements.
93
+ LogMessage& AtLocation(absl::SourceLocation loc) {
94
+ return AtLocation(loc.file_name(), static_cast<int>(loc.line()));
95
+ }
89
96
  // Omits the prefix from this line. The prefix includes metadata about the
90
97
  // logged data such as source code location and timestamp.
91
98
  LogMessage& NoPrefix();
@@ -172,6 +179,13 @@ class LogMessage {
172
179
  LogMessage& operator<<(wchar_t* absl_nullable v);
173
180
  LogMessage& operator<<(wchar_t v);
174
181
 
182
+ // Overload for absl::SourceLocation or the std::source_location alias.
183
+ LogMessage& operator<<(const absl::SourceLocation& loc) {
184
+ OstreamView view(*data_);
185
+ view.stream() << loc.file_name() << ':' << loc.line();
186
+ return *this;
187
+ }
188
+
175
189
  // Handle stream manipulators e.g. std::endl.
176
190
  LogMessage& operator<<(std::ostream& (*absl_nonnull m)(std::ostream& os));
177
191
  LogMessage& operator<<(std::ios_base& (*absl_nonnull m)(std::ios_base& os));
@@ -125,4 +125,4 @@ class NullStreamFatal final : public NullStream {
125
125
  ABSL_NAMESPACE_END
126
126
  } // namespace absl
127
127
 
128
- #endif // ABSL_LOG_INTERNAL_GLOBALS_H_
128
+ #endif // ABSL_LOG_INTERNAL_NULLSTREAM_H_