La mise à jour du langage Kotlin pour la JVM, Android et le navigateur, inclut plusieurs nouvelles fonctionnalités, dont une capacité expérimentale pour la concaténation de chaînes de caractères basée sur la JVM via l'invocation de méthodes dynamiques invokedynamic. Depuis le JDK 9, la concaténation de chaînes sur la JVM a été réalisée par l'invocation de la méthode dynamique, l'instructionde code invokedynamic dans le bytecode. Cette méthode est plus rapide et consomme moins de mémoire que l'implémentation précédente et laisse la place à de futures optimisations sans obliger à des modifications du bytecode.

L’implémentation de ce mécanisme dans Kotlin permet d’améliorer les performances. Désormais, les concaténations de chaînes peuvent être compilées en invocations dynamiques pour les cibles du JDK 9 ou ultérieures. La fonctionnalité expérimentale peut s’appliquer dans les cas suivants, en ajoutant l'option -Xstring-concat :

 - String.plus dans l’opérateur (a + b), formes explicites (a.plus(b)), et de référence ( (a::plus)(b) ).

- toString pour les classes inligne et de données.

- Modèles de chaînes, à l'exception de ceux avec un seul argument non constant.

 Les développeurs doivent invoquer l'une des règles suivantes pour activer la concaténation de chaîne invokedynamic :

 - indy-with-constants pour effectuer une concaténation invokedynamic sur des chaînes avec StringConcatFactory.makeConcatWithConstants().

- indy pour effectuer une concaténation invokedynamic sur des chaînes avec StringConcatFactory.makeConcat().

- inline pour revenir à la concaténation classique via StringBuilder.append().

 Kotlin 1.4.20 comporte également les fonctionnalités suivantes :

 - Pour Kotlin/JS, de nouveaux modèles sont proposés pour l'assistant de projet. Le contrôle de la configuration de projet a été amélioré grâce à une capacité DSL améliorée. Le compilateur IR a été doté d’une nouvelle manière de compiler les projets, en ignorant les erreurs de code.

- Kotlin/JS Gradle DSL bénéficie désormais d’une configuration et d’une personnalisation simplifiées des projets. De plus, un point unique est offert pour la configuration de webpack.

- L'assistant de projet pour Kotlin a s’enrichit de templates ajustables pour les applications Kotlin/JS. Les templates sont disponibles pour le navigateur, et pour les environnements de runtime Node.js et React.

- Les entrées dans le fichier package.json peuvent être effectuées à partir du script de build Gradle.

- Une fonction expérimentale de résolution sélective des dépendances de Yarn est disponible, configurable à partir du script de build Gradle.

- La cible du JDK 15 a été ajoutée.

- Les incohérences de comportement entre Kotlin/Native et Kotlin/JVM ont été corrigées dans certains cas particuliers, comme l'initialisation des propriétés. Pour Kotlin/Native, les exceptions Objective-C peuvent également être intégrées dans des exceptions Kotlin.

- La bibliothèque standard comprend des extensions expérimentales pour java.nio.file.Path. De plus, les performances de la fonction String.Replace ont été améliorées.

 Le compilateur en ligne de commande pour Kotlin 1.4.20 est téléchargeable sur GitHub. Les utilisateurs de l’IDE IntelliJ Idea et Android Studio peuvent trouver à cette adresse des instructions pour mettre à jour leur plug-in Kotlin.