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_XAandar_XBwith--android_aapt=aapt2. - 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_dbgflag. - The
non_propagated_depsattribute has been removed fromobjc_libraryandapple_binary.
Java
- The
java_plugin.dataattribute has been removed.
Miscellaneous changes
- Bazel now always runs binaries in with
bazel runin interactive mode. The--nodirect_runcommand line option is now a no-op. - The
bazel run --noas_testflag 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_trackingflag has been removed. - SkyQuery's rbuildfiles now returns targets corresponding to broken packages.
- Introduce build support for providing cache prefetch hints.
- The
--batchflag has been deprecated. For build isolation, we recommend using the--nokeep_state_after_buildflag 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 thebazel shutdowncommand. - The
--experimental_remote_spawn_cacheflag is now enabled by default. Remote caching no longer requires the--*_strategy=remoteflags and fails if they are specified. - If the
--incompatible_no_support_tools_in_action_inputsflag 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.