Skip to content

Releases: bazelbuild/rules_kotlin

Kotlin Rules 1.5.0 (Alpha 3)

06 Jan 17:21
6e8b04f
Compare
Choose a tag to compare
Pre-release

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 3 Revisions

  • Fixed default option visibility
  • Bump to project Kotlin 1.4.20

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.

Kotlin Rules 1.5.0 (Alpha 2)

30 Dec 17:35
404d3b3
Compare
Choose a tag to compare
Pre-release

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.

Legacy Kotlin Rules 1.5.0 (Alpha 1)

04 Dec 00:53
858c0e7
Compare
Choose a tag to compare
Pre-release

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 thie release includes all features in that line of development. Many of those changes are included in this list.

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.

Legacy Kotlin Rules 1.4.0 (Release Candidate 4)

16 Nov 09:03
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.4.0

Note: These rules are maintained externally from Google (with Google's oversight and help)

Housekeeping release. Improvements to the underlying infrastructure of the rules to improve performance and correctness.

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)
  • Minor cleanups (dc7fd1a)
  • Fix release packaging to exclude references to non-release targets. (19658cd)

Note: Some fixes on release branch have not yet been integrated into master, and so have only commits, not pull requests.

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.

Legacy Kotlin Rules 1.4.0 (Release Candidate 3)

09 May 16:08
0779709
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.4.0

Note: These rules are maintained externally from Google (with Google's oversight and help)

Housekeeping release. Improvements to the underlying infrastructure of the rules to improve performance and correctness.

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)

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.

Legacy Kotlin Rules 1.4.0 (Release Candidate 2)

07 May 20:58
1eefe02
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.4.0

Note: These rules are maintained externally from Google (with Google's oversight and help)

Housekeeping release. Improvements to the underlying infrastructure of the rules to improve performance and correctness.

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)

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.

Legacy Kotlin Rules 1.4.0 (Release Candidate 1)

01 May 16:31
dbf68b5
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.4.0

Note: These rules are maintained externally from Google (with Google's oversight and help)

Housekeeping release. Improvements to the underlying infrastructure of the rules to improve performance and correctness.

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 )

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.

Legacy Kotlin Rules 1.3.0

10 Feb 18:29
686518f
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.3.0

Note: These rules are maintained externally from Google (with Google's oversight and help)

Updates the Kotlin rules for Bazel with a significant set of improvements, including the improvements contained in @cgruber's fork of rules_kotlin which is considered "upstreamed" as of this release.

Notable changes:

  • Various to run against modern versions of Bazel (remote deprecated/removed API usages)
  • Support for Kotlin 1.3 (cgruber#7)
    • Support custom "repositories" for kotlinc to permit non-default kotlinc versions
    • Support custom toolchains to permit Kotlin and Java language version settings.
      • using with kotlinc < v1.3 now not supported, due to different stdlib/runtime artifact handling, but older language versions allowed with a custom toolchain.
  • Fixes to friends/internal handling (#222)
  • Use jarjar in the persistent worker, so as not to leak its own deps into the compilation job (cgruber#4)
  • Permit full compile-time classpath to be passed to compiler (cgruber#5)
    • This disables the very naive strict-deps implementation, which was based on limiting the classpath, which forced additional declarations of "upstream" jars containing compiler-necessary bytecode such as supertypes). A future effort to add strict deps rooted in proper deps/symbol analysis is needed.
  • Quiesce java9+ reflective access warnings (cgruber#15)
  • Add exports= to kt_jvm_library() (cgruber#7)
  • Add exports= to kt_jvm_import() (cgruber#18) (
  • Properly handle java version semantics, to call --multi-release under the right conditions (cgruber#23)
  • Fix building on windows (#193)
  • Java launcher update (#199)
  • Infer test class from test name, by default, in kt_jvm_unit_test() (#209, #257)
  • Handle various packaging of javascript deps for kt_js_import() (#223)
  • Fix bad jdeps handling (#234 / #235)
  • Support jvm targets later than 1.8 (#229 / #236)
  • Fix regression where tags were not being propagated through kt_android_library #255

Plus:

  • Various cleanups, refactors, examples and tests.
  • Various regressions along the way

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, @puffnfresh, @jasonwyatt, @keith, @iirina, @mig35, @pbsf, @philwo, @Globegitter, @szinn. Special advisory thanks to @shs96c.

Legacy Kotlin Rules 1.3.0 (Release Candidate 4)

15 Jan 20:10
686518f
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.3.0

(Release Candidate 4)

Note: These rules are provisionally released with community support, while Google works to "externalize"
their internal kotlin rules. Support will be best-effort during this phase.

Updates the Kotlin rules for Bazel with a significant set of improvements, including the improvements contained in @cgruber's fork of rules_kotlin which is considered "upstreamed" as of this release.

Notable changes:

  • Various to run against modern versions of Bazel (remote deprecated/removed API usages)
  • Support for Kotlin 1.3 (cgruber#7)
    • Support custom "repositories" for kotlinc to permit non-default kotlinc versions
    • Support custom toolchains to permit Kotlin and Java language version settings.
      • using with kotlinc < v1.3 now not supported, due to different stdlib/runtime artifact handling, but older language versions allowed with a custom toolchain.
  • Fixes to friends/internal handling (#222)
  • Use jarjar in the persistent worker, so as not to leak its own deps into the compilation job (cgruber#4)
  • Permit full compile-time classpath to be passed to compiler (cgruber#5)
    • This disables the very naive strict-deps implementation, which was based on limiting the classpath, which forced additional declarations of "upstream" jars containing compiler-necessary bytecode such as supertypes). A future effort to add strict deps rooted in proper deps/symbol analysis is needed.
  • Quiesce java9+ reflective access warnings (cgruber#15)
  • Add exports= to kt_jvm_library() (cgruber#7)
  • Add exports= to kt_jvm_import() (cgruber#18) (
  • Properly handle java version semantics, to call --multi-release under the right conditions (cgruber#23)
  • Fix building on windows (#193)
  • Java launcher update (#199)
  • Infer test class from test name, by default, in kt_jvm_unit_test() (#209, #257)
  • Handle various packaging of javascript deps for kt_js_import() (#223)
  • Fix bad jdeps handling (#234 / #235)
  • Support jvm targets later than 1.8 (#229 / #236)
  • Fix regression where tags were not being propagated through kt_android_library #255

Plus:

  • Various cleanups, refactors, examples and tests.
  • Various regressions along the way

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, @puffnfresh, @jasonwyatt, @keith, @iirina, @mig35, @pbsf, @philwo, @Globegitter, @szinn. Special advisory thanks to @shs96c.

Legacy Kotlin Rules 1.3.0 (Release Candidate 3)

06 Dec 22:45
0d65067
Compare
Choose a tag to compare

Kotlin rules for Bazel - Legacy Rules 1.3.0

(Release Candidate 3)

Note: These rules are provisionally released with community support, while Google works to "externalize"
their internal kotlin rules. Support will be best-effort during this phase.

Updates the Kotlin rules for Bazel with a significant set of improvements, including the improvements contained in @cgruber's fork of rules_kotlin which is considered "upstreamed" as of this release.

Notable changes:

  • Various to run against modern versions of Bazel (remote deprecated/removed API usages)
  • Support for Kotlin 1.3 (cgruber#7)
    • Support custom "repositories" for kotlinc to permit non-default kotlinc versions
    • Support custom toolchains to permit Kotlin and Java language version settings.
      • using with kotlinc < v1.3 now not supported, due to different stdlib/runtime artifact handling, but older language versions allowed with a custom toolchain.
  • Fixes to friends/internal handling (#222)
  • Use jarjar in the persistent worker, so as not to leak its own deps into the compilation job (cgruber#4)
  • Permit full compile-time classpath to be passed to compiler (cgruber#5)
    • This disables the very naive strict-deps implementation, which was based on limiting the classpath, which forced additional declarations of "upstream" jars containing compiler-necessary bytecode such as supertypes). A future effort to add strict deps rooted in proper deps/symbol analysis is needed.
  • Quiesce java9+ reflective access warnings (cgruber#15)
  • Add exports= to kt_jvm_library() (cgruber#7)
  • Add exports= to kt_jvm_import() (cgruber#18) (
  • Properly handle java version semantics, to call --multi-release under the right conditions (cgruber#23)
  • Fix building on windows (#193)
  • Java launcher update (#199)
  • Infer test class from test name, by default, in kt_jvm_unit_test() (#209)
  • Handle various packaging of javascript deps for kt_js_import() (#223)
  • Fix bad jdeps handling (#234 / #235)
  • Support jvm targets later than 1.8 (#229 / #236)

Plus:

  • Various cleanups, refactors, examples and tests.
  • Various regressions along the way

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, @puffnfresh, @jasonwyatt, @keith, @iirina, @mig35, @pbsf, @philwo, @Globegitter, @szinn. Special advisory thanks to @shs96c.