The Bazel team is happy to announce a new version of Bazel, Bazel 0.15!

On a related note, we'll be organizing the 2018 Bazel User Conference in NYC, on October 9-10. If you would like to join us, please register at: https://goo.gl/forms/1ySgfiKXzntp6Knj2. Check out last year's session recordings on the BazelCon website.

Here are the main changes of Bazel 0.15:

C++

C++ libraries can access data dependencies (runfiles). See usage info.

C++ artifacts use correct extensions on Windows ( .obj , .lib , and .dll ).

Android

Added support for including select Java 8 APIs into Android apps targeting pre-Nougat Android devices with --experimental_desugar_java8_libs .

. Added support for pseudo-locales en_XA and ar_XB with --android_aapt=aapt2 .

and with . Added support for building fonts as resources.

The native Android rules are being incrementally migrated to Skylark implementations in rules_android .

Apple

Added the --apple_enable_auto_dsym_dbg flag.

flag. The non_propagated_deps attribute has been removed from objc_library and apple_binary .

Java

The java_plugin.data attribute has been removed.

Miscellaneous changes

Bazel now always runs binaries in with bazel run in interactive mode. The --nodirect_run command line option is now a no-op.

in interactive mode. The command line option is now a no-op. The bazel run --noas_test flag is no longer supported.

flag is no longer supported. Bazel now allows almost all 7-bit ASCII characters in labels.

Indentation on the first line of a file was previously ignored. Bazel now displays an error when it encounters such indentation.

The --incompatible_disable_glob_tracking flag has been removed.

flag has been removed. SkyQuery's rbuildfiles now returns targets corresponding to broken packages.

Introduce build support for providing cache prefetch hints.

The --batch flag has been deprecated. For build isolation, we recommend using the --nokeep_state_after_build flag instead. This flag guarantees that no incremental in-memory state is kept between builds. In order to keep restarting the Bazel server and jvm at every build, please explicitly use the bazel shutdown command.

flag has been deprecated. For build isolation, we recommend using the flag instead. This flag guarantees that no incremental in-memory state is kept between builds. In order to keep restarting the Bazel server and jvm at every build, please explicitly use the command. The --experimental_remote_spawn_cache flag is now enabled by default. Remote caching no longer requires the --*_strategy=remote flags and fails if they are specified.

flag is now enabled by default. Remote caching no longer requires the flags and fails if they are specified. If the --incompatible_no_support_tools_in_action_inputs flag is enabled, Skylark action inputs are no longer scanned for tools. Move any such inputs to the newly introduced 'tools' attribute.

Community

Tony Allevato has published rules_swift which can be used to build Swift libraries and executables for Apple platforms (iOS, macOS, tvOS, and watchOS) and Linux.

The code formatter for bzl files is now ready: check out Buildifier. Please report any issue you have.

Daniel Muller wrote the article Cross language API schemas with Bazel.

Francois Stephany wrote the article about using Bazel to build polyglot mobile apps (iOS/Android).

Thank you to our contributors

This release contains contributions from many people at Google, as well as: Benjamin Peterson, Christian Verkerk, Dmitry Petrashko, Ed Baunton, Jamie, Kelsey Z, Natan Silnitsky, Siddhartha Bagaria, and Taras Tsugrii.

Thank you to everyone who contributed to this release!

Discuss on Hacker News.