Kotlin 1.1.3 is out


We’re happy to announce the release of Kotlin 1.1.3, a new bugfix and tooling update for Kotlin 1.1. The update brings a number of new IDE features, performance improvements in the compiler and IDE, efficiency improvements for generated bytecode, and lots of bugfixes. The update is compatible with all versions of IntelliJ IDEA from 2016.2 until 2017.2, as well as with Android Studio 2.3 and 3.0 Canary.

Note: There is an issue with Android Studio 3.0 Canary 4 which prevents correct loading of Kotlin plugin updates, so you won’t be able to install this update into Canary 4. Kotlin 1.1.3 will be bundled into Android Studio 3.0 Canary 5.

The complete list of changes in this release can be found in the changelog.

We’d like to thank our external contributors whose pull requests were included in this release: AJ Alt, Chris Horner, Gaetan Zoritchak, Jonathan Leitschuh, Kirill Rakhman, Marek Langiewicz, Nadia Humbert-Labeaumaz, Shaun Reich, Yoshinori Isogai, and last but not least Yuli Fiterman (who contributed an initial implementation of one of the major new features in this release, parameter/type hints). Thanks to everyone who tried the EAP builds and sent us feedback, too!

JDK 9 Support

This release adds initial support of compiling Kotlin code against a Java 9 JDK. Note that module-based visibility checks will be supported in future 1.1.x updates; as of 1.1.3, Kotlin doesn’t use information from module-info.java in any way.

Maven Parallel Builds

The Kotlin Maven plugin now supports parallel builds, so if you run Maven with the -T option, it will now be able to compile multiple Kotlin modules in parallel.

kapt Incremental Compilation

kapt now builds Java stubs incrementally, which makes builds using annotation processing significantly faster.

TODO Highlighting

Usages of the TODO() method are now highlighted in the editor as TODOs and shown in the TODO view.

kotlin113-todo

Semantic Highlighting

If you enable semantic highlighting in the Colors & Fonts settings, Kotlin will highlight the definition and all occurrences of every local variable and parameter with a distinct color.

kotlin113-semantic-highlighting

Parameter Name Hints

Following the lead of IntelliJ IDEA’s Java support, Kotlin now supports showing editor hints for parameter names in calls where the meaning of the arguments may not be clear from the context. This is particularly useful for calling Java code from Kotlin – in pure Kotlin code, such situations should be resolved through the use of named arguments.

kotlin113-parameter-name

Type Hints

Similarly to the previous feature, the Kotlin plugin now supports showing inferred types of variables, functions and parameters in editor hints. This functionality is disabled by default; you can enable it in the editor appearance settings.

kotlin113-type-hints

How to update

To update the plugin, use Tools | Kotlin | Configure Kotlin Plugin Updates and press the “Check for updates now” button. Also, don’t forget to update the compiler and standard library version in your Maven and Gradle build scripts.

As usual, if you run into any problems with the new release, you’re welcome to ask for help on the forums, on Slack (get an invite here), or to report issues in the issue tracker.

Let’s Kotlin!

This entry was posted in Releases and tagged . Bookmark the permalink.

28 Responses to Kotlin 1.1.3 is out

  1. doubtful says:

    any support for incremental support for the command line tools ? or at least the ability to compile a single unit of code regardless of interdependencies…. we don’t all love the one or two supported IDE’s

    • Dmitry Jemerov says:

      With both Maven and Gradle, you have full support for incremental compilation, and they can be used entirely from the command line, without any IDE. Not sure what you mean by “compiling a single unit of code regardless of interdependencies”; Kotlin does require access to the dependencies of the code you’re compiling, and it’s not really possible to change that.

  2. Alexander says:

    What are precise implications of this? Doesn’t Gradle still disable incremental compilation when annotation processors are present on classpath? Or does kapt support incremental compilation already? If so, what’s incremental and what is not?

  3. Sanny says:

    I always turn off parameter name hints as it pollutes code most of the time (I like brief code). And I will not use type hints because of same reason.

    Cool thing would be to have type hints still right in the code but displayed on manner of variable values in the code during debugging. So, while debugging you would see values, and while coding you would see types instead. All in beautiful grey.

    • junkdog says:

      I’ve mapped CTRL-Insert to toggling type hints; it can be pretty useful when coding against a verbose or unfamiliar API.

  4. Hans says:

    Great update! Love the parameter name hints.

  5. Daniel Gronau says:

    Hey, could someone confirm this problem?

    I installed the Kotlin-Plugin Version: 1.1.3-release-IJ2017.2-1, set the Kotlin-Version in Gradle to 1.1.3. After this, the DSL from graphkool (GraphQL lib) freaks the compiler out. Things like

    .field(“content” .. contentType dataFetcher DataUtils.contentFetcher)

    lead to an exception, while the desugared version works just fine:

    .field(“content”.rangeTo(contentType).dataFetcher(DataUtils.contentFetcher))

    The exception is:

    Error:Kotlin: [Internal Error] org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression at (17,28) in D:/Code/runar/src/main/kotlin/runar/schema/Schema.kt:
    “content”..contentType
    dataFetcher DataUtils.contentFetcher


    Caused by: java.lang.IndexOutOfBoundsException: Empty list doesn’t contain element at index 0.
    at kotlin.collections.EmptyList.get(Collections.kt:45)

  6. atliwen says:

    [ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.1.3:compile (compile) on project hello-world: Execution compile of goal org.jetbrains.kotlin:kotlin-m
    aven-plugin:1.1.3:compile failed: A required class was missing while executing org.jetbrains.kotlin:kotlin-maven-plugin:1.1.3:compile: org/apache/maven/plugin/compiler/Depende
    ncyCoordinate
    [ERROR] —————————————————–
    [ERROR] realm = plugin>org.jetbrains.kotlin:kotlin-maven-plugin:1.1.3
    [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
    [ERROR] urls[0] = file:/B:/maven/Repository/org/jetbrains/kotlin/kotlin-maven-plugin/1.1.3/kotlin-maven-plugin-1.1.3.jar
    [ERROR] urls[1] = file:/B:/maven/Repository/org/sonatype/aether/aether-util/1.13.1/aether-util-1.13.1.jar
    [ERROR] urls[2] = file:/B:/maven/Repository/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar
    [ERROR] urls[3] = file:/B:/maven/Repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar
    [ERROR] urls[4] = file:/B:/maven/Repository/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar
    [ERROR] urls[5] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
    [ERROR] urls[6] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-utils/2.0.6/plexus-utils-2.0.6.jar
    [ERROR] urls[7] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
    [ERROR] urls[8] = file:/B:/maven/Repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
    [ERROR] urls[9] = file:/B:/maven/Repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
    [ERROR] urls[10] = file:/B:/maven/Repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.4/maven-plugin-annotations-3.4.jar
    [ERROR] urls[11] = file:/B:/maven/Repository/org/jetbrains/kotlin/kotlin-compiler/1.1.3/kotlin-compiler-1.1.3.jar
    [ERROR] urls[12] = file:/B:/maven/Repository/org/apache/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.jar
    [ERROR] urls[13] = file:/B:/maven/Repository/org/apache/maven/shared/maven-shared-utils/3.0.0/maven-shared-utils-3.0.0.jar
    [ERROR] urls[14] = file:/B:/maven/Repository/commons-io/commons-io/2.4/commons-io-2.4.jar
    [ERROR] urls[15] = file:/B:/maven/Repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
    [ERROR] urls[16] = file:/B:/maven/Repository/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.jar
    [ERROR] urls[17] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-compiler-api/2.7/plexus-compiler-api-2.7.jar
    [ERROR] urls[18] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-compiler-manager/2.7/plexus-compiler-manager-2.7.jar
    [ERROR] urls[19] = file:/B:/maven/Repository/org/codehaus/plexus/plexus-compiler-javac/2.7/plexus-compiler-javac-2.7.jar
    [ERROR] Number of foreign imports: 1
    [ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]]
    [ERROR]
    [ERROR] —————————————————–: org.apache.maven.plugin.compiler.DependencyCoordinate
    [ERROR] -> [Help 1]

  7. Pingback: Kotlin 1.1.3 veröffentlicht: Java 9 Support & buntes Highlighting - JAXenter

  8. Laszlo says:

    Since I updated to this version of plugin Android Studio is freezing after couple of seconds of usage and only option at that point is to kill it. I can’t even use older plugin with latest android studio because it doesn’t let me to install it.

    • Dmitry Jemerov says:

      Could you please file a YouTrack issue and attach the entire contents of the logs directory? (To locate the directory, use Help | Show Log in…)

    • TIAGO LOUIS ZONTAG says:

      Same problem here, random freezes.. some solutions for that?

  9. Jan says:

    Thumb up for parameter name hints.
    JavaScript compilation is now 2x slower though. Our project compile time was:
    <1.1 Kotlin – 30s
    1.1.2 – 60s
    1.1.3 – 120s
    Tested on multiple workstations. Shall I raise a ticket for that?

  10. Max says:

    As it is possible to target java7 with kotlin it would be just consequent to also support jdk7 as compile engine. Right now it is not possible because kotlin-gradle-plugin is compiled with target java8 – resulting in a major.minor error when trying to use kotlin with a jdk7. There are still legacy projects based on jdk7 (even if jdk7 is not maintained any more), but it is not possible to introduce kotlin like this.

    I know that it is possible to use jdk8 and set the compile-target as java7, but that bears always the danger that a developer uses a jdk8 class which ultimately will not be found in the java7 environment – resulting in a run-time error.

    • Dmitry Jemerov says:

      The JDK under which Kotlin runs is not related to the JDK against which the project is compiled. You can run Kotlin under JDK 8 and compile against JDK 7 (using -jdk-home command line argument for kotlinc or the equivalent options in Maven, Gradle and IntelliJ), and in that case an attempt to use a JDK 8 class will be a compilation error.

  11. Mark Vedder says:

    I’m loving the Type Hints!

  12. Daniel Gomez says:

    Semantic hightlights and param names are just for Android Studio 3.0 Canary? I cant find those options on 2.3

  13. Jack Zhu says:

    has 1.1.3 solved the “accidental override getter/setter methods defined in superTypes” ??
    this issue really really sucks, and causes too much redundant coding work.

    • Dmitry Jemerov says:

      No. This is a fairly difficult design issue, and we don’t have any definite plans to change Kotlin’s behavior at this time.

  14. Miguel says:

    Type Hints are useful but it’s just a bandaid for the problem of too much type inference. Type Hints are not going to help you when you’re reading code on GitHub or somewhere else. In adopting Kotlin I’m encouraging my team to be avoid too much inference and to write out the types explicitly.

  15. Daniel Huhn says:

    Are there any plans to support CTRL-Click onto type hints?

    I often want to jump to the decompiled definition of a variable, currently I click on the methods, look for the return type and click there. It works but is complictated in case the return type is a generic parameter.

    • Dmitry Jemerov says:

      No, we don’t plan to make the hints interactive at this time. To go to the variable type, you can use the Navigate | Type Declaration action (Ctrl-Shift-B or Cmd-Shift-B if you’re on Mac OS).

Comments are closed.