A new major version of Bazel, Bazel 2.0 has just been released. In particular, it brings some important flag flips that did not make it into Bazel 1.0.

Incompatible changes

Bazel 2.0 is a new major release and brings the following incompatible changes.

--incompatible_remap_main_repo is enabled by default. Both ways of addressing the main repository (by its name and by '@') are now considered referring to the same repository.

--incompatible_disallow_dict_lookup_unhashable_keys is enabled by default.

--incompatible_remove_native_maven_jar is now enabled by default and the flag removed.

--incompatible_prohibit_aapt1 is enabled by default.

Aquery

Proto v2 for aquery proto output formats, which reduces the output size compared to v1, guarded behind the flag --incompatible_proto_output_v2 . This proto format is still experimental and subject to further changes.

Platforms

New incompatible flag, --incompatible_remove_enabled_toolchain_types , which allows removing the PlatformConfiguration.enabled_toolchain_types field.

Other important changes

Package loading now consistently fails if package loading had a glob evaluation that encountered a symlink cycle or symlink infinite expansion. Previously, such package loading with such glob evaluations would fail only in some cases.

The --disk_cache flag can now also be used together with the gRPC remote cache.

An action's discover inputs runtime metrics is now categorized as parse time on the CriticalPathComponent.

Bazel's Debian package and the binary installer now include an improved wrapper that understands <WORKSPACE>/.bazelversion files and the $USE_BAZEL_VERSION environment variable. This is similar to what Bazelisk offers, except that it works offline and integrates with apt-get.

We are planning to deprecate the runfiles manifest files, which aren't safe in the presence of whitespace, and also unnecessarily require local CPU when remote execution is used. This release adds --experimental_skip_runfiles_manifests to disable the generation of the input manifests (rule.manifest files) in most cases. This can be used for initial testing, but the exact semantics are still subject to change; let us know if this is causing problems. Note that this flag has no effect on Windows by default or if --experimental_enable_runfiles is explicitly set to false.

Community

This release contains contributions from many people at Google, as well as aldersondrive, Benjamin Peterson, Bor Kae Hwang, David Ostrovsky, John Millikin, Keith Smiley, Lauri Peltonen, nikola-sh, Peter Mounce, Tony Hsu.