* GCC latest is now 16.1
* GCC floor is 10.5.0
* CMake 4.3.2"
* Clang/LLVM 22.1.0"
* Bazel 9.1.0
The new Linux docker containers now refer to their SHA256
instead of a tag in the configuration file.
PiperOrigin-RevId: 914372195
Change-Id: I39cb89b922a4b829f9e045790742de9b765b210f
to provide a centralized policy for hardware-accelerated
implementations in headers.
This option addresses ODR violations that occur when Abseil headers
use compile-time feature detection (such as __SSE4_2__) in inline
functions. If translation units are compiled with inconsistent CPU
architecture flags (e.g., -march=native vs -march=generic) and linked
together, they may disagree on the implementation of these inline
functions. This can lead to crashes or silent data corruption in
hashing.
The new option provides three levels of control:
- 0: Portable. Forces software-only implementations in headers,
guaranteeing ABI safety across mixed translation units.
- 1: Required. Forces hardware-accelerated implementations in
headers. The build will fail if the required instructions are not
enabled in the compiler environment.
- 2: Auto-detect. Selects the best available implementation based on
compiler flags, but can't guarantee safety if translation units are
compiled with inconsistent flags.
PiperOrigin-RevId: 896569507
Change-Id: Ifcbc1f3980883feeaa4f05f845ce32310ca7d533
This is to allow using Abseil in GoogleTest, which would allow use of RE2.
PiperOrigin-RevId: 865975476
Change-Id: Ifdf62384b82a14e0fb569076333bee96647e7c1f
This requires a GoogleTest dependency update for compatibility
The use of --action_env for setting up the compiler is changed
because of https://github.com/bazelbuild/bazel/issues/26222
Also fix the path to the symbolizer in sanitizer builds
PiperOrigin-RevId: 865570744
Change-Id: I403202956913519c714d6eed4968a9615853ac42
The docker images for Linux have all been combined into a single image
that contain the latest and minimum versions of GCC that are
supported, along with a recent Clang and both a normal and a
TSAN-instrumented libc++. Bazel is now Bazelisk, which allows for
easier testing of other Bazel versions.
Summary:
Linux Clang x86_64: 22.1.0-rc2 (needed to test a C++26 feature)
Linux Clang aarch64: 21.1.8 (the latest release candidate is broken on ARM)
GCC latest: 15.2.0
GCC floor: 9.5.0
Bazel 8.5.1
CMake 4.2.3
MacOS and Windows is also updated to Bazel 8.5.1 so the vendor cache,
which is dependent on the Bazel version, also works on these
platforms.
PiperOrigin-RevId: 864975917
Change-Id: I072f93164b8ecc0b3a6f2c3d0efecea5bdd05c02
Updates `absl::Mutex` and related RAII lockers (`absl::MutexLock`,
etc) to deprecate legacy APIs in favor of standard-compliant
alternatives.
* `absl::Mutex`: Adds `[[deprecated]]` to legacy CamelCase methods
(e.g., `Lock`, `ReaderLock`) in favor of standard C++ lower-case
methods (`lock`, `lock_shared`) which support `std::scoped_lock`.
* `absl::MutexLock` (and friends): Adds `[[deprecated]]` to
constructors accepting raw pointers, favoring new
reference-accepting constructors.
To support this change, warnings coming from external repositories
are now suppressed in Bazel CI builds.
PiperOrigin-RevId: 852978576
Change-Id: I54ae951f28a1b7d90fcb46ceeaf09f192af257df
prior to C++17. `absl::string_view` is now an alias for `std::string_view`.
It is recommended that clients simply use `std::string_view`.
PiperOrigin-RevId: 845822478
Change-Id: I220530c84118e5b9ef110baa002c232ac8f2c5f2
where it does not work when it is in ${TMP} and also fix the quoting
which was causing it to incorrectly receive the argument
https://github.com/bazelbuild/bazel/issues/27156
PiperOrigin-RevId: 823141075
Change-Id: I465f6bda0d94f4e464fa7ce3c1ee019aec78db69
/opt/llvm/clang/bin/clang -v
clang version 21.0.0git (https://github.com/llvm/llvm-project 2dee1a2de3d2cc774fbd43507cf4320418fbf279)
This change adds `-Wno-unused-command-line-argument`
to the Clang builds since Bazel is now providing an unused
`-c` to rules that do header syntax checking only.
Rules that were missing copts which causes them to
encounter this error are also fixed.
PiperOrigin-RevId: 764757573
Change-Id: I1eba676327a6023c5b8afb54499e4a3a72c2cdad
This includes fixes for both the CI scripts in the new
OS image and a fix for newly detected missing nullability
annotations in string_view with an upgraded Clang.
It is also no longer necessary to uninstall google-benchmark
since it is not installed by default in the new image.
PiperOrigin-RevId: 764725127
Change-Id: I6ea8c55b4d9a9afd261bf4ae9c5e8239675ea7ca
GCC latest is now GCC-15.1
Clang on ARM is now Clang-19
Bazel 8.2.1
CMake 4.0.1
Enable Bazel "Vendor Mode" as a caching mechanism to reduce
GitHub download failures.
PiperOrigin-RevId: 755864516
Change-Id: I9bf38e20fb8a09739406798119c50ce1aa934f43
on Windows and macOS
Also upgrade to Bazel 8.2.1 since all platforms will need
to use the same version of Bazel to get the most cache hits.
Different Bazel versions have different dependencies.
PiperOrigin-RevId: 755477047
Change-Id: Ib8838c6ef1e3b55841005d877346ed8afceca15a
-fno-sanitize-recover will cause tests that encounter undefined
behavior to abort and fail, instead of just logging an error message.
PiperOrigin-RevId: 733779444
Change-Id: I3f88aef8f91d64572e9d46ad8f6cc40562f25a30
`MODULE.bazel` is now the recommended way to use Bazel.
Users that have wanted to use `WORKSPACE.bazel` still needed
to provide their own `WORKSPACE.bazel` file, so this file
provides no benefit to them. It was merely for us to test,
but there is little reason to do so.
Support for `WORKSPACE.bazel` is going away in Bazel 9.
PiperOrigin-RevId: 726117464
Change-Id: If6a2789eae2d236c0ec1b53162c7122c96967959
This allows us to get rid of the repo_mapping
since 1.16.0 is now using canonical names.
PiperOrigin-RevId: 724543391
Change-Id: I9e0b6e4ecadaa4de6c5140820b444d5af927ab6c
According to
https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md
the GCC7 is supported, but since it lacks complete C++17 support, we
can ignore it. GCC8 is only supported by openSUSE/Leap and contains a
pretty bad bug for us, so for it is best to test GCC9 instead.
PiperOrigin-RevId: 723914768
Change-Id: I8e8b2d3128651d174effd214b416b0295d65a301
Linux "latest" containers updated to
GCC 14.2
CMake 3.31.2
Bazel 8.0.0
Included are various fixes to get these versions to work.
Bazel now references repositories by their canonical names from the
Bazel Central Registry. For example, Abseil is now @abseil-cpp instead
of @com_google_absl, and GoogleTest is now @googletest instead of
@com_google_googletest. Users still using the old WORKSPACE system may
need to use `repo_mapping` on repositories using the old names. See
`WORKSPACE.bazel` in this commit for an example.
PiperOrigin-RevId: 709102146
Change-Id: I02327ed4f8fb947766480bdeef2b1930a7f831eb
Prepare for changes in Bazel 8, where cc configure scripts have been moved to rules_cc.
PiperOrigin-RevId: 703026686
Change-Id: I44c573bf84a56aed37fca0717e7e1892d7f9a267
This updates to a version of GoogleTest that fixes
https://github.com/google/googletest/issues/4581
for downstream users of rules_python
PiperOrigin-RevId: 658398482
Change-Id: I4c6d431fd38d3a108e3c252eb26be9d81ff05a8e
windows_clangcl_bazel.bat includes a change from --copt to --cxxopt to
only pass /std:c++XX to C++ compiles
PiperOrigin-RevId: 646157298
Change-Id: Ib6d9861a2b2d45eb0d664f23b6f3a7426f8e0ab3
... even if ABSL_BUILD_TEST_HELPERS is not specified.
When not using ABSL_BUILD_DLL, tests builds even if ABSL_BUILD_TEST_HELPERS is not specified. Make this work for ABSL_BUILD_DLL, by ensuring that (BUILD_TESTING AND ABSL_BUILD_TESTING) triggers abseil_test_dll build.
PiperOrigin-RevId: 637493023
Change-Id: Icd5868c547365f4788caac47e002fbfc32a03e94
When bzlmod is enabled and WORKSPACE.bzlmod exists, the content of
WORKSPACE is ignored. This prevents bzlmod builds from unintentionally
depending on the WORKSPACE file.
This exposed some small problems with our clang-cl configuration,
which are also fixed in this change.
PiperOrigin-RevId: 602511311
Change-Id: I0ba411edde2df0e17f4eeede4117ddb6934dd8f8
https://bazel.build/external/overview#bzlmod
Bzlmod will be the default in a future Bazel release.
By default it requires projects to be registered with the
Bazel Central Registry (https://registry.bazel.build/) and
thus uses regular releases by default.
Users that want to "live-at-head" can still do this through
with overrides (https://bazel.build/external/module#overrides).
This change updates Abseil dependencies to use released versions.
CI uses Bzlmod except in the case of linux_gcc-floor, which will
keep testing the old WORKSPACE-based dependency system.
PiperOrigin-RevId: 597676666
Change-Id: I8d33facc432477c6dc7daa06fd00bb4ae8c4adba
This changes the way in which clang-cl is selected on Windows
as it has changed:
https://bazel.build/configure/windows#clang
--features=external_include_paths has been removed from Windows builds
since it appears cause build command errors currently
PiperOrigin-RevId: 596965732
Change-Id: I95b636a9a4fdcc4172c3bb8c6cb28d5f7db592c9
types when they are available.
This makes them interchangeable in contexts known to be compiled as C++20.
This also makes `absl::` ordering types compatible with `<=>`, allowing to
unconditionally use `absl::` spelling for types but conditionally use `<=>`
when available.
PiperOrigin-RevId: 588085408
Change-Id: I1aa5247f0e31acbb838ee76829b7a13c74b0a94f
The following are the major updates
* LLVM 17 branch (https://github.com/llvm/llvm-project b744f4c99cf91155c74a3c92db6f1335232ff3d)
* GCC 13.2
* CMake 3.27.1
* Bazel 6.2.1
PiperOrigin-RevId: 557594251
Change-Id: I86f72c8035ab4f3b9fe602bdaf3bfb8200ec3633
This includes an upgrade to CMake 3.26.3 and Bazel 6.2.0
This change includes support for both GCC 12 and 13 since we
were only testing GCC 11 before this change.
PiperOrigin-RevId: 534235753
Change-Id: I4183a02469b1c3425c52a31b71fcefe403315a42