Kotlin 2.0

Par:
fredericmazue

mer, 22/05/2024 - 11:48

Jetbrains a annoncé la disponibilité de la nouvelle version de son langage maison : Kotlin 2.0. Les développeurs apprécieront que les plugins Kotlin qui prennent en charge Kotlin 2.0.0 sont regroupés dans les dernières versions d'IntelliJ IDEA et Android Studio. Vous n'avez pas besoin de mettre à jour le plugin Kotlin dans votre IDE. Tout ce que vous avez à faire est de changer la version de Kotlin en Kotlin 2.0.0 dans vos scripts de build.

Kotlin 2.0 se fait essentiellement remarquer par son nouveau compilateur K2, désormais stable et utilisé par défaut. Jetbrains souligne que ce nouveau compilateur est stable pour toutes les plates-formes cibles : JVM, Native, Wasm et JS. JetBrains souligne encore que  le nouveau compilateur apporte des améliorations majeures en termes de performances, accélère le développement de nouvelles fonctionnalités de langage, unifie toutes les plates-formes prises en charge par Kotlin et fournit une meilleure architecture pour les projets multiplateformes.

JetBrains a assuré la qualité du nouveau compilateur en compilant avec succès 10 millions de lignes de code provenant de projets utilisateur et internes sélectionnés. 18 000 développeurs et 80 000 projets ont été impliqués dans le processus de stabilisation, essayant le nouveau compilateur K2 dans leurs projets et signalant tous les problèmes rencontrés.

Pour rendre le processus de migration vers le nouveau compilateur aussi fluide que possible, JetBrains a publié un guide de migration du compilateur K2 . Ce guide explique les nombreux avantages du compilateur, met en évidence les modifications que vous pourriez rencontrer et décrit comment revenir à la version précédente si nécessaire.

Améliorations de Kotlin Multiplateforme

Les nouveautés apportées par ce nouveau comilateur K2 sont très nombreuses. Nous renvoyons le lecteur à la note de version. Nous remarquons ici que JetBrains a apporté des améliorations au compilateur K2 lié à Kotlin Multiplatform dans les domaines suivants :

  • Séparation des sources communes et de la plateforme lors de la compilation
  • Différents niveaux de visibilité des déclarations attendues et réelles

Différents niveaux de visibilité des déclarations attendues et réelles

Avant Kotlin 2.0.0, si vous utilisiez des déclarations attendues et réelles dans votre projet Kotlin Multiplatform, elles devaient avoir le même niveau de visibilité. Kotlin 2.0.0 prend désormais également en charge différents niveaux de visibilité, mais uniquement si la déclaration réelle est plus permissive que la déclaration attendue.

Séparation des sources communes et de la plateforme lors de la compilation

Auparavant, la conception du compilateur Kotlin l’empêchait de séparer les ensembles de sources communes et de plate-forme au moment de la compilation. En conséquence, le code commun pouvait accéder au code de la plate-forme, ce qui entraînait des comportements différents entre les plates-formes. De plus, certains paramètres du compilateur et dépendances du code commun étaient utilisés pour s'infiltrer dans le code de la plate-forme. Avec le compilater K2, ceci n'est plus possible.

Plugin de compilateur expérimental Kotlin Power-assert

On remarque enfin que Kotlin 2.0.0 introduit un plugin expérimental de compilateur Power-assert. Ce plugin améliore l'expérience d'écriture de tests en incluant des informations contextuelles dans les messages d'échec, rendant le débogage plus facile et plus efficace.

Les développeurs doivent souvent utiliser des bibliothèques d'assertions complexes pour écrire des tests efficaces. Le plugin Power-assert simplifie ce processus en générant automatiquement des messages d'échec qui incluent des valeurs intermédiaires de l'expression d'assertion. Cela aide les développeurs à comprendre rapidement pourquoi un test a échoué.

Lorsqu'une assertion échoue lors d'un test, le message d'erreur amélioré affiche les valeurs de toutes les variables et sous-expressions de l'assertion, indiquant clairement quelle partie de la condition a provoqué l'échec. Ceci est particulièrement utile pour les assertions complexes où plusieurs conditions sont vérifiées.

L'activation de ce plugin expérimental se fait dand le fichier build.gradle(.kts) :

plugins {
    kotlin("multiplatform") version "2.0.0"
    kotlin("plugin.power-assert") version "2.0.0"
}

powerAssert {
    functions = listOf("kotlin.assert", "kotlin.test.assertTrue")
}