Bazel Blog

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 or by building your code with Bazel 0.29.1 and the following flags:


  • genrule now supports cmd_bash, cmd_ps, and cmd_bat attributes for better integration on Windows.
  • C++: you can now get a generated DEF file from the def_file 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 , , and flags: all are enabled by default.


  • 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 for details.
  • All rules now have a default exec_properties 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 for details.
  • Make either --subcommands or --verbose_failures imply --materialize_param_files



  • aapt2 is now enabled by default. To revert to aapt, set the --android_aapt=aapt flag.
  • Fixed Windows path issues with aapt2. See the for more information.


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


  • 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 ).
  • 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 for transitive dependency management. See for more information.
  • Added sha256 and sha256_src attributes to maven_jar. Please consider migrating to SHA-256 as SHA-1 has been deemed . Or, use 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.