Bugfix and tooling update for Kotlin 1.1

Kotlin 1.1.60 adds experimental support for Kotlin/JS incremental compilation

Gabriela Motroc
Kotlin

© Shutterstock / dedMazay

Kotlin 1.1.60, a new bugfix and tooling update for Kotlin 1.1. adds experimental support for incremental compilation in Kotlin/JS Gradle projects —its aim is to significantly reduce build times during development. But that’s not all! We’re taking a closer look at this update.

Kotlin 1.1.60, a new bugfix and tooling update for Kotlin 1.1, has just been released — it is compatible with all versions of IntelliJ IDEA from 2016.3 until 2017.3, as well as with Android Studio 2.3, 3.0 and 3.1 Canary.

Kotlin 1.1.60 highlights

  • Experimental support for Kotlin/JS incremental compilation
  • New features to JSR-305 custom nullability annotations support
  • Bug fixes in the automatic Parcelable implementation generator and provides it with IDE support
  • Improves Gradle incremental builds
  • New inspections, performance improvements and bug fixes in the IntelliJ plugin

 

Dmitry Jemerov explained in a blog post announcing the update that “Kotlin 1.1.60 introduces experimental support for incremental compilation in Kotlin/JS Gradle projects, which can significantly reduce build times during development, with compilation of a small local change taking seconds instead of a minute for a full non-incremental rebuild.”

Keep in mind that this experimental support is disabled by default — you can enable it by setting kotlin.incremental.js=true in gradle.properties or local.properties.

SEE ALSO: Javalin — A very lightweight web framework for both Kotlin and Java developers

The support for JSR-305 nullability annotations has been improved and received bug fixes in this release.

  1. The JSR-305 default type qualifiers can now specify ElementType.TYPE_USE to affect all type usages within the annotated scope, including type arguments, upper bounds of type parameters and wildcard types
  2. Library maintainers who provide type qualifier nickname and type qualifier default annotations can now control the migration status of the annotations by marking the annotation types with @UnderMigration. This annotation is shipped in a new artifact kotlin-annotations-jvm that should be added as a dependency for the library, e.g compile "org.jetbrains.kotlin:kotlin-annotations-jvm:1.1.60" in Gradle. The @UnderMigration(status = ...) value specifies how the compiler treats nullability violations detected in the annotated API usages and can be one of MigrationStatus.STRICTMigrationStatus.WARN and MigrationStatus.IGNORE, making the compiler produce errors, warnings or neither respectively. MigrationStatus.STRICT is considered experimental.
  3. Library users who, for some reason, need a migration status different from that offered by a library maintainer can set up the nullability checks by passing the compiler flags in one of the forms:
  • -Xjsr305={strict|warn|ignore} that now only affects all annotations which do not have an @UnderMigration status (The strict mode is experimental)
  • -Xjsr305=under-migration:{strict|warn|ignore} overrides the behavior of all @UnderMigrationannotations
  • -Xjsr305=@<fq.name>:{strict|warn|ignore} where fq.name is a fully qualified name of a specific annotation to override the migration status.
  • (The flags can be combined.) 

A lot of known issues in the experimental automatic Parcelableimplementation generator have been fixed. Plus,  there’s IDE support in the form of diagnostics and quick fixes aimed to help with using @Parcelize.

SEE ALSO: Kotlin/Native IDE support: CLion 2017.3 EAP now available for download

Furthermore, the Kotlin code in the test source set of a Gradle project is re-compiled incrementally whenever the main sources are changed and the up-to-date checks are more reliable thanks to a few bug fixes.

Last but not least, there are a bunch of improvements in the Kotlin IntelliJ IDEA plugin:

  • New project wizard to create a Gradle project with Kotlin DSL
  • A quick fix to convert IterableSequence and Array into each other in case of type mismatch
  • A quick fix to make a type parameter reified when that is required by its usage
  • A lot of bug fixes and performance improvements

You can find the complete list of changes in the changelog

Author
Gabriela Motroc
Gabriela Motroc is an online editor for JAXenter.com. Before working at S&S Media she studied International Communication Management at The Hague University of Applied Sciences.

Comments
comments powered by Disqus