Skip to content

Kotlin Rules 1.5.0 (Alpha 2)

Pre-release
Pre-release
Compare
Choose a tag to compare
@restingbull restingbull released this 30 Dec 17:35
· 439 commits to master since this release
404d3b3

Kotlin rules for Bazel - Legacy Rules 1.5.0

Note: These rules are maintained externally by volunteers (with Google's approval)

Note: The "legacy" prefix will be dropped as of this release. These are the rules, from this point on, until and unless Google chooses to externalize internal rules, at which point we can differentiate.

Note: legacy-1.4.0 isn't released, and this release includes all features in that line of development. Many of those changes are included in this list.

Alpha 2 Revisions

  • JavaBuilder compilation prerelease available for testing using: --define=experimental_use_abi_jars=1
  • jdeps automatically generated from kt_jvm_library rules.
  • Support for kt_kotlinc_options to kt_jvm_library. Library options supersede toolchain options.
  • Added kt_kotlinc_options:
Name Description Type Mandatory Default
include_stdlibs Don't automatically include the Kotlin standard libraries into the classpath (stdlib and reflect). String optional "all"
warn Control warning behaviour. String optional "report"
x_allow_jvm_ir_dependencies Suppress errors thrown when using dependencies not compiled by the IR backend. Boolean optional False
x_allow_result_return_type Enable kotlin.Result as a return type Boolean optional False
x_inline_classes Enable experimental inline classes Boolean optional False
x_jvm_default Specifies that a JVM default method should be generated for non-abstract Kotlin interface member. String optional "off"
x_no_optimized_callable_references Do not use optimized callable reference superclasses. Available from 1.4. Boolean optional False
x_skip_prerelease_check Suppress errors thrown when using pre-release classes. Boolean optional False

Notable changes:

  • Releases are now precompiled, suggested production installation is via a release archive. Please see the Development Guide
  • when running from a non-archive repository. (#271)
  • Support for Kotlin compiler plugins via the kt_compiler_plugin (#308)
  • Improved determinism for remote builds (#304)
  • No longer packages non-kotlin generated sources (#263)
  • Proper classpath handling for java plugins (#318)
  • Support for propagating Kotlin version to Intellij (#242 )
  • Fixes to release artifact production (#326, #327)
  • Restructure the worker to be deterministic (cc039db, 3f4698a)
  • Support to compilation using kotlin abi and java ijars. (#294, #347)
  • Add support for Android data-binding when building with Kotlin (#346)
  • Add 0 to allowed package name characters (#364)
  • Specify what the compile_jar value should be when building the library (#341)
  • Separate --Xplugin options to support multiple compiler plugins at a time (#366)
  • Fix setting tags = ["trace", "timings"] on a rule. (#378)
  • Kotlin 1.4 (#363)
  • Support multiple source jars (#377)
  • Bump serialization runtime to compatible version (#382)
  • Add option rules for kotlinc and javac. (#383, #385)
  • Expose kt_kotlinc_options and kt_javac_options (#386)
  • Make kt_compiler_plugin work with android_binary (#388)
  • Support the new Kotlin IR backend (#384)
  • Add warning as error to the warn option. (b7f5832)
  • Major rework of the compiler plugin infrastructure (#393)
    • plugins now require an ID (formerly optional)
    • plugins run in specific phases (kapt stubs, compile)
    • compiler plugins may be exported via exported_compiler_plugins (similar to exported_plugins on java_library)
    • some bash substitutions in working directory arguments in plugins (anvil example demonstrates)
  • Option to tag a rule as kt_abi_plugin_incompatible (#362) …
  • Fix java_plugins to work with Android rules (#407)
  • Include KAPT generated source jars as Kotlin builder inputs (#410)
  • Unify experimental java builder + abi jar flags (#411)
  • Many more minor fixes.

More detail can be found in the Changelog

Usage instructions can be found in the readme README

This release includes the contributions of various Googlers as well as @cgruber, @justhecuke, @szinn, @rockwotj, @IljaKroonen, @benjaminRomano, @factuno-db, @arturdryomov, @restingbull, @jongerrish, @BenHenning, @gertvdijk, @dotdat, @fkorotkov, @Wyverald, @Bencodes, @Kernald, @meteorcloudy, @comius.