Release 0.23.0rc1 (2019-02-06)
Baseline: 441fd75d0047f8a998d784c557736ab9075db893
Incompatible changes:
- Incompatible flag --incompatible_require_feature_configuration_for_pic was flipped: With removing legacy crosstool fields we need
feature_configuration
to correctly tell whether pic is required for dynamic libraries. Pass feature_configuration
instance as an argument to cc_toolchain_info.needs_pic_for_dynamic_libraries
and use this method instead of cc_toolchain_info.use_pic_for_dynamic_libraries
.
- Incompatible flag --incompatible_linkopts_in_user_link_flags was flipped: Flags coming from
--linkopt
Bazel option will be exposed in the user_link_flags
, not in legacy_link_flags
. Since these features very often come right after each other (or are added by Bazel automatically), this is very unlikely to break anybody, and in case it does, workarounds will have to be tailor made.
- Incompatible flag --incompatible_dont_emit_static_libgcc was flipped: Bazel will not add --static-libgcc to the linking command line, it will be the responsibility of the C++ toolchain to append this flag.
- Incompatible flag --incompatible_expand_directories was flipped.
- Incompatible flag --incompatible_use_jdk10_as_host_javabase was flipped: Bazel will now use JDK 10 as its default --host_javabase.
- Incompatible flag --incompatible_strict_argument_ordering was flipped: Arguments in Starlark functions must now be declared in a strict order: First, positional arguments; then, keyword arguments; then, an optional
*arg
; finally, an optional **kwarg
.
- Incompatible flag --incompatible_disable_tools_defaults_package was flipped: The //tools/defaults:* package was removed. All references to
//tools/defaults:*
targets should be removed or replaced to corresponding target in @bazel_tools//tools/jdk:
and @bazel_tools//tools/cpp:
packages.
- Incompatible flag --incompatible_disallow_data_transition was flipped:
cfg = "data"
is outdated syntax that was turned into a no-op recently. Support for it was now completely removed.
- Incompatible flag --incompatible_strict_action_env has been flipped to 'false' again, as we discovered breakages for local execution users. We'll need some more time to figure out the best way to make this work for local and remote execution. Follow https://github.com/bazelbuild/bazel/issues/7026 for more details.
- Flag --incompatible_range_type was removed.
- Flag --incompatible_disallow_slash_operator was removed.
- Flag --incompatible_disallow_conflicting_providers was removed.
- Flag value --test_sharding_strategy=experimental_heuristic was removed.
- The default value of --host_platform and --platforms was changed to not be dependent on the configuration. This means that setting --cpu or --host_cpu will not affect the target or host platform.
- Toolchain resolution for cc rules is now enabled via an incompatible flag, --incompatible_enable_cc_toolchain_resolution. The previous flag, --enabled_toolchain_types, is deprecated and will be removed.
- java_(mutable_|)proto_library: removed strict_deps attribute.
- Python rules will soon reject the legacy "py" struct provider (preview by enabling --incompatible_disallow_legacy_py_provider). Upgrade rules to use PyInfo instead. See #7298.
- java_(mutable_|)proto_library: removed strict_deps attribute.
- Two changes to native Python rules: 1)
default_python_version
and --force_python
are deprecated; use python_version
and --python_version
respectively instead. You can preview the removal of the deprecated names with --incompatible_remove_old_python_version_api. See #7308. 2) The version flag will no longer override the declared version of a py_binary
or py_test
target. You can preview this new behavior with --incompatible_allow_python_version_transitions. See #7307.
- objc_framework has been deleted. Please refer to apple_dynamic_framework_import and apple_static_framework_import rules available in rules_apple.
- objc_bundle_library has been removed. Please migrate to rules_apple's apple_resource_bundle.
- Added --incompatible_use_jdk11_as_host_javabase: Bazel will then use JDK 11 as its default --host_javabase.
- Added --incompatible_disallow_struct_provider_syntax: Removes the ability for rule implementation functions to return struct. Such functions should return a list of providers instead.
- Added --incompatible_disable_crosstool_file.
- Added --incompatible_generate_javacommon_source_jar: java_common.compile now always generates a source jar.
Important changes:
- Upgrade the embedded JDK version to 11.0.2.
- //src:bazel now uses a minimal embedded JDK, if you want to avoid the extra steps of minimizing the JDK, use //src:bazel-dev instead.
- There is a new flag available
--experimental_java_common_create_provider_enabled_packages
that acts as a whitelist for usages of java_common.create_provider
. The constructor will be deprecated in Bazel 0.23.
- [#7024] Allow chaining of the same function type in aquery.
- Introduces --local_{ram,cpu}_resources, which will take the place of --local_resources.
- [#6930] Add documentation for the aquery command.
- Allow inclusion of param files in aquery output.
- [#6985] Add test to verify aquery's behavior for Cpp action templates.
- Ignore module-info.class in multi-version Jars.
- You can now use the attribute
aapt_version
or the flag --android_aapt
to pick the aapt version for android_local_test tests
- In --keep_going mode, Bazel now correctly returns a non-zero exit code when encountering a package loading error during target pattern parsing of patterns like "//foo:all" and "//foo/...".
- Locally-executed spawns tagged "no-cache" no longer upload their outputs to the remote cache.
- Introduces --host_compiler flag to allow setting a compiler for host compilation when --host_crosstool_top is specified.
- [aquery] Handle the case of aspect-on-aspect.
- Fixed a longstanding bug in the http remote cache where the value passed to --remote_timeout would be interpreted as milliseconds instead of seconds.
- Highlight TreeArtifact in aquery text output.
- java_common APIs now accept JavaToolchainInfo and JavaRuntimeInfo instead of configured targets for java_toolchain and java_runtime.
- cc_common.create_cc_toolchain_config_info is stable and available for production use
- incompatible_use_toolchain_providers_in_java_common: pass JavaToolchainInfo and JavaRuntimeInfo providers to java_common APIs instead of configured targets (https://github.com/bazelbuild/bazel/issues/7186).
- Bazel now supports reading cache hits from a repository cache, even if it doesn't have write access to the cache.
- Adding arm64e to OSX CROSSTOOL.
- Ignore package-level licenses on config_setting.
- Add an optional output_source_jar parameter to java_common.compile
- Bazel now validates that JAVA_HOME points to a valid JDK and falls back to auto-detection by looking up the path of
javac
.
- For tests that do not generate a test.xml, Bazel now uses a separate action to generate one; this results in minor differences in the generated test.xml, and makes the generation more reliable overall.
This release contains contributions from many people at Google, as well as Benjamin Peterson, Ed Schouten, erenon, George Gensure, Igal Tabachnik, Ittai Zeidman, Jannis Andrija Schnitzer, John Millikin, Keith Smiley, Kelly Campbell, Max Vorobev, nicolov, Robin Nabel.
Notice: Bazel installers contain binaries licensed under the GPLv2 with Classpath exception. Those installers should always be redistributed along with the source code.
Some versions of Bazel contain a bundled version of OpenJDK. The license of the bundled OpenJDK and other open-source components can be displayed by running the command bazel license
. The vendor and version information of the bundled OpenJDK can be displayed by running the command bazel info java-runtime
. The binaries and source-code of the bundled OpenJDK can be downloaded from our mirror server.
Security: All our binaries are signed with our public key 48457EE0.
Index of files