Releases

Kotlin 1.5.30 est disponible!

Read this post in other languages:
English, Русский, 简体中文

Kotlin 1.5.30 étant la dernière version incrémentale avant Kotlin 1.6.0, elle comprend de nombreuses fonctionnalités expérimentales pour le langage et la bibliothèque standard que nous prévoyons de publier dans Kotlin 1.6.0. Essayez-les et faites-nous part de vos commentaires, vous pouvez vraiment influencer le résultat final ! Parmi ces fonctionnalités expérimentales, vous trouverez notamment les déclarations when scellées, des modifications des exigences relatives à l’opt-in, l’instanciation des classes d’annotation et des améliorations des API stdlib Duration et Regex.

Avec Kotlin 1.5.30, vous bénéficiez également de la prise en charge native d’Apple Silicon, du backend Kotlin/JS IR en version bêta, de la possibilité d’utiliser des bibliothèques cinterop personnalisées dans le code natif partagé des applications multiplateformes, de la prise en charge des chaînes d’outils Java fournie par le plugin Kotlin Gradle, et bien plus encore.

Faire la mise à jour vers Kotlin 1.5.30

Cet article donne un aperçu des mises à jour apportées par cette version :

  • Améliorations du langage, avec notamment les déclarations when scellées, la prise en charge des fonctions suspend en tant que supertypes et des modifications des exigences en matière d’opt-in.
  • Améliorations pour Koltin multiplatform, avec notamment la possibilité d’utiliser des bibliothèques cinterop personnalisées dans du code natif partagé et la prise en charge de XCFrameworks comme format de sortie.
  • Améliorations Kotlin/JVM, avec notamment l’instanciation des classes d’annotation et la configuration améliorée de la prise en charge des annotations de nullabilité.
  • Améliorations de Kotlin/Native, avec notamment la prise en charge native d’Apple Silicon et un DSL Kotlin amélioré pour le plugin Gradle CocoaPods.
  • Améliorations pour Kotlin/JS IR, avec notamment le passage du backend JS IR en version bêta et une meilleure expérience de débogage pour le nouveau backend.
  • Améliorations relatives à Gradle, avec notamment la prise en charge des chaînes d’outils Java qui facilite la définition explicite des arguments JVM pour le démon Kotlin.
  • Améliorations de la bibliothèque standard pour les API Duration et Regex.

Mise à jour automatique vers Kotlin 1.5.30

Si vous utilisez IntelliJ IDEA ou Android Studio, vous pouvez opter pour la mise à jour automatique de Kotlin vers sa nouvelle version.

Retrouvez les indications pour l’installation de Kotlin 1.5.30 à la fin de cet article.

Remarque : la dernière version d’IntelliJ IDEA (2021.2) ne prend pas en charge Kotlin 1.5.30. Si vous avez déjà effectué la mise à jour, vous pouvez facilement installer IntelliJ IDEA 2021.1 en utilisant l’application Toolbox App et utiliser Kotlin 1.5.30 dans cette version ou vous attendre la disponibilité de la version 1.5.31.

Langage

La feuille de route de Kotlin prévoit l’ajout de la prise en charge des déclarations when scellées, les annotations d’opt-in, l’amélioration de l’inférence de type et la stabilisation de l’inférence du constructeur. 

Kotlin 1.5.30 fournit un aperçu de ces fonctionnalités, dont la publication est prévue pour la version 1.6.0.

Déclarations when scellées

Les when scellées ont reçu plus de 280 votes dans YouTrack. Si vous activez cette fonctionnalité dans la version 1.5.30, le compilateur Kotlin vous avertira si l’une de vos déclarations when n’est pas exhaustive. Cela permet d’améliorer la sécurité de votre code sans que vous ayez à introduire vos propres fonctions.

Essayez cette fonctionnalité et donnez votre avis dans ce ticket YouTrack

Prise en charge des fonctions suspend en tant que supertypes

Kotlin 1.5.30 offre un aperçu de la possibilité d’utiliser des types fonctionnels suspend comme super interfaces, bien qu’il y ait encore quelques limitations. C’est l’une des pièces manquantes dans la conception des coroutines de Kotlin.

Activez cette fonctionnalité, essayez-la et donnez votre avis dans ce ticket YouTrack.

Modifications des exigences en matière d’opt-in

Kotlin 1.5.30 marque une étape supplémentaire vers la publication des annotations d’opt-in  :

  • Présentation de nouvelles règles pour l’utilisation et la déclaration des annotations d’exigences d’opt-in sur différentes cibles. 
  • Exigence d’opt-in même pour les utilisations implicites d’une API expérimentale. Par exemple, si le type de retour de la fonction est marqué comme un élément d’API expérimental, l’utilisation de la fonction nécessitera un opt-in même si la déclaration n’est pas marquée comme nécessitant un opt-in explicitement.

Testez ces nouveautés et partagez vos retours dans ce ticket YouTrack

En savoir plus sur les exigences en matière d’opt-in

Amélioration de l’inférence de type sur les types génériques récursifs

Lorsque l’inférence de type sur les types génériques récursifs est activée, le compilateur de Kotlin 1.5.30 peut inférer un argument de type en se basant uniquement sur les limites supérieures du paramètre de type correspondant s’il s’agit d’un générique récursif. Cela permet de créer divers modèles avec des types génériques récursifs qui sont souvent utilisés en Java pour réaliser des API de constructeur.

Élimination des restrictions d’inférence du constructeur

Lorsque l’élimination des restrictions d’inférence du constructeur est activée, Kotlin 1.5.30 supprime supprime les limites d’inférence du constructeur. Vous pouvez non seulement spécifier l’information de type que l’inférence du constructeur peut déduire, mais également utiliser la fonction get sur celle-ci. Par exemple, vous pouvez appeler get() à l’intérieur d’un argument lambda de buildList() sans arguments de type explicitement spécifiés.

Kotlin Multiplatform

Kotlin 1.5.30 apporte plusieurs améliorations pour Kotlin Multiplatform :

  • Possibilité d’utiliser des bibliothèques cinterop personnalisées dans du code natif partagé, ce qui étend la possibilité de partager des bibliothèques dépendantes de la plateforme livrées avec Kotlin/Native. 
  • Prise en charge de XCFrameworks comme format de sortie pour tous les projets Kotlin Multiplatform. XCFrameworks permet de regouper la logique pour toutes les plateformes et architectures cibles dans un seul paquet et il n’est pas nécessaire de supprimer les architectures inutiles avant de publier l’application sur l’App Store.
  • Nouvelle configuration de publication par défaut pour les artefacts Android. Cette configuration sera compatible avec tout type de build (comme debug ou release) par défaut. Avant la version 1.5.30, les métadonnées générées par le plugin Gradle maven-publish lors de la publication d’une bibliothèque multiplateforme pour Android incluaient l’attribut de type de build pour chaque variante Android publiée. Cela le rendait compatible uniquement avec le même type de build que celui utilisé par l’utilisateur de la bibliothèque. 

Kotlin/JVM

Avec Kotlin 1.5.30, Kotlin/JVM reçoit les mises à jour suivantes :

Kotlin/Native

Kotlin 1.5.30 apporte les améliorations suivantes pour Kotlin/Native :

Kotlin/JS

Kotlin 1.5.30 fournit les améliorations suivantes pour Kotlin/JS :

Gradle

Kotlin 1.5.30 améliorer l’expérience utilisateur du plugin Gradle Kotlin avec les fonctionnalités suivantes:

build.gradle.kts

gradle.properties

Bibliothèque standard

Kotlin 1.5.30 apporte des améliorations aux API Duration et Regex de la bibliothèque standard :

Améliorations de l’API Duration

Comme indiqué dans la feuille de route des bibliothèques, nous allons stabiliser l’API Duration dans Kotlin 1.6.0. C’est donc la dernière occasion de l’essayer et de nous faire part de vos commentaires sur les modifications que vous souhaitez. Merci de partager vos commentaires dans ce KEEP.

Kotlin 1.5.30 offre un aperçu des améliorations de l’API. La sortie de Duration.toString() est maintenant plus lisible. Par exemple, Duration.minutes(920).toString() produit 15h 20m au lieu de 920m.

Une durée négative est désormais précédée d’un signe moins (-) et est entourée de parenthèses si elle est constituée de plusieurs éléments : -12m et -(1h 30m).

Cette version fournit également un aperçu de nouvelles fonctions pour l’analyse syntaxique de Duration à partir de String :

  • parse() analyse les objets Duration à partir de chaînes formatées comme les toString() de Duration ou à partir de chaînes représentant des durées ISO 8601 (comme les sorties toIsoString()).
  • parseIsoString() analyse les objets Duration à partir de chaînes représentant des durées ISO 8601.
  • Équivalents *OrNull() pour les deux fonctions.

Améliorations de l’API Regex

Kotlin 1.5.30 fournit de nouvelles fonctions expérimentales pour les expressions régulières :

  • matchesAt() vérifie si une expression régulière a une correspondance dans la position spécifiée d’une chaîne.
  • matchAt() renvoie la correspondance si elle a été trouvée.
  • splitToSequence() est une fonction différée de split(). Elle divise la chaîne autour des correspondances de l’expression régulière donnée, mais renvoie le résultat sous forme de Sequence. Une fonction similaire a également été ajoutée à CharSequence.

Comment installer Kotlin 1.5.30

Si vous utilisez IntelliJ IDEA ou Android Studio, votre IDE vous proposera de faire la mise à jour vers Kotlin 1.5.30 automatiquement. Vous pouvez également faire la mise à jour manuellement en suivant ces instructions

Vous pouvez télécharger les dernières versions des IDE suivants pour bénéficier d’une prise en charge étendue pour Kotlin :

  • IntelliJ IDEA – pour développer des applications Kotlin pour différentes plateformes.
  • Android Studio – pour le développement d’applications mobiles Android et multiplateformes.

Assurez-vous aussi de mettre à jour les bibliothèques kotlinx vers des versions compatibles et de spécifier la version 1.5.30 de Kotlin dans les scripts de build de vos projets existants.

Si vous avez besoin du compilateur de ligne de commande, il peut être téléchargé à partir de la page GitHub de la version.

En cas de problème

Tenez-vous au courant des dernières fonctionnalités de Kotlin ! Inscrivez-vous en remplissant le formulaire à droite de cet article pour recevoir les actualités relatives à Kotlin.

En lire et en voir plus

Contributeurs externes 👏👏👏

Nous remercions tous nos contributeurs externes dont les requêtes pull ont été incluses dans cette version :

Jinseong Jeon, pyos, Tianyu Geng, Mark Punzalan, Mads Ager, Ivan Gavrilovic, Steven Schäfer, Vladimir Ivanov, Hung Nguyen, Matthew Gharrity, Jiaxiang Chen, Ivan Kochurkin, Iaroslav Postovalov, Toshiaki Kameyama, Udi Cohen, Xin Wang, bracadabra

Discover more