Kotlin 1.7 bêta
mar, 10/05/2022 - 15:13
JetBrains vient de publier Kotlin 1.7 bêta. La principale nouveauté mise en avant par JetBrains pour Kotlin 1.7 est l'évolution de l'inférence du générateur de type. Cette fonctionnalité aide le compilateur à déduire les arguments de type d'un appel en utilisant les informations de type sur les autres appels à l'intérieur de son argument lambda.
Avec Kotlin 1.7 l'inférence de générateur de type est automatiquement activée si une inférence de type standard ne peut pas obtenir suffisamment d'informations sur un type sans spécifier l'option -Xenable-builder-inference du compilateur, qui a été introduite avec Kotlin 1.6. Cela signifie que vous pouvez désormais écrire vos propres générateurs qui utilisent l'inférence de générateur de type sans appliquer d'annotations ou d'options supplémentaires.
A remarquer aussi, le retour des fonctions de collections min() et max(). Avec Kotlin 1.4 ces fonctions avaient été renommées minOrNull() et maxOrNull(). Kotlin 1.7.0 réintroduit les noms de fonction d'origine, mais avec un type de retour non nullable. Ces nouvelles fonctions min() et max() renvoient maintenant strictement l'élément de collection ou lèvent une exception.
fun main() {
val numbers = listOf<Int>()
println(numbers.maxOrNull()) // "null"
println(numbers.max()) // "Exception in… Collection is empty."
}
A remarquer encore la possibilié d'essayer la version alpha du nouveau gestionnaire de mémoire Kotlin/Native dans Kotlin 1.7.0 bêta. Cette version apporte des améliorations de performances au nouveau gestionnaire de mémoire qui amélioreront l'expérience des développeurs.
Le nouveau gestionnaire de mémoire élimine les différences entre les plateformes JVM et Native. Il offre une expérience de développement cohérente dans les projets multi plates-formes. Par exemple, vous aurez beaucoup plus de facilité à créer de nouvelles applications mobiles multi plates-formes qui fonctionnent à la fois sur Android et iOS, assure JetBrains.
Le nouveau gestionnaire de mémoire Kotlin/Native lève les restrictions sur le partage d'objets entre les threads. Il fournit également des primitives de programmation simultanée sans fuite qui sont sûres et ne nécessitent aucune gestion ou annotation spéciale. Le nouveau gestionnaire de mémoire deviendra celui par défaut dans les futures versions.