Repository navigation
10.0.0rc2
Pre-releaseNote
If you are looking for rolling releases, please visit this page.
Release 10.0.0rc2 (2026-10-22)
Baseline: 649a7be
Bazel 10.0 is a major long-term-support (LTS) release. It contains new features and backwards incompatible changes.
Highlights
- TBA
Migration-Ready Incompatible Flags
The following flags are flipped in 10.0:
Users can use bazelisk --migrate with the BAZELISK_INCOMPATIBLE_FLAGS environment variable to test these flag flips with Bazel 9.x.
--experimental_fetch_all_coverage_outputs--experimental_split_coverage_postprocessing--incompatible_check_testonly_for_output_files(#28875, #28876)--incompatible_exclude_starlark_flags_from_exec_config(#26909)--incompatible_no_implicit_file_export(#10225, #27674)--rewind_lost_inputs(#30415)
The following flags will be flipped in a future major release:
--incompatible_check_external_repo_source_dir_package_boundary(#30019)--incompatible_config_setting_private_default_visibility(#12933)--incompatible_disable_starlark_host_transitions(#17032)--incompatible_eagerly_resolve_select_keys(#26281)--incompatible_fail_on_unknown_output_groups--incompatible_package_group_build_output--incompatible_prefer_depending_configuration_runfiles--incompatible_remove_ctx_android_fragment(#29884)--incompatible_remove_ctx_apple_fragment--incompatible_remove_ctx_objc_fragment--incompatible_require_matching_aspect_hints_providers--incompatible_require_mnemonic_for_run_actions--incompatible_require_repo_extension_metadata(#30202)--incompatible_symbolic_macro_strict_attrs(#27430)
General
- [Incompatible] Added support for platform-specific startup options in
.bazelrcfiles (startup:linux,startup:macos,startup:windows, etc.) (#26882). - [Incompatible]
--test_tmpdir=now resets a value from a.bazelrcfile to the default execroot temp directory instead of creating_tmpin the workspace. Use--test_tmpdir=.to retain workspace-relative behavior (#30318). - [Incompatible]
--incompatible_modify_execution_info_additiveis now deprecated and a no-op. When--modify_execution_infois specified multiple times, all values are always applied in order. - The JDK bundled with Bazel has been updated to JDK 27 (#31491).
--server_javabaseandnojdkbuilds of Bazel can now use JREs in addition to JDKs (#30643).- Added
--target_queryand--target_query_fileflags for building or testing the result of abazel queryin a single command (#28996). - Reporting of cached test results can now be suppressed with
--test_summary=short_uncachedor--test_summary=detailed_uncached(#28290). - The new
--expand_param_filesflag expands param files into their contents in--subcommandsand--verbose_failuresoutput (#29130). - Large numbers with 5+ digits in CLI output are now formatted with comma separators for improved readability (e.g.,
"12,345 targets configured"instead of"12345 targets configured") (#28922). .bazelrcconfig declarations can now be empty (#29212).- A
.bazelrcfile may now onlyimportfiles recursively with a depth of up to 512 imports. If you encounter a"Maximum import depth exceeded parsing config file"error and cannot shorten yourimportchain, set theBAZEL_UNLIMITED_IMPORT_DEPTHenvironment variable to any value to disable this limit. - Added
-Djava.net.preferIPv6Addresses=systemto startup JVM args, which may impact certain IPv4-only environments. Override as necessary with--host_jvm_args(#29237). - The
--action_cache_gc_idle_delay,--action_cache_gc_threshold, and--action_cache_gc_max_ageflags are no longer experimental. - The
--disk_cache_gc_idle_delay,--disk_cache_gc_max_size, and--disk_cache_gc_max_ageflags are no longer experimental. - The
--install_base_gc_max_ageflag is no longer experimental. - Added
--output:display_full_kindfor query options to display the full kind for Starlark rules with thelabel_kind,location, andxmloutput formats (#29147). - In the output of
bazel query --output=build, string attributes containing newline characters are now enclosed in triple double quotes (""") for better readability. bazel query --output=protonow supportsdict(label, string)(LABEL_KEYED_STRING_DICT) aspect attributes.bazel query --output=streamed_protocan opt into parallel serialization with--experimental_parallel_streamed_proto_output(#30959).aquerynow supports theconfig(expr, word)function (#10872).- Added
bazel dump --skyframe=keysto report only the keys available in Skyframe (always use with--skykey_filterto limit the number of keys reported) (#30006). - Added
bazel dump --skyframe=changedto list the Skyframe values that the last command created or changed, together with the changed dependencies that caused each change (#31564). - Fixed
--progress_in_terminal_titleoutput underscreenandemacs. - Fixed an issue where
bazel test --nobuildfailed withTEST_WITH_NOANALYZEinstead of succeeding after analysis (#13821). - Fixed a bug where a Bazel server kept its command lock after its client was killed, stalling later invocations (#30960).
- The self-extracting installer now correctly creates installation directories when custom paths contain spaces (#31226).
- Fixed
grep: invalid option -- Perrors on macOS when running release and documentation scripts (#30909). - Removed distrusted eMudhra and Sectigo AAA root CA certificates from the bundled JDK, to address the private key leakage (see https://emudhra.we-have-a-problem.com/). (#31925)
Android
- Added an implicit
MODULE.toolsdependency onrules_androidv0.8.0 (#31425). - Added proper error ordering for the
bazel mobile-installcommand (#30998). - Created
--incompatible_remove_ctx_android_fragmentfor migrating Android configuration flags to Starlark (#29884).
Build Event Protocol
- BEP events are now written respecting parent-child ordering constraints.
BuildFinishedevents in BEP now consistently contain an"infrastructure-caused"detailed exit code when a single target contains both infrastructure-caused and user-caused exit codes in its failed actions.- Added a new
instance_idfield to theBuildMetricsBES event to help diff between the current and previous builds on a running server (#29817). - Improved BES upload failure messages to include the failed invocation's ID.
C++ / Objective-C
- C static libraries can now elide backward reference warnings (when linking with LLD and such warnings are enabled) if the
warn_backrefs_definedfeature is defined and enabled for the toolchain. - The
--fdo_optimizeflag now accepts repo labels as well as package labels (#29118). - The C++ include scanner now properly resolves headers that are generated at build time and included as part of the toolchain (#30879).
CcStarlarkInternalnow exposes hash functions used byrules_ccJava rules to Starlark.- Removed
CoptsFilterfrom Bazel (no longer used sincerules_cc0.2.19).
Configurability / cquery
- [Incompatible] The deprecated
remote_execution_propertiesattribute onplatformhas been removed in favor ofexec_properties. - [Incompatible] The
config_settingtargets@bazel_tools//src/conditions:{host_windows,remote}have been removed (#28300). Toolchains are usually a better fit as they don't depend on the configuration of the host machine running Bazel or fixed execution modes. - [Incompatible]
--incompatible_check_testonly_for_output_fileshas been flipped (#28875, #28876). - [Incompatible]
--use_target_platform_for_testsis now a no-op (#30351). By default, tests are executed on an execution platform that has all constraints of the target platform, making this flag obsolete. To migrate, make sure that your target platform or a platform with at least the same constraints is registered as an execution platform. - The new
refines_constraint_valueattribute onconstraint_settingcan be used to indicate that any non-default value for that setting specified on aplatformrequires the refined value to also be specified (#29655). - The
and_thenmethod ontransitions can be used to compose transitions. Both Starlark transitions and native transitions (e.g.,config.exec()) are supported (#29542). - Test targets can now be built for a target platform that no execution platform is compatible with, e.g., to cross-compile them. Running such a test fails with an error at execution time instead of failing analysis (#30493).
bazel config <output path prefix>(e.g.,bazel config x86-opt) now supports inspecting configurations based on output path prefixes in addition to configuration checksum prefixes.--experimental_override_platform_cpu_namehas been renamed to--override_platform_cpu_name.- Transitive rule and toolchain resolution errors are now formatted into a multi-line indented hierarchy (#15791).
- Fixed
launcherandlauncher_makerfor cross-builds (e.g., building a Windows binary on a Linux machine) (#29200). - Platforms whose names contain
/no longer fail analysis when used in output directory names. (#31707)
Core
- Fixed a crash with
--keep_goingwhen the scope of agenquerydepends on a failing module extension. (#31818)
Coverage
--experimental_split_coverage_postprocessingand--experimental_fetch_all_coverage_outputsnow default totrue, enabling coverage support with remote execution by default (#24927).- The
BAZEL_LLVM_PROFILE_FILEenvironment variable can now be used to customize the LLVM profile filename pattern for C++ coverage collection (e.g.,--test_env=BAZEL_LLVM_PROFILE_FILE=%p.profraw). Defaults to%h-%p-%m.profrawwhen unset (#26807). - The actions generating the combined coverage reports no longer spuriously rerun due to non-deterministic inputs (#31432).
External Dependencies
- [Incompatible] Removed the deprecated repository rule
new_git_repository. Users should usegit_repositoryinstead (they are identical) (#29226). - [Incompatible] Added support for decompressing Brotli archives (
.br,.tar.br) (#29198). - [Incompatible]
--experimental_sibling_repository_layoutis now a no-op (#30586). - [Incompatible]
bazel mod tidynow evaluates all module extensions in the dependency graph to update the lockfile, including extensions used only by dependencies. It can thus be used as a full replacement forbazel mod depswhen the goal is to ensure that the lockfile is up to date. When usingbazel vendor, this may require vendoring additional dependencies (#31329). - [Incompatible]
bazel_dep()no longer accepts dependencies on the current module, which serve no purpose and were never intended to be allowed. Remove self-dependencies and use the module's own repository name for self-references (#31552). - [Incompatible] The root module can no longer use
use_repo()to import an extension repository that it overrides with the root module itself (usingoverride_repo()orinject_repo()). Remove the self-import and use the root module's existing repository name; other modules can still import the overridden repository (#31553). - [Incompatible] Bzlmod now enforces that integrity strings for patches and overlay files in
source.jsonare non-empty (#29017). - The
compatibility_levelandmax_compatibility_levelattributes ofmoduleinMODULE.bazelare 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 (#28600). - The values of keyword arguments passed to
use_repocan now contain the special substrings{name}and{version}, which are treated as equivalent to the corresponding attributes of the current module (#27890). bazel vendor --lockfile_depsadditionally vendors the repositories required to update the lockfile (e.g., withbazel mod tidy) while fetching is disabled, and can be combined with target patterns. The@bazel_tools//tools:tools_for_bazel_subcommandsfilegroup is deprecated (#31562).bazel mod show_reponow prints the path of each repo's directory as a# Located at:comment in text output and as the newrepo_rootfield in proto and JSON output (#31176).- Added the
module_ctx.tag_sort_key(tag)method, which returns an opaque object for the given tag that can be compared to derive the order in which tags from different classes appear in theMODULE.bazelfile (#29343). module_extension(...)now accepts afacts_versioninteger parameter. Bumping it invalidates the facts persisted inMODULE.bazel.lockfor that extension, allowing extension authors to make breaking changes to the facts schema without risking misinterpretation by older code paths (#29556).- Facts of reproducible module extensions are now restored to the expected state after external modifications by every Bazel command that updates the lockfile (#30937).
- Module extensions are now correctly rerun when the root module changes the
dev_dependencyvalue of ause_extensioncall, which is visible to extensions asmodule_ctx.root_module_has_non_dev_dependency(#30738). - Fixed
--lockfile_mode=errorvalidation when rolling back changes to module extension facts (#28718). - Running
bazel shutdownno longer results in stale lockfile data being written (#30348). - Cycles between
MODULE.bazelfiles connected viainclude()are now reported as an error instead of hanging the build (#30737). - Fixed a crash while evaluating
MODULE.bazelfiles when Skyframe dropped its temporary state in response to memory pressure (#30756). - Added the
strip_componentsattribute torepository_ctx.extract,repository_ctx.download_and_extract, andhttp_archiveto allow stripping leading path components when extracting archives (#29281), and fixed handling of symbolic and hard links when usingstrip_components(#30044). - Added
add_prefixattribute togit_repositoryto allow cloning repositories into a given subdirectory prefix (#29453). - Added
repository_ctx.patch(directory)to support applying patches in a specified subdirectory (#30987). - Added an
excludeparameter torepository_ctx.watch_tree()to allow excluding glob patterns from being watched (#29444). repository_ctx.symlinknow implicitly watches the target if it falls back to a copy (#28682).repository_ctx.download*andmodule_ctx.download*now report the size of downloaded files (#29463), include the download state indebugPrint, and add anerrorkey to the returned struct whensuccessisFalse(#29142).- Added SOCKS proxy support. Bazel now accepts
socks://,socks4://, andsocks5://URLs inHTTPS_PROXY/HTTP_PROXYenvironment variables and related system properties (#29274). - Added
urlencode($1)support to--downloader_configrewrite rules (#25758). - Bazel now fails over immediately to mirror URLs if a TLS handshake error occurs (#28347), and downloader rewrites to endpoints that refuse connections no longer repeat the connector's full retry sequence (#30867).
- Fixed
repository_ctx.download_and_extractfailing with an"Expected a file with a ... suffix"error when--downloader_configblocks all URLs and the archive is served from the repository cache (#30449). - Credential helper failures now abort HTTP downloads instead of continuing without authentication (#30647), and
nullvalues in credential helper JSON responses are now treated as unset (#30874). read_user_netrcin@bazel_tools//tools/build_defs/repo:utils.bzlnow honors theNETRCenvironment variable, matchinghttp_*repository rules (#31378).- The remote repo contents cache now supports all reproducible repo rules (#27634), includes the host OS and CPU architecture in the local and remote cache key (#29148), and works with non-gRPC cache backends (#29744).
- The remote repo contents cache now correctly materializes chains of symlinks as action inputs (including symlinks to
.bzlfiles, fixing spurious"No such file"errors), but no longer caches or restores repos with cross-repo symlinks or symlinks into the main repository (#29767, #30031, #30161). - Fixed a crash with
--experimental_remote_repo_contents_cachewhen running without a remote or disk cache (#30045). - External repos are no longer refetched whenever they contribute inputs to an action using the hermetic Linux sandbox (#29701), or after
bazel fetch --forceon the next build (#31108). - Modifying environment variables no longer causes spurious reloading of packages in external repositories (#29946).
- Source directories in external repositories are temporarily allowed to cross package boundaries. This will be disallowed in the future, gated by the new
--incompatible_check_external_repo_source_dir_package_boundaryflag (#30019). - Fixed a bug that could cause
ignore_directories()inREPO.bazelto not ignore directories (#30536). package_groupnow supports labels with external repositories in thepackagesattribute (#28811).
Java
- Fixed a flaky crash when Java compilation actions encounter multiple lost
.jdepsfiles (#30012).
Local Execution
- [Incompatible] The environment variable
LC_CTYPEnow defaults toC.UTF-8for actions that setuse_default_shell_env = True, resulting in a Unicode-aware locale on Linux, MSYS2, and macOS 15.4+. Pass--action_env==LC_CTYPE(note the two=s) to explicitly unset this variable and restore the previous behavior, or--action_env=LC_CTYPE=UTF-8on older versions of macOS (#25801). - [Incompatible] Removed
/usr/local/binfrom the default strict actionPATH. Set--action_envand--host_action_envto/bin:/usr/bin:/usr/local/binif needed (#29257). - [Incompatible]
exec_propertiesnow respectsresources:cpuandresources:memoryfor local resource estimation (#29284, #30747). - [Incompatible] Bind mounts specified via
--sandbox_add_mount_pair(or-M/-mflags inlinux-sandbox) are now correctly remounted read-only when using the hermetic sandbox (--experimental_sandbox_hermetic). Build actions that write to these paths will now fail with a read-only filesystem error. - [Incompatible] Bazel no longer trims whitespace from lines in the
unused_inputs_listfile before matching them against an action's inputs, as file names may begin or end with whitespace (#31533). --worker_sandboxingcan now be scoped per worker-key mnemonic with--worker_sandboxing=<mnemonic>=<boolean>(#30125).- Sandboxed actions no longer fail with
"File exists"when an input is nested under a source directory input (#31206). - The macOS sandbox now allows actions to bind sockets when network access is blocked, matching the behavior of the Linux sandbox (#30865).
- Unused stashed sandbox directories are now cleaned up when shutting down the Bazel server (#27626).
- Test processes now receive the full
--local_termination_grace_secondsperiod to handleSIGTERMand perform cleanup on timeout (#14298). - Fixed a rare crash with
NullPointerExceptioninActionInputMap.getIndexwhen an action discovers additional inputs while executing (#30693).
Performance
- Fixed an O(N² log N) analysis-phase performance regression when parsing large numbers of Starlark flags.
- Fixed a performance regression in Bazel 9 that caused
RepoMappingManifestactions to consume excessive CPU time (#29800). - Enabled output path mapping (config stripping) support for
ArchivedTreeArtifacts to improve action caching under--experimental_output_paths=strip(#29567). - Any existing action relying on the legacy hardcoded list of path-mappable mnemonics in Bazel now needs to opt into output path mapping via its execution requirements (#29806).
- With the new
--experimental_keep_change_prunable_nodes_during_gcflag, Skyframe will keep computed nodes that aren't requested by the current evaluation but whose dependencies would be verified clean after change pruning (#29965). - Fixed a build failure with
--execution_log_compact_filewhen a C++ action template has no inputs (#30816). - Bazel's serialization system now has a new wire encoding that supports preserving how values are serialized across Bazel versions.
Remote Execution
- [Incompatible]
--rewind_lost_inputsis now enabled by default. Builds with Build without the Bytes (BwoB) automatically recover from remote or disk cache eviction within a single build by rewinding actions that generated lost inputs (#25477, #30415). - Action rewinding (
--rewind_lost_inputs) can now succeed even if the remote cache doesn't verify that action cache entries aren't stale (#30266), and fixed an issue that caused Bazel to fail on a lost input even with build or action rewinding enabled (#29551). - Fixed a spurious remote-execution failure with
--experimental_output_paths=stripwhere a lost input in a tree artifact shared between actions could not be recovered by action rewinding (#30085). --disk_cachecan now be set without an argument to enable the disk cache using a default location at<outputUserRoot>/cache/disk. Boolean forms (--disk_cache=1or--disk_cache=trueto enable;--disk_cache=0,--disk_cache=false, or--nodisk_cacheto disable) are also accepted (#28942).- Files uploaded to the disk cache are now copied with a copy-on-write clone where the filesystem supports it, so a cache entry can share its blocks with the output it was uploaded from (#30776).
- Bazel no longer verifies the digests of disk cache entries upon a cache hit, honoring the documented behavior of
--remote_verify_downloads(#28369). - Disk cache action results are now always trusted with
--rewind_lost_inputs, even if Build without the Bytes makes it so that the outputs are not available locally (#30709, #30811). - Disk cache entries deleted by a concurrent garbage collection are now treated as cache misses and don't result in failures (#30835).
- Avoided redundant remote CAS uploads when using combined disk and remote caching with a cold disk cache (#18140).
- Added
--experimental_remote_cache_chunkingto read and write large blobs to/from the remote cache in chunks (requires server support) (#28437), with bounded parallel chunk transfers within a large blob (#29341) and--experimental_remote_cache_chunking_function(auto,fast_cdc_2020,rep_max_cdc) to select the content-defined chunking function (#30131). - The
requires-worker-protocolexecution requirement is now forwarded to remote execution services as a platform property (persistentWorkerProtocol) to support intermixing JSON and Proto remote persistent worker protocols across a build (#28489). - Enabled TCP keepalive by default for gRPC connections with reasonable defaults (#29879).
- Bazel no longer limits the size of gRPC messages received from the remote executor or cache (#29823).
- HTTP remote caching now retries
408and429status codes (#30130). - Remote execution, remote caching, and auth flags can now be reset to their default unset state on the command line by passing an empty value (e.g.,
--remote_cache=,--remote_executor=,--google_credentials=) (#4595). --tls_certificate=,--tls_client_certificate=, and--tls_client_key=can now be used to reset those flags to their unset state (#29312).--experimental_remote_scrubbing_config=now disables remote cache key scrubbing, allowing command-line overrides of scrubbing configs set in.bazelrc(#30219).- Cached action execution results are now invalidated when remote cache/executor endpoints or
--remote_instance_namechange between invocations (#23780). - With Build without the Bytes, a requested top-level output that was deleted locally is now reliably redownloaded in the next build that requests it, even if other invocations ran in between (#30869).
- Fixed unnecessary remote-cache hits in incremental BwoB builds after a previous invocation used a broader remote output download policy (#30852).
- Fixed incremental remote builds failing to create output directories beneath stale dangling symlinks (#30845).
- Fixed excessive native thread accumulation when running commands with remote caching or execution enabled in rapid succession (#31191).
Starlark / Build Language
- Global functions and built-in data types:
- [Incompatible]
string.splitlines()no longer incorrectly treatsU+0085(NEL) as a newline character (#28909). - [Incompatible] In
min()andmax(), thekeycallback is now prohibited from mutating the sequence being iterated over (#30201). - Added an optional parameter to
fail()to allow eliding the stack trace when pretty-printing user errors. - Starlark
fail()calls now format error messages withError:instead ofError in fail:(#21523). - Added
Label.repo_rootas a replacement for the deprecatedLabel.workspace_root(#31173). - Labels in the main repo now have a
reprform that reliably evaluates back to themselves (i.e.,repr(Label("@@//:foo")) == 'Label("@@//:foo")').
- [Incompatible]
- Rules and actions API:
- [Incompatible] Custom Starlark rules named
test_suiteare no longer treated as a nativetest_suite. - [Incompatible]
template_ctx.runnow rejects a template's own output directories passed throughtools, as it already did forinputs. Pass individual files produced by sibling actions instead (#31029). ctx.actions.runnow supports redirecting stdout to a file via the newstdoutparameter (#30408).- The new
ctx.package_relative_labelfunction on the rule context can be used to turn a user-provided label string into aLabelrelative to the target currently being analyzed (whereasLabel(...)resolves relative to the.bzlfile containing the call) (#28102). DefaultInfo.executablenow exposes the executable of configured targets and directly constructed providers, including providers returned byctx.super()(#30741).- Fixed a
NullPointerExceptionand improved error messages when Starlark implicit output templates reference unset or unknown attributes (#5581), and skipped implicit output generation when mandatory rule attributes are missing to prevent secondary error messages. - The Starlark debug server now binds to the configured address (defaulting to
127.0.0.1) via--experimental_skylark_debug_server_address.
- [Incompatible] Custom Starlark rules named
- Symbolic macros:
- If
--incompatible_symbolic_macro_strict_attrsis enabled, invalid attribute values in symbolic macros fail the build, matching the behavior of rules (#27430).
- If
Windows
- [Incompatible] The Windows shell launcher now again prepends rather than appends the directory containing the shell binary, restoring the behavior of Bazel 8.x (#29637, #30444).
- Windows launcher stubs now embed an
asInvokerUAC manifest, preventing"The requested operation requires elevation. (error: 740)"for targets whose name matches the Windows installer-detection heuristic (#30043). - Fixed Bazel being unable to run a Windows executable whose path is too long to shorten under
MAX_PATH, e.g., when 8dot3 short names are disabled (#29921), and allowed batch files run viaCreateProcessWintw.exeto work underlongPathAware(#30490). - Fixed
Could not chdirintw.exefor long runfiles paths on Windows (#30610). - Fixed an issue on Windows where empty environment variables (e.g.,
--action_env=VAR=) caused test execution failures in the test wrapper (#15364). - Windows parameter files now preserve empty arguments and correctly escape backslashes before quotes and at the end of quoted arguments (#31204).
- Fixed
sh_binaryon Windows to pass user arguments as positional parameters tobashinstead of concatenating them. - Fixed
bazel run --run_under=... --script_path=...on Windows to correctly escape batch script invocations and forward arguments (#22148). - Bazel on Windows no longer fails with
"Command line too long"when running in batch mode with a large environment (#31380). - Bazel now honors
XDG_CACHE_HOMEon Windows (#27808). - Fixed a crash when evaluating target patterns or paths containing invalid characters or wildcards on Windows (#15962).
- Fixed a possible crash on Windows Arm64 related to JNI strings (#30606).
Appendix
The following flags have been removed:
--android_compiler--android_databinding_use_androidx--android_databinding_use_v3_4_args--android_dynamic_mode--android_manifest_merger--android_migration_tag_check--break_build_on_parallel_dex2oat_failure--catalyst_cpus--dexopts_supported_in_dexmerger--dexopts_supported_in_incremental_dexing--experimental_allow_android_library_deps_without_srcs--experimental_always_filter_duplicate_classes_from_android_test--experimental_android_assume_minsdkversion--experimental_android_databinding_v2--experimental_android_rewrite_dexes_with_rex--experimental_android_use_parallel_dex2oat--experimental_check_desugar_deps--experimental_disable_external_package--experimental_disable_instrumentation_manifest_merge--experimental_exec_configuration_distinguisher--experimental_filter_library_jar_with_program_jar--experimental_filter_r_jars_from_android_test--experimental_incremental_dexing_after_proguard_by_default--experimental_objc_fastbuild_options--experimental_omit_resources_info_provider_from_android_binary--experimental_one_version_enforcement_use_transitive_jars_for_binary_under_test--experimental_output_directory_naming_scheme--experimental_persistent_aar_extractor--experimental_remove_r_classes_from_instrumentation_test_jar--experimental_skyframe_error_handling_refactor--experimental_strict_fileset_output--experimental_use_dex_splitter_for_incremental_dexing--experimental_use_rtxt_from_merged_resources--fat_apk_hwasan--incompatible_avoid_hardcoded_objc_compilation_flags--incompatible_check_sharding_support--incompatible_disable_native_android_rules--incompatible_do_not_split_linking_cmdline--incompatible_enable_android_toolchain_resolution--incompatible_remove_ctx_bazel_py_fragment--incompatible_stop_exporting_language_modules--incremental_dexing--ios_memleaks--ios_sdk_version--ios_signing_cert_name--ios_simulator_device--ios_simulator_version--macos_sdk_version--non_incremental_per_target_dexopts--objc_debug_with_GLIBCXX--output_library_merged_assets--persistent_android_dex_desugar--persistent_android_resource_processor--persistent_multiplex_android_dex_desugar--persistent_multiplex_android_resource_processor--persistent_multiplex_android_tools--strict_filesets--test_result_expiration--tvos_sdk_version--watchos_sdk_version
The following flags have been renamed (graduated from experimental):
--experimental_action_cache_gc_idle_delay→--action_cache_gc_idle_delay--experimental_action_cache_gc_max_age→--action_cache_gc_max_age--experimental_action_cache_gc_threshold→--action_cache_gc_threshold--experimental_disk_cache_gc_idle_delay→--disk_cache_gc_idle_delay--experimental_disk_cache_gc_max_age→--disk_cache_gc_max_age--experimental_disk_cache_gc_max_size→--disk_cache_gc_max_size--experimental_install_base_gc_max_age→--install_base_gc_max_age--experimental_override_platform_cpu_name→--override_platform_cpu_name--experimental_remote_downloader→--remote_downloader--experimental_remote_downloader_local_fallback→--remote_downloader_local_fallback--experimental_remote_downloader_propagate_credentials→--remote_downloader_propagate_credentials
The following flags are now no-ops:
--apple_platforms--build_python_zip--experimental_add_test_support_to_compile_time_deps--experimental_build_event_expand_filesets--experimental_cc_implementation_deps--experimental_enable_scl_dialect--experimental_execution_graph_include_change_pruned_actions--experimental_java_test_auto_create_deploy_jar--experimental_platform_in_output_dir--experimental_py_binaries_include_label--experimental_python_import_all_repositories--experimental_remote_analysis_cache--experimental_remote_analysis_unreachable_cache_retry_interval--experimental_sibling_repository_layout--incompatible_autoload_externally--incompatible_default_to_explicit_init_py--incompatible_disable_autoloads_in_main_repo--incompatible_disable_legacy_flags_cc_toolchain_api--incompatible_disable_nocopts--incompatible_enable_apple_toolchain_resolution--incompatible_lexicographical_output--incompatible_make_thinlto_command_lines_standalone--incompatible_modify_execution_info_additive--incompatible_multi_release_deploy_jars--incompatible_python_disallow_native_rules--incompatible_remove_ctx_py_fragment--incompatible_require_ctx_in_configure_features--incompatible_require_javaplugininfo_in_javacommon--incompatible_use_cc_configure_from_rules_cc--incompatible_use_new_cgroup_implementation--incompatible_use_specific_tool_files--incompatible_validate_top_level_header_inclusions--j2objc_dead_code_report--j2objc_translation_flags--proto_toolchain_for_j2objc--python_native_rules_allowlist--python_path--remote_analysis_json_log--repositories_without_autoloads--use_platforms_in_apple_crosstool_transition--use_target_platform_for_tests
Acknowledgments
This release contains contributions from many people at Google, as well as Aaron Sky, adilburaksen, Adin Cebic, Akshay Ubale, Alan Mond, Albert Lloveras, Alex Eagle, Alex Novak, Alex O'Brien, Alexander Scott, Alexey Tereshenkov, Amit Keren, Andrew Hewitson, Angus Lees, Anthony Pratti, Anton Karpov, Armando Montanez, Ashutosh0x, Benedict Chacko, Benjamin Peterson, Blaine Freestone, Boleyn Su, Brad Smith, Brandon Lico, Bryce Lampe, c2qd, Chedrian07, Chris Heisterkamp, Chris Jakins, Chris McDonald, cjk, colbs255, Dan Halperin, Dan Katz, Daniel Burrell, Daniel Pfeifer, David Jyo, David Ostrovsky, David Zbarsky, Denbeigh Stevens, Desel72, Dmitry Spikhalsky, Douglas Thor, Dylan Bettermann, Dylan Joss, Ed Schouten, Fabian Brandstetter, Fabian Meumertzheim, Fredrik Medley, gampu, Garrett Holmstrom, gaurav0107, George Gensure, giria660, Grzegorz Lukasik, Guillaume Maudoux, gztong666, H5-O5, Han-Wen Nienhuys, Henner Zeller, Herdiyan Adam Putra, honnix, ifutivic, ijuren8, iMostfa, Jacob Nowjack, jade, Jake Newfield, James Judd, Jasmine Tang, Jason Bedard, Javier Maestro, jdymitarai, Jean-Baptiste Bronisz, Jean-Yves LENHOF, Jeff Klukas, Jeremy Volkman, Jesse Schalken, jjj-n, John Cater, John Millikin, Jonathan Perry, Jordan Mele, Joseph Gette, Justin, Justin Kaeser, Justin Won, justinswe, Kapunahele Wong, Kaylie, Keith Smiley, Kip Hamiltons, Kobi Hikri, Ladd Van Tol, lg-stripe, Lucas Pottersky, Malte Poll, Manoj Mahapatra, Markus Hofbauer, Matthew Steffen, Michael Mitchell, Mike Lundy, Ming Zhao, Moran Omer, Morax, Nikki Vijaybhaskar, Paul Tarjan, peakschris, Pieter Agten, PikachuHy, Rahul Butani, Raiyyan Ur Rahman Mohammed, Rajkaran Yadav, Régis Desgroppes, Richard Lavoie, Samuel Bronson, Sarad Pant, Showta Ishizaki, Shrey Shah, Son Luong Ngoc, Stefan Penner, Steffeeen, Steve Barrau, Taeyang Jin (Theo), Tamir Duberstein, teaugene, Ted Kaplan, Timothy Gu, Tyler French, Ulrik Falklöf, vadim, Vladimir Sitnikov, wade-arista, Will Stranton, willxiao-amzn, XananasX, Yagiz Nizipli, Yannic Bonenberger, Yonatan Goldschmidt, Yossi Eliaz, zhaixiaojuan, and zozo123.
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.