AccueilActualités informatiqueLangage de programmation : Kotlin 1.6 scelle les instructions when

Langage de programmation : Kotlin 1.6 scelle les instructions when

JetBrains a publié Kotlin 1.6, la deuxième version de fonctionnalités du langage de programmation de cette année. Cette version stabilise principalement les fonctionnalités du langage introduites à titre expérimental dans la version 1.5.x, telles que l’intégralité de l’interface utilisateur et la possibilité d’utiliser des outils de programmation. when-et les fonctions d’interruption comme types de parents.

À partir de Kotlin 1.6, il est possible d’utiliser les versions de l’API de chacune des trois précédentes versions de fonctionnalités, au lieu des deux précédentes. Il fonctionne donc avec les versions 1.3, 1.4 et 1.5 de l’API, tout comme Kotlin 1.5.

Sommaire

Les scellés (sealed) ou complets (exhaustive) whenétaient présents en avant-première dans la version 1.5.30. Scellé signifie que les instructions doivent avoir une branche pour tous les cas possibles, avec en cas de doute un else-couvre les cas non traités.

Pour les cas incomplets when-le compilateur crache désormais l’avertissement suivant :

Non-exhaustive 'when' statements on sealed class/interface 
will be prohibited in 1.7. Add an 'is InstantMessage' branch
or 'else' branch instead.

Actuellement, le code peut être compilé avec l’avertissement, mais à partir de Kotlin 1.7, le compilateur devrait s’arrêter avec un message d’erreur.

Une autre nouveauté était également présente en avant-première dans la version 1.5.30 et est désormais considérée comme stable : avec la version 1.6, les fonctions interruptives sont autorisées comme type de parent. Les parents qui utilisent suspend peuvent être utilisées dans des programmes parallèles pour interrompre l’exécution de coroutines. Elles peuvent par exemple attendre le transfert d’un fichier sur le réseau sans bloquer le thread en cours. Le concept de coroutines est connu de Kotlin depuis la version 1.1.

En outre, Kotlin 1.6 stabilise la conversion d’un type de fonction régulière en un type de fonction interruptive. Lors du passage d’un type régulier approprié à une fonction qui attend un type de fonction interruptif en paramètre, le compilateur le convertit automatiquement.

La variante du langage de programmation Kotlin/JVM conçue pour la machine virtuelle Java utilise, à partir de la version actuelle, des annotations répétables pour Java, qui connaît les Repeatable Annotations depuis Java 8. Kotlin reconnaît ainsi les annotations Java, et via @kotlin.annotation.Repeatable les fonctions Kotlin marquées comme telles sont également valables pour Java.

Pour Kotlin/Native, le nouveau gestionnaire de mémoire, présenté pour la première fois en été 2020, est disponible dans la version actuelle. Il doit permettre un suivi plus efficace de l’utilisation de la mémoire et la libération des zones de mémoire inutilisées que la gestion traditionnelle de la mémoire. Il vise en outre à améliorer la gestion de la mémoire lors de la programmation parallèle, ce qui permet entre autres de supprimer les restrictions lors du partage d’objets entre les threads.

La bibliothèque standard de Kotlin apporte une nouvelle fonction de lecture des inputs : readln() lance une exception lorsque la fin de la source d’entrée est atteinte avec EOF. Cela supprime la procédure nécessaire pour readLine() est nécessaire pour vérifier que la source null. La nouvelle fonction readlnOrNull() se comporte comme l’ancienne readLine(), montre la possible null mais l’indique dans son nom. De plus, les nouvelles fonctions d’entrée ont un nom cohérent avec la fonction de sortie println().

L’API Duration avait déjà fait l’objet de quelques ajouts dans Kotlin 1.5. Avec Kotlin 1.6, les dernières tâches ouvertes sous le capot sont terminées, ce qui fait que l’API est maintenant considérée comme stable. Entre autres, la days-de la fonction toComponents plus récemment appelée Long– au lieu de Int-pour la valeur. Les fonctions étendues marquées comme aperçu dans la version 1.5.30 pour la conversion en une chaîne de caractères via Duration.toString() ainsi que l’analyse inverse d’une chaîne de caractères sont désormais considérées comme stables.

En outre, de nombreuses autres fonctions de la bibliothèque standard sont stables avec Kotlin 1.6, notamment typeOf()la rotation bit à bit via rotateLeft() et rotateRight() ainsi que les fonctions Collection Builder buildMap(), buildList() et buildSet().

Dix ans de Kotlin

Le langage de programmation a fêté son dixième anniversaire le 19 juillet. À ses débuts, Kotlin était limité à la machine virtuelle Java (JVM). Il a particulièrement triomphé sur Android depuis que Google l’a officiellement intégré dans Android Studio en 2017 en tant qu’alternative à Java et l’a déclaré deux ans plus tard comme premier choix pour son système d’exploitation mobile. Mais entre-temps, le langage de programmation a été conçu pour diverses plateformes : Kotlin/Native permet une exécution sans machine virtuelle, surtout pour couvrir des plateformes comme iOS, qui n’ont pas de JVM à bord.

Avec Kotlin/JS, une connexion à JavaScript est également disponible, et depuis Kotlin 1.2, il est possible de créer des projets multiplateformes qui couvrent la JVM et JavaScript avec une seule base de code. Le langage doit son nom, qui attire volontiers les trolls dans les forums de notre pays, à une île située au large de Saint-Pétersbourg. C’est l’équipe JetBrains de cette île qui a initialement développé Kotlin de manière décisive.

Il y a un an, JetBrains a changé le cycle de publication de Kotlin. L’entreprise publie une version de fonctionnalités tous les six mois, avec la version 1.x. Des versions incrémentales avec le numéro de version 1.x.y0 (1.6.10, 1.6.20, …) doivent être publiées tous les deux à trois mois, et des versions de correction de bugs suivent selon les besoins avec le numéro de version 1.x.yz (1.6.11, 1.6.12, …).

D’autres nouveautés de Kotlin 1.6, comme la connexion du plug-in expérimental Gradle Kover pour déterminer la couverture de code, peuvent être consultées sur le blog Kotlin. IntelliJ IDEA devrait automatiquement proposer une mise à jour vers la version actuelle. Il en va de même pour Android Studio, basé sur IntelliJ IDEA. Le compilateur séparé pour la ligne de commande se trouve sur GitHub.

Plus d'articles