Le langage de programmation Kotlin continue d’évoluer avec la version 1.5.30 publié par JetBrains. Parmi les apports, on note la présence de fonctions expérimentales comme les instructions « sealed when » et l’instanciation de classes d’annotation. Ces dernières pourraient devenir officielles dans la version 1.6.0.

Les instructions « sealed when » introduisent un avertissement du compilateur si une instruction  « when » n’est pas exhaustive. L’objectif est de rendre le code plus sûr sans que les développeurs aient besoin d’introduire leurs propres fonctions. Toujours en avant-première, Kotlin peut prendre en charge les fonctions suspend en tant que super types pour créer des super interfaces. Pour l’instant, les développeurs sont limités en ne pouvant pas se servir de plusieurs fonctions suspend. Il n’en demeure pas moins que cette fonction est considérée comme la pièce manquante dans la conception de co-routines Kotlin.

Plusieurs autres aperçus de fonctionnalités

Autre apport cette fois pour Kotlin/JVM, l'instanciation des classes d'annotation donne aux développeurs la possibilité d’appeler des constructeurs de classes d'annotation au sein d’un code spécifique pour obtenir une instance résultante. Ils peuvent aussi spécifier sur le compilateur signale une incompatibilité de nullité basée sur des informations provenant de types spécifiques d’annotations de nullité. Sur la partie annotation opt-in relative pour la bibliothèque standard, de nouvelles règles sont proposées pour l’utilisateurs et la déclaration d’exigences d’annotations opt-in sur différentes cibles.

Parmi les autres évolutions, le langage gagne le support natif pour les terminaux Apple comprenant la puce M1. Pour la bibliothèque standard, des améliorations ont été apportées aux API stdlib Duration et Regex. Ainsi, la sortie de Duration.toString() est maintenant plus lisible. Il est prévu que l'API Duration sera stabilisée dans Kotlin 1.6.0. Par ailleurs, la version 1.5.30 prévoit la possibilité d'utiliser les bibliothèques cinterop dans le code natif partagé, étendant le partage des bibliothèques dépendantes de la plateforme livrées avec Kotlin/Native. De plus, il existe une nouvelle configuration de publication par défaut pour les artefacts Android.