Kotlin 1.7.0, la future version du langage de programmation multiplateforme et polyvalent de JetBrains, a atteint le stade bêta. Des changements dans l'inférence du constructeur et un nouveau gestionnaire de mémoire font partie des modifications attendues. L'inférence du constructeur est un genre spécial d'inférence de type, utile lors de l'appel de fonctions génériques de constructeur, qui rapproche la plateforme de la stabilisation de l'inférence du constructeur.

Avec la version bêta 1.7.0, l'inférence de type est automatiquement activée si une inférence de type ordinaire ne peut obtenir suffisamment d'informations sur un type sans spécifier l'option de compilation Xenable-builder-inference. Les développeurs peuvent désormais écrire leurs propres constructeurs utilisant l'inférence de type constructeur sans appliquer d'annotations ou d'options supplémentaires. Ce modèle d’inférence aide le compilateur à déduire les arguments de type d’un appel via des informations de type sur les autres appels à l'intérieur d'un argument lambda.

Un gestionnaire de mémoire rénové

La version bêta comprend également la version Alpha d'un gestionnaire de mémoire Kotlin/Native rénové, lequel apporte des améliorations en termes de performances afin de faciliter la tâche des développeurs. Ce gestionnaire gomme les différences entre la JVM et les plateformes natives. Selon JetBrains, les développeurs auront plus de facilité à créer des applications mobiles multiplateformes qui fonctionnent à la fois sur Android et iOS. En outre, les restrictions sur le partage d'objets entre les threads sont supprimées et des primitives de programmation concurrente sans fuite sont fournies et ne nécessitent ni gestion ou no annotations spéciales. Le nouveau gestionnaire de mémoire deviendra la valeur par défaut dans les futures versions.

Parmi les autres fonctionnalités de la version bêta, on peut citer :

- La stabilisation de types définitivement non-nullables, introduite dans Kotlin 1.6.20 le mois dernier, est désormais activée par défaut. Elle permet aux développeurs une meilleure interopérabilité lors de l'extension des classes et interfaces Java génériques.

- Les noms de fonctions originaux sont réintroduits pour les fonctions de collection min() et max(). Celles-ci avaient été renommées dans Kotlin 1.4 en minOrNull() et maxOrNull(), pour mieux refléter le comportement, renvoyant null si la collection du récepteur est vide et pour aligner plus facilement le comportement des fonctions avec les conventions de nommage utilisées dans l'API des collections Kotlin. La nouvelle version bêta réintroduit les noms de fonctions originaux, mais avec un type de retour non-nullable.

- Il est dorénavant possible d’utiliser des noms de groupe en cas de référence arrière à des groupes.

- Les références de groupe nommées peuvent être utilisées avec des expressions de remplacement.

- À noter que, à partir de la version bêta 1.7.0, la terminologie de version a été mise à jour, « Bêta », remplaçant désormais le terme « Milestone » pour qualifier les préversions.

Les instructions d'installation de la version bêta de Kotlin 1.7.0 sont disponibles sur blog.jetbrains.com.