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
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Is Abseil the right home for my utility library?
4
4
 
5
- Most often the answer to the question is "no." As both the [About
6
- Abseil](https://abseil.io/about/) page and our [contributing
7
- guidelines](https://github.com/abseil/abseil-cpp/blob/master/CONTRIBUTING.md#contribution-guidelines)
5
+ Most often the answer to the question is "no." As both the
6
+ [About Abseil](https://abseil.io/about/) page and our
7
+ [contributing guidelines](https://github.com/abseil/abseil-cpp/blob/master/CONTRIBUTING.md#contribution-guidelines)
8
8
  explain, Abseil contains a variety of core C++ library code that is widely used
9
9
  at [Google](https://www.google.com/). As such, Abseil's primary purpose is to be
10
10
  used as a dependency by Google's open source C++ projects. While we do hope that
@@ -12,27 +12,24 @@ Abseil is also useful to the C++ community at large, this added constraint also
12
12
  means that we are unlikely to accept a contribution of utility code that isn't
13
13
  already widely used by Google.
14
14
 
15
- ## How to I set the C++ dialect used to build Abseil?
15
+ ## How do I set the C++ dialect used to build Abseil?
16
16
 
17
17
  The short answer is that whatever mechanism you choose, you need to make sure
18
18
  that you set this option consistently at the global level for your entire
19
19
  project. If, for example, you want to set the C++ dialect to C++17, with
20
- [Bazel](https://bazel/build/) as the build system and `gcc` or `clang` as the
21
- compiler, there several ways to do this:
22
- * Pass `--cxxopt=-std=c++17` on the command line (for example, `bazel build
23
- --cxxopt=-std=c++17 ...`)
24
- * Set the environment variable `BAZEL_CXXOPTS` (for example,
25
- `BAZEL_CXXOPTS=-std=c++17`)
26
- * Add `build --cxxopt=-std=c++17` to your [`.bazelrc`
27
- file](https://docs.bazel.build/versions/master/guide.html#bazelrc)
20
+ [Bazel](https://bazel.build/) as the build system and `gcc` or `clang` as the
21
+ compiler, there are several ways to do this: * Pass `--cxxopt=-std=c++17` on the
22
+ command line (for example, `bazel build --cxxopt=-std=c++17 ...`) * Set the
23
+ environment variable `BAZEL_CXXOPTS` (for example, `BAZEL_CXXOPTS=-std=c++17`) *
24
+ Add `build --cxxopt=-std=c++17` to your
25
+ [`.bazelrc` file](https://docs.bazel.build/versions/master/guide.html#bazelrc)
28
26
 
29
27
  If you are using CMake as the build system, you'll need to add a line like
30
- `set(CMAKE_CXX_STANDARD 17)` to your top level `CMakeLists.txt` file. If you
31
- are developing a library designed to be used by other clients, you should
32
- instead leave `CMAKE_CXX_STANDARD` unset and configure the minimum C++ standard
33
- required by each of your library targets via `target_compile_features`. See the
34
- [CMake build
35
- instructions](https://github.com/abseil/abseil-cpp/blob/master/CMake/README.md)
28
+ `set(CMAKE_CXX_STANDARD 17)` to your top level `CMakeLists.txt` file. If you are
29
+ developing a library designed to be used by other clients, you should instead
30
+ leave `CMAKE_CXX_STANDARD` unset and configure the minimum C++ standard required
31
+ by each of your library targets via `target_compile_features`. See the
32
+ [CMake build instructions](https://github.com/abseil/abseil-cpp/blob/master/CMake/README.md)
36
33
  for more information.
37
34
 
38
35
  For a longer answer to this question and to understand why some other approaches
@@ -42,12 +39,12 @@ Abseil?"](#what-is-abi-and-why-dont-you-recommend-using-a-pre-compiled-version-o
42
39
 
43
40
  ## What is ABI and why don't you recommend using a pre-compiled version of Abseil?
44
41
 
45
- For the purposes of this discussion, you can think of
46
- [ABI](https://en.wikipedia.org/wiki/Application_binary_interface) as the
47
- compiled representation of the interfaces in code. This is in contrast to
42
+ For the purposes of this discussion,
43
+ [ABI](https://en.wikipedia.org/wiki/Application_binary_interface) refers to the
44
+ compiled representation of code interfaces. This contrasts with
48
45
  [API](https://en.wikipedia.org/wiki/Application_programming_interface), which
49
- you can think of as the interfaces as defined by the code itself. [Abseil has a
50
- strong promise of API compatibility, but does not make any promise of ABI
46
+ refers to the interfaces defined in the source code. [Abseil has a strong
47
+ promise of API compatibility, but does not make any promise of ABI
51
48
  compatibility](https://abseil.io/about/compatibility). Let's take a look at what
52
49
  this means in practice.
53
50
 
@@ -72,19 +69,19 @@ program may contain conflicting definitions of the same
72
69
  class/function/variable/enum, etc. As a rule, all compile options that affect
73
70
  the ABI of a program need to be applied to the entire build on a global basis.
74
71
 
75
- C++ has something called the [One Definition
76
- Rule](https://en.wikipedia.org/wiki/One_Definition_Rule) (ODR). C++ doesn't
77
- allow multiple definitions of the same class/function/variable/enum, etc. ODR
78
- violations sometimes result in linker errors, but linkers do not always catch
79
- violations. Uncaught ODR violations can result in strange runtime behaviors or
80
- crashes that can be hard to debug.
72
+ C++ has something called the
73
+ [One Definition Rule](https://en.wikipedia.org/wiki/One_Definition_Rule) (ODR).
74
+ C++ doesn't allow multiple definitions of the same class/function/variable/enum,
75
+ etc. ODR violations sometimes result in linker errors, but linkers do not always
76
+ catch violations. Uncaught ODR violations can result in strange runtime
77
+ behaviors or crashes that can be hard to debug.
81
78
 
82
79
  If you build the Abseil library and your code using different compile options
83
80
  that affect ABI, there is a good chance you will run afoul of the One Definition
84
81
  Rule. Examples of GCC compile options that affect ABI include (but aren't
85
82
  limited to) language dialect (e.g. `-std=`), optimization level (e.g. `-O2`),
86
- code generation flags (e.g. `-fexceptions`), and preprocessor defines
87
- (e.g. `-DNDEBUG`).
83
+ code generation flags (e.g. `-fexceptions`), and preprocessor defines (e.g.
84
+ `-DNDEBUG`).
88
85
 
89
86
  If you use a pre-compiled version of Abseil, (for example, from your Linux
90
87
  distribution package manager or from something like
@@ -98,16 +95,16 @@ all packages have been built with consistent compile options. This is one of the
98
95
  reasons we warn against - though do not outright reject - using Abseil as a
99
96
  pre-compiled library.
100
97
 
101
- Another possible way that you might afoul of ABI issues is if you accidentally
102
- include two versions of Abseil in your program. Multiple versions of Abseil can
103
- end up within the same binary if your program uses the Abseil library and
104
- another library also transitively depends on Abseil (resulting in what is
105
- sometimes called the diamond dependency problem). In cases such as this you must
106
- structure your build so that all libraries use the same version of Abseil.
107
- [Abseil's strong promise of API compatibility between
108
- releases](https://abseil.io/about/compatibility) means the latest "HEAD" release
109
- of Abseil is almost certainly the right choice if you are doing as we recommend
110
- and building all of your code from source.
98
+ Another possible way that you might run afoul of ABI issues is if you
99
+ accidentally include two versions of Abseil in your program. Multiple versions
100
+ of Abseil can end up within the same binary if your program uses the Abseil
101
+ library and another library also transitively depends on Abseil (resulting in
102
+ what is sometimes called the diamond dependency problem). In cases such as this
103
+ you must structure your build so that all libraries use the same version of
104
+ Abseil.
105
+ [Abseil's strong promise of API compatibility between releases](https://abseil.io/about/compatibility)
106
+ means the latest "HEAD" release of Abseil is almost certainly the right choice
107
+ if you are doing as we recommend and building all of your code from source.
111
108
 
112
109
  For these reasons we recommend you avoid pre-compiled code and build the Abseil
113
110
  library yourself in a consistent manner with the rest of your code.
@@ -121,47 +118,101 @@ to make it compatible. In practice, the need to use an automated tool is
121
118
  extremely rare. This means that upgrading from one source release to another
122
119
  should be a routine practice that can and should be performed often.
123
120
 
124
- We recommend you update to the [latest commit in the `master` branch of
125
- Abseil](https://github.com/abseil/abseil-cpp/commits/master) as often as
126
- possible. Not only will you pick up bug fixes more quickly, but if you have good
127
- automated testing, you will catch and be able to fix any [Hyrum's
128
- Law](https://www.hyrumslaw.com/) dependency problems on an incremental basis
129
- instead of being overwhelmed by them and having difficulty isolating them if you
130
- wait longer between updates.
131
-
132
- If you are using the [Bazel](https://bazel.build/) build system and its
133
- [external dependencies](https://docs.bazel.build/versions/master/external.html)
134
- feature, updating the
135
- [`http_archive`](https://docs.bazel.build/versions/master/repo/http.html#http_archive)
136
- rule in your
137
- [`WORKSPACE`](https://docs.bazel.build/versions/master/be/workspace.html) for
138
- `com_google_abseil` to point to the [latest commit in the `master` branch of
139
- Abseil](https://github.com/abseil/abseil-cpp/commits/master) is all you need to
140
- do. For example, on February 11, 2020, the latest commit to the master branch
141
- was `98eb410c93ad059f9bba1bf43f5bb916fc92a5ea`. To update to this commit, you
142
- would add the following snippet to your `WORKSPACE` file:
143
-
144
- ```
145
- http_archive(
146
- name = "com_google_absl",
147
- urls = ["https://github.com/abseil/abseil-cpp/archive/98eb410c93ad059f9bba1bf43f5bb916fc92a5ea.zip"], # 2020-02-11T18:50:53Z
148
- strip_prefix = "abseil-cpp-98eb410c93ad059f9bba1bf43f5bb916fc92a5ea",
149
- sha256 = "aabf6c57e3834f8dc3873a927f37eaf69975d4b28117fc7427dfb1c661542a87",
121
+ We recommend you update to the
122
+ [latest commit in the `master` branch of Abseil](https://github.com/abseil/abseil-cpp/commits/master)
123
+ as often as possible. Not only will you pick up bug fixes more quickly, but if
124
+ you have good automated testing, you will catch and be able to fix any
125
+ [Hyrum's Law](https://www.hyrumslaw.com/) dependency problems on an incremental
126
+ basis instead of being overwhelmed by them and having difficulty isolating them
127
+ if you wait longer between updates.
128
+
129
+ If you are using the [Bazel](https://bazel.build/) build system with
130
+ [Bzlmod](https://bazel.build/external/overview#bzlmod), you can use a
131
+ `git_override` in your `MODULE.bazel` file to track the latest commit.
132
+
133
+ For example, to update to the latest commit, you would add (or update) the
134
+ following snippet in your `MODULE.bazel` file:
135
+
136
+ ```starlark
137
+ bazel_dep(name = "abseil-cpp", version = "20260107.1")
138
+
139
+ git_override(
140
+ module_name = "abseil-cpp",
141
+ remote = "https://github.com/abseil/abseil-cpp.git",
142
+ # Replace the following line with the latest commit.
143
+ commit = "6ec9964c325db0610a376b3cb81de073ea6ada90",
150
144
  )
151
145
  ```
152
146
 
153
- To get the `sha256` of this URL, run `curl -sL --output -
154
- https://github.com/abseil/abseil-cpp/archive/98eb410c93ad059f9bba1bf43f5bb916fc92a5ea.zip
155
- | sha256sum -`.
156
-
157
- You can commit the updated `WORKSPACE` file to your source control every time
147
+ You can commit the updated `MODULE.bazel` file to your source control every time
158
148
  you update, and if you have good automated testing, you might even consider
159
149
  automating this.
160
150
 
161
- One thing we don't recommend is using GitHub's `master.zip` files (for example
162
- [https://github.com/abseil/abseil-cpp/archive/master.zip](https://github.com/abseil/abseil-cpp/archive/master.zip)),
163
- which are always the latest commit in the `master` branch, to implement live at
164
- head. Since these `master.zip` URLs are not versioned, you will lose build
165
- reproducibility. In addition, some build systems, including Bazel, will simply
166
- cache this file, which means you won't actually be updating to the latest
167
- release until your cache is cleared or invalidated.
151
+ ## Why do I see strange behaviors when I use Abseil hash tables?
152
+
153
+ Abseil's hash function uses a random seed.
154
+
155
+ Many programmers believe incorrectly that this is a defense against
156
+ [hash flooding](https://en.wikipedia.org/wiki/Collision_attack#Hash_flooding).
157
+ While it does make a hash flooding attack more difficult, Abseil's hash function
158
+ prioritizes speed over thorough mixing (and thus is not cryptographically
159
+ secure), and the current seed implementation is also not cryptographically
160
+ secure. If you are storing a large amount of attacker-controlled data, the most
161
+ reliable defense against hash-flooding is to use a container that does not have
162
+ `O(n)` worst-case behavior.
163
+
164
+ The real reason for hash randomization is to prevent
165
+ [Hyrum's Law](https://www.hyrumslaw.com/) dependencies on iteration order. This
166
+ has allowed us to roll out steady improvements to the implementation without
167
+ breaking users who may have otherwise written code that was dependent on
168
+ ordering or other characteristics.
169
+
170
+ The current implementation uses a global seed, which, if linked incorrectly
171
+ (e.g., static Abseil in multiple DSOs), can cause the ODR violations. If more
172
+ than one seed is linked, different calls to the hash function may return
173
+ different values, rendering hash elements inaccessible, causing crashes, or
174
+ other arbitrarily bad behaviors.
175
+
176
+ We are often asked for a knob to disable hash randomization. The answer is a
177
+ hard "no", even under test or under a flag, because people will find a way to
178
+ force it and allow their code or tests to depend on it. At Google-scale, the
179
+ compute costs that are saved by preserving the ability to improve the
180
+ implementation far outweigh the inconvenience of learning how to write code
181
+ resilient to change.
182
+
183
+ ## How do I use the LLVM Sanitizers with Abseil?
184
+
185
+ LLVM Sanitizers are a suite of powerful, dynamic analysis tools that
186
+ automatically detect various critical bugs during program execution. They work
187
+ by instrumenting the compiled binary and linking a runtime library to intercept
188
+ operations and report issues.
189
+
190
+ We receive many incorrect bug reports from users trying to use the sanitizers.
191
+ The most common cause of these issues is ODR violations in the form of an
192
+ instrumentation mismatch. This happens when users try to link libraries compiled
193
+ with sanitizer instrumentation with uninstrumented libraries. It is important
194
+ that all code in the application is built with the same sanitizer configuration.
195
+
196
+ The easiest way to do this is to use [Bazel](https://bazel.build) and pass the
197
+ sanitizer options on the commandline, but it is important not to overlook the
198
+ importance of avoiding precompiled system libraries, including the C++ standard
199
+ library. For instance,
200
+ [MemorySanitizer requires an instrumented `libc++`](https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo).
201
+
202
+ Since most users are not going to build `libc++` with Bazel, here is a
203
+ MemorySanitizer recipe that currently works (and could easily be tweaked for
204
+ ThreadSanitizer and friends):
205
+
206
+ ```shell
207
+ # From the root of the LLVM source tree, configure libc++ to be instrumented with MSAN:
208
+ cmake -G Ninja -S runtimes -B build_msan -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${HOME}/llvm-msan" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_USE_SANITIZER=MemoryWithOrigins -DLLVM_TARGETS_TO_BUILD="host"
209
+
210
+ # Build and install it into ${HOME}/llvm-msan
211
+ ninja -C build_msan install-cxx install-cxxabi install-unwind
212
+
213
+ # Then build (or test) your code like this:
214
+ bazel test --repo_env=CC=clang --repo_env=BAZEL_CXXOPTS=nostdinc++ --repo_env=BAZEL_LINKOPTS=-L${HOME}/llvm-msan/lib:-lc++:-lc++abi:-lgcc_s:-lm:-Wl,-rpath=${HOME}/llvm-msan/lib --repo_env=CPLUS_INCLUDE_PATH=${HOME}/llvm-msan/include/c++/v1 --copt=-fsanitize=memory --linkopt=-fsanitize=memory --linkopt=-fsanitize-link-c++-runtime ...
215
+ ```
216
+
217
+ You should consider adding these options to a
218
+ [`.bazelrc`](https://bazel.build/run/bazelrc) file to avoid retyping them.
@@ -16,8 +16,7 @@
16
16
 
17
17
  module(
18
18
  name = "abseil-cpp",
19
- version = "20260107.0",
20
- compatibility_level = 1,
19
+ version = "20260526.0",
21
20
  )
22
21
 
23
22
  cc_configure = use_extension("@rules_cc//cc:extensions.bzl",
@@ -25,13 +24,13 @@ cc_configure = use_extension("@rules_cc//cc:extensions.bzl",
25
24
  dev_dependency = True)
26
25
  use_repo(cc_configure, "local_config_cc")
27
26
 
28
- bazel_dep(name = "rules_cc", version = "0.2.9")
29
- bazel_dep(name = "bazel_skylib", version = "1.8.1")
30
- bazel_dep(name = "platforms", version = "1.0.0")
27
+ bazel_dep(name = "rules_cc", version = "0.2.18")
28
+ bazel_dep(name = "bazel_skylib", version = "1.9.0")
29
+ bazel_dep(name = "platforms", version = "1.1.0")
31
30
 
32
31
  bazel_dep(
33
32
  name = "google_benchmark",
34
- version = "1.9.4",
33
+ version = "1.9.5",
35
34
  dev_dependency = True,
36
35
  )
37
36
 
@@ -39,5 +38,5 @@ bazel_dep(
39
38
  # intended to be used by Abseil users depend on GoogleTest.
40
39
  bazel_dep(
41
40
  name = "googletest",
42
- version = "1.17.0",
41
+ version = "1.17.0.bcr.2",
43
42
  )
@@ -60,3 +60,9 @@ selects.config_setting_group(
60
60
  ],
61
61
  visibility = [":__subpackages__"],
62
62
  )
63
+
64
+ # Expose internals to privileged external repositories.
65
+ package_group(
66
+ name = "friends",
67
+ packages = [],
68
+ )
@@ -41,6 +41,7 @@ cc_library(
41
41
  linkopts = ABSL_DEFAULT_LINKOPTS,
42
42
  deps = [
43
43
  "//absl/base:config",
44
+ "//absl/base:core_headers",
44
45
  ],
45
46
  )
46
47
 
@@ -69,6 +70,8 @@ cc_library(
69
70
  ":algorithm",
70
71
  "//absl/base:config",
71
72
  "//absl/base:core_headers",
73
+ "//absl/base:hardening",
74
+ "//absl/base:iterator_traits_internal",
72
75
  "//absl/meta:type_traits",
73
76
  ],
74
77
  )
@@ -84,6 +87,7 @@ cc_test(
84
87
  "//absl/base:config",
85
88
  "//absl/base:core_headers",
86
89
  "//absl/memory",
90
+ "//absl/meta:type_traits",
87
91
  "//absl/random",
88
92
  "//absl/types:span",
89
93
  "@googletest//:gtest",
@@ -23,6 +23,7 @@ absl_cc_library(
23
23
  ${ABSL_DEFAULT_COPTS}
24
24
  DEPS
25
25
  absl::config
26
+ absl::core_headers
26
27
  PUBLIC
27
28
  )
28
29
 
@@ -48,7 +49,9 @@ absl_cc_library(
48
49
  ${ABSL_DEFAULT_COPTS}
49
50
  DEPS
50
51
  absl::algorithm
52
+ absl::hardening
51
53
  absl::config
54
+ absl::iterator_traits_internal
52
55
  absl::core_headers
53
56
  absl::meta
54
57
  PUBLIC
@@ -66,6 +69,7 @@ absl_cc_test(
66
69
  absl::config
67
70
  absl::core_headers
68
71
  absl::memory
72
+ absl::meta
69
73
  absl::random_random
70
74
  absl::span
71
75
  GTest::gmock_main
@@ -27,6 +27,7 @@
27
27
  #include <type_traits>
28
28
 
29
29
  #include "absl/base/config.h"
30
+ #include "absl/base/macros.h"
30
31
 
31
32
  namespace absl {
32
33
  ABSL_NAMESPACE_BEGIN
@@ -40,8 +41,39 @@ ABSL_NAMESPACE_BEGIN
40
41
  //
41
42
  // See the documentation for the STL <algorithm> header for more information:
42
43
  // https://en.cppreference.com/w/cpp/header/algorithm
43
- using std::equal;
44
- using std::rotate;
44
+
45
+ template <class InputIt1, class InputIt2>
46
+ ABSL_DEPRECATE_AND_INLINE()
47
+ constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2) {
48
+ return std::equal(first1, last1, first2);
49
+ }
50
+
51
+ template <class InputIt1, class InputIt2, class BinaryPredicate>
52
+ ABSL_DEPRECATE_AND_INLINE()
53
+ constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2,
54
+ BinaryPredicate p) {
55
+ return std::equal(first1, last1, first2, p);
56
+ }
57
+
58
+ template <class InputIt1, class InputIt2>
59
+ ABSL_DEPRECATE_AND_INLINE()
60
+ constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2,
61
+ InputIt2 last2) {
62
+ return std::equal(first1, last1, first2, last2);
63
+ }
64
+
65
+ template <class InputIt1, class InputIt2, class BinaryPredicate>
66
+ ABSL_DEPRECATE_AND_INLINE()
67
+ constexpr bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2,
68
+ InputIt2 last2, BinaryPredicate p) {
69
+ return std::equal(first1, last1, first2, last2, p);
70
+ }
71
+
72
+ template <class ForwardIt>
73
+ ABSL_DEPRECATE_AND_INLINE()
74
+ constexpr ForwardIt rotate(ForwardIt first, ForwardIt n_first, ForwardIt last) {
75
+ return std::rotate(first, n_first, last);
76
+ }
45
77
 
46
78
  // linear_search()
47
79
  //