Skip to content

Bazel

Build & Package

A fast, correct build and test system that supports multiple languages and scales to large codebases

Java Latest 9.1.1 · 8h ago Security brief →

Features

  • Incremental builds with advanced caching for speed
  • Supports Java, C++, Android, iOS, Go and many other languages
  • Scales to any size of codebase on Windows, macOS, and Linux

Recent releases

View all 9 releases →
Review required
9.1.1 Breaking risk
Breaking upgrade

CcInfo removal

8.7.0 New feature
Notable features
  • `package_group` now accepts labels with external repositories in the `packages` attribute.
  • Added `strip_components` attribute to `extract`, `download_and_extract`, and `http_archive` for path stripping on extraction.
  • Experimental flag `--experimental_remote_cache_chunking` enables chunked reads/writes of large blobs to remote cache (server support required).
Full changelog

[!NOTE]
If you are looking for rolling releases, please visit this page.

Release 8.7.0 (2026-05-07)

Bazel 8.7.0 is a minor LTS release. It is fully backward compatible with Bazel 8.0 and contains selected changes by the Bazel community and Google engineers.

Configurability

  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29240)

External Dependencies

  • package_group now supports labels with external repositories in the packages attribute (#28896).
  • Added SOCKS proxy support. Bazel now accepts socks://, socks4://, and socks5:// URLs in HTTPS_PROXY/HTTP_PROXY environment variables and related system properties. (#29305)
  • Adds the strip_components attribute to extract/download_and_extract/http_archive to allow stripping of path components when extracting files. (#29367)

Remote Execution

  • Bazel now has experimental support for --rewind_lost_inputs, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28971)
  • Added --experimental_remote_cache_chunking flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28900)

Starlark / Build Language

  • string.splitlines() no longer treat u+0085 as a newline character when internal_starlark_utf_8_byte_strings is set (which defaults to true) (#28932)

Acknowledgments

This release contains contributions from many people at Google, as well as Boleyn Su, Fabian Meumertzheim, H5-O5, Jacob Nowjack, Justin Won, Keith Smiley, Mike Lundy, Sarad Pant, and Will Stranton.

Notice: Bazel installers contain binaries licensed under the GPLv2 with Classpath exception. Those installers should always be redistributed along with the source code.

Some versions of Bazel contain a bundled version of OpenJDK. The license of the bundled OpenJDK and other open-source components can be displayed by running the command bazel license. The vendor and version information of the bundled OpenJDK can be displayed by running the command bazel info java-runtime. The binaries and source-code of the bundled OpenJDK can be downloaded from our mirror server.

Security: All our binaries are signed with our public key 3D5919B448457EE0.

9.1.0 Breaking risk
Notable features
  • Experimental --rewind_lost_inputs flag to recover from cache evictions
  • Added --experimental_remote_cache_chunking for large blob remote cache operations
  • package_group now supports labels with external repositories
Full changelog

[!NOTE]
If you are looking for rolling releases, please visit this page.

Release 9.1.0 (2026-04-20)

Bazel 9.1.0 is a minor LTS release. It is fully backward compatible with Bazel 9.0 and contains selected changes by the Bazel community and Google engineers.

IMPORTANT

Compatibility Note: CcInfo removal and rules_go

If you encounter the error "The CcInfo symbol has been removed", this is due to an intentional change in Bazel 9 regarding C++ Starlarkification. While this change was present in 9.0.0, a bug fixed in 9.0.1 (#28360) now correctly surfaces this error instead of failing silently or with a confusing message. To fix this, please upgrade rules_go, rules_nodejs or any broken rulesets. For example,

# Add repo_name = None if you don't directly depend on them.
bazel_dep(name = "rules_go", version = "0.59.0") 
bazel_dep(name = "rules_nodejs", version = "6.7.3")

CLI

  • Reporting of cached test results can now be suppressed with --test_summary=short_uncached or --test_summary=detailed_uncached. (#29263)

Configurability

  • Fix launcher/launcher_maker for cross build, e.g. build windows binary on linux machine. (#29239)

External Deps

  • The `compatibility_level` and `max_compatibility_level` attributes of `module` in MODULE.bazel are now no-ops. Module maintainers should stop specifying those attributes and provide clear build time error messages and actionable migration paths when making major breaking changes. (#28616)
  • `package_group` now supports labels with external repositories in the `packages` attribute. (#28893)
  • `rctx.symlink` now implicitly watches the target if it falls back to a copy. (#28741)
  • The local and remote repo contents cache now include the host OS and CPU architecture in the cache key. (#29195)
  • The remote repo contents cache now supports all reproducible repo rules. (#29225)

Remote Execution

  • Bazel now has experimental support for `--rewind_lost_inputs`, which can rerun actions within a single build to recover from (remote or disk) cache evictions. (#28958)
  • Added `--experimental_remote_cache_chunking` flag to read and write large blobs to/from the remote cache in chunks. Requires server support. (#28903)

Starlark / Build Language

  • `string.splitlines()` no longer incorrectly treats u+0085 (`NEL`) as a newline character (#28931)

Acknowledgments

This release contains contributions from many people at Google, as well as Armando Montanez, ashutosh0x, Boleyn Su, Fabian Meumertzheim, H5-O5, Joseph Gette, Keith Smiley, Paul Tarjan, Ted Kaplan, Tyler French, and Will Stranton.

Notice: Bazel installers contain binaries licensed under the GPLv2 with Classpath exception. Those installers should always be redistributed along with the source code.

Some versions of Bazel contain a bundled version of OpenJDK. The license of the bundled OpenJDK and other open-source components can be displayed by running the command bazel license. The vendor and version information of the bundled OpenJDK can be displayed by running the command bazel info java-runtime. The binaries and source-code of the bundled OpenJDK can be downloaded from our mirror server.

Security: All our binaries are signed with our public key 3D5919B448457EE0.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
25,455
Forks
4,490
Languages
Java Python Shell

Install & Platforms

Platforms
linux macos windows

Beta — feedback welcome: [email protected]