Kotlin 1.6.0, dernière version disponible du langage promu par JetBrains pour le développement JVM, web et mobile, comporte un gestionnaire de mémoire pour le développement natif. Encore en test, cette fonction pour Kotlin/Native, qui compile le code en binaires natifs, rapproche le langage d'une expérience de développement cohérente. Il lève les restrictions existantes sur le partage d'objets entre les threads et offre des primitives de programmation concurrente sans fuite, sûres, et ne nécessitant pas de gestion ou d'annotations spéciales.

Le gestionnaire de mémoire est l’une des nombreuses fonctionnalités de cette version 1.6.0 de Kotlin publiée le 16 novembre dernier, qualifiée de version de stabilisation. Des fonctionnalités encore en phase expérimentale dans la version précédente sont désormais disponibles par défaut dans Kotlin 1.6.0.

D’autres évolutions prévues

La dernière itération de Kotlin comprend d’autres évolutions listées ci-dessous.

- Pour Kotlin/Native, la dépendance LLVM a été retravaillée, en supportant la version à 11.1.0 avec une taille de dépendance réduite et d'autres avantages.

- Les instructions scellées when produisent un avertissement du compilateur si une instruction when n'est pas exhaustive. Cette fonctionnalité, dont l’aperçu avait été introduit dans Kotlin 1.5.30, est désormais considérée comme stable. Elle rend le code plus sûr sans que les développeurs aient besoin d'introduire leurs propres fonctions.

- Le support est stabilisé pour l'implémentation de la suspension des types fonctionnels en tant que super interfaces. Cela manquait dans la conception des co-routines de Kotlin. De plus, la conversion des types fonctionnels réguliers en types fonctionnels suspendus est stabilisée. Les développeurs peuvent maintenant passer n'importe quelle expression d'un type fonctionnel régulier approprié où la suspension est attendue comme paramètre. Le compilateur effectuera automatiquement la conversion. Cette fonctionnalité corrige une incohérence entre les fonctions régulières et suspensives dans Kotlin.

- L'inférence de type du compilateur pour les types génériques récursifs a été améliorée.

- typeof a été stabilisé et peut être utilisé sur n'importe quelle plateforme Kotlin. Il était disponible sur la JVM de manière expérimentale.

- L'API Duration a été stabilisée.

- Concernant la bibliothèque standard, les fonctions stdlib suivantes sont désormais stable : les constructeurs de collections, les opérateurs de décalage de bits sur les entiers, et la fonction regex pour diviser une chaîne en séquence.

- Pour l'entrée standard, de nouvelles fonctions sont fournies pour la lecture de la console.

- Le plug-in Kover Gradle, actuellement en phase expérimentale, mesure la couverture du code Kotlin construit avec le compilateur JVM.

- Pour Kotlin/JVM, la capacité d'annotations répétables est compatible avec Java ; @kotlin.annotation.Repeatable accepte désormais toute rétention et rend l'annotation répétable à la fois dans Kotlin et dans Java.

- Pour Kotlin/JS, les développeurs construisant sur un serveur sans connectivité Internet peuvent désactiver le téléchargement de Node.js et de Yarn pour les projets Kotlin/JS et utiliser les instances déjà en place sur l'hôte.

Les instructions d'installation de la version sont disponibles sur blog.jetbrains.com. Les utilisateurs des IDEs IntelliJ Idea ou Android Studio de JetBrains peuvent se mettre à jour automatiquement.