Bazel 1.0 has just been released. As we announced before we start following semantic versioning for Bazel releases. We'll maintain at least three-month stability windows between Bazel major (backward-incompatible) releases.

Incompatible changes

Before updating to Bazel 1.0, first check if your codebase is compatible either by running bazelisk --migrate or by building your code with Bazel 0.29.1 and the following flags:

Windows

genrule now supports cmd_bash , cmd_ps , and cmd_bat attributes for better integration on Windows.

now supports , , and attributes for better integration on Windows. C++: you can now get a generated DEF file from the def_file output group of cc_library.

output group of cc_library. MSYS2 / Bash: testing targets ("bazel test //foo"), running binary targets ("bazel run //bar"), and fetching repository rules no longer require MSYS2. See (respectively) the --[no]incompatible_windows_native_test_wrapper , --[no]incompatible_windows_bashless_run_command , and --[no]incompatible_use_native_patch flags: all are enabled by default.

Execution

Set --experimental_allow_tags_propagation flag to propagate tags to the action's execution requirements from targets. Such tags should start with: no-, requires-, supports-, block-, disable-, cpu:. See #8830 for details.

flag to propagate tags to the action's execution requirements from targets. Such tags should start with: no-, requires-, supports-, block-, disable-, cpu:. See #8830 for details. All rules now have a default exec_properties attribute just like the one on a platform rule.

attribute just like the one on a platform rule. All gRPC connections from Bazel will default to TLS enabled. To disable TLS use the grpc:// scheme in your URIs. Flags affected are: --remote_cache , --remote_executor and --bes_backend . See #8061 for details.

, and . See #8061 for details. Make either --subcommands or --verbose_failures imply --materialize_param_files

Configurability

config_setting can now check multiple values on "--foo=firstVal --foo=secondVal ..."-style flags

can now check multiple values on "--foo=firstVal --foo=secondVal ..."-style flags Platform-specific bazelrc: with --enable_platform_specific_config you can enable flags in bazelrc according to your host platform.

Android

aapt2 is now enabled by default. To revert to aapt , set the --android_aapt=aapt flag.

is now enabled by default. To revert to , set the flag. Fixed Windows path issues with aapt2 . See the GitHub issue for more information.

C++

cc_* rules support non-transitive defines through a local_defines attribute.

rules support non-transitive defines through a attribute. Bazel now supports ThinLTO builds on Linux for Clang versions 6.0 or above. ThinLTO can be enabled through --features=thin_lto .

Java

Deprecated Java-Starlark API java_common.create_provider is removed. JavaInfo() legacy args ( actions , sources , source_jars , use_ijar , java_toolchain , host_javabase ) are removed (see #5821).

is removed. JavaInfo() legacy args ( , , , , , ) are removed (see #5821). maven_jar and maven_server now disallow using plain HTTP URLs without a specified checksum. If you are still using maven_jar , consider migrating to rules_jvm_external for transitive dependency management. See #8607 for more information.

and now disallow using plain HTTP URLs without a specified checksum. If you are still using , consider migrating to for transitive dependency management. See #8607 for more information. Added sha256 and sha256_src attributes to maven_jar . Please consider migrating to SHA-256 as SHA-1 has been deemed cryptographically insecure. Or, use rules_jvm_external to manage your transitive Maven dependencies with artifact pinning and SHA-256 verification support.

This release contains contributions from many people at Google, as well as Adam Liddell, Alessandro Patti, Arshabh Kumar Agarwal, Artem Pelenitsyn, Artem Zinnatullin, Benjamin Peterson, Emmanuel Goh, Farhim Ferdous, George Gensure, Keith Smiley, Kiril Videlov, Mantas Sakalauskas, Marwan Tammam, Matt Mukerjee, panzhongxian, Shachar Anchelovich, Stepan Koltsov, Stephan Wolski, Travis Clarke, Yannic Bonenberger, Yuta Saito.