Kotlin Releases

La version 1.4.30 de Kotlin apporte un nouveau backend JVM et de nouvelles fonctionnalités de langage et multiplateformes

Read this post in other languages:

Kotlin 1.4.30 est maintenant disponible. Il s’agit de la dernière version incrémentielle en 1.4, il y a donc beaucoup de nouvelles fonctionnalités expérimentales que nous prévoyons de stabiliser dans la version 1.5.0. Nous vous invitons à les essayer et à nous faire part de vos retours. Nous espérons que vous apprécierez de tester ces nouveautés et mises à jour.

Ce qui a changé dans cette version :

Caractéristiques du langage et compilateur

Nous avons décidé d’aborder deux des mises à jour les plus importantes dans des articles de blog séparés afin de pouvoir apporter plus de détails sur ces fonctionnalités.

Compilateur

Le nouveau backend de la JVM passe en phase bêta et produit maintenant des binaires stables. Vous pouvez donc l’utiliser en toute sécurité dans vos projets.

Tous les détails sur la mise à jour, les moyens d’activer le nouveau backend IR de la JVM et la façon dont vous pouvez nous aider à le stabiliser sont disponibles ici.

Aperçu des nouvelles caractéristiques du langage

Parmi les nouvelles caractéristiques du langage que nous allons publier dans Kotlin 1.5.0 figurent les classes de valeurs inline, les enregistrements de la JVM et les interfaces scellées. Vous trouverez plus de détails les concernant dans cet article ; en voici une brève présentation :

Les classes inline. Elles étaient auparavant une caractéristique séparée du langage et sont maintenant devenues une optimisation spécifique de la JVM pour une classe de valeur avec un seul paramètre. Les classes de valeur représentent un concept plus général et feront l’objet d’autres optimisations à l’avenir. Elles prennent actuellement en charge les classes inline et prendront en charge les classes primitives Valhalla lorsque le projet Valhalla sera disponible.

Les enregistrements Java. Autre amélioration à venir dans l’écosystème de la JVM : les enregistrements Java. Elles sont analogues aux classes data de Kotlin, principalement utilisées comme simples conteneurs de données. L’interopérabilité avec Java a toujours été et restera une priorité pour Kotlin. Le code Kotlin « comprend » les nouveaux enregistrements Java et les considère comme des classes dotées de propriétés Kotlin.

Les interfaces scellées. Les interfaces peuvent être déclarées « sealed », tout comme les classes. Le modificateur « sealed » fonctionne de la même manière sur les interfaces : toutes les implémentations d’une interface scellée sont connues au moment de la compilation. Une fois qu’un module avec une interface scellée est compilé, aucune nouvelle implémentation ne peut apparaître.

Nous vous demandons de bien vouloir essayer ces caractéristiques du langage et de nous faire part de vos retours d’expérience. Nous aimerions connaître vos attentes à leur égard, les cas d’utilisation dans lesquels vous souhaitez appliquer ces fonctionnalité et toute réflexion ou idée les concernant.

Vous trouverez une description détaillée des nouvelles fonctionnalités du langage et des instructions pour les essayer dans cet article de blog.

Outils de build

Prise en charge du cache de configuration dans le plugin Kotlin Gradle

Avec Kotlin 1.4.30, the plugin Kotlin Gradle est compatible avec le cache de configuration Gradle. Cela accélère le processus de build. Par exemple, Square, qui utilise Kotlin pour Android, a un build (Android, Java, Kotlin) de 1 800 modules. Son équipe rapporte les chiffres suivants :

  • Le tout premier build a pris 16 minutes et 30 secondes.
  • La deuxième a été beaucoup plus rapide ; elle n’a demandé que 5 minutes 45 secondes.
    Plus précisément, pour Square, le cache de configuration permet d’économiser 1 minute et 10 secondes de création de graphiques de tâches et de configuration par build.

Lorsque vous exécutez la commande, Gradle exécute la phase de configuration et calcule le graphique des tâches. Gradle met le résultat en cache et le réutilise pour les builds suivants, ce qui vous fait gagner du temps.

Pour commencer à utiliser cette fonctionnalité, utilisez la commande Gradle ou configurez votre IDE basé sur IntelliJ. Et si quoi que ce soit ne fonctionne pas bien, veuillez nous le signaler via YouTrack.

Veuillez noter que cette fonctionnalité est toujours en phase alpha pour le multiplateforme.

Kotlin/Native

Amélioration du temps de compilation

Nous avons amélioré le temps de compilation dans la version 1.4.30. Le temps nécessaire pour reconstituer l’exemple de framework KMM Networking and Data Storage est passé de 9,5 secondes (avec la version 1.4.10) à 4,5 secondes (avec la version 1.4.30).

Nous prévoyons de continuer à optimiser le compilateur et vous pouvez suivre les avancées via ce ticket dans YouTrack.

Prise en charge du simulateur WatchOS 64 bits

Avec la version 1.3.60 de Kotlin en octobre 2018, nous avons inauguré la prise en charge de la création d’applications Kotlin pour des simulateurs Apple Watch. En novembre dernier, l’architecture du simulateur Apple Watch est passée de i386 à x86_64, ce qui a posé des problèmes aux développeurs travaillant sur cette fonctionnalité. La nouvelle cible Kotlin/Native watchosX64 permet d’exécuter le simulateur watchOS sur une architecture 64 bits et elle fonctionne sur watchOS à partir de la version 7.0.

Prise en charge du SDK Xcode 12.2

Kotlin/Native prend désormais en charge Xcode 12.2. Les frameworks macOS qui ont été ajoutés à la version Xcode 12.2 peuvent être utilisés avec cette mise à jour de Kotlin. Par exemple, le framework MLCompute est maintenant disponible pour les utilisateurs qui développent des applications pour MacOS.

Kotlin/JS

Prototype d’initialisation retardée pour les propriétés de haut niveau

La lazy initialization des propriétés de haut niveau est disponible à titre expérimental. Vous pouvez en lire plus à ce sujet dans les Nouveautés.

Bibliothèque standard

API indépendante des paramètres de localisation pour les textes en majuscules et minuscules

Cette version inaugure une API expérimentale indépendante des paramètres de localisation pour changer la casse des chaînes et des caractères. Les fonctions actuelles toLowerCase(), toUpperCase(), capitalize(), decapitalize() de l’API sont sensibles aux paramètres locaux, ce qui n’est pas évident et peu pratique dans certains cas. Des paramètres locaux différents sur la plateforme affectent le comportement du code : par exemple, en langue turque, lorsque la chaîne « kotlin » est convertie par toUpperCase, cela donne « KOTLİN » et non « KOTLIN ». Le langage utilise maintenant les paramètres locaux de la racine.

Vous trouverez la liste complète des modifications apportées aux fonctions de traitement de texte dans KEEP. Gardez à l’esprit que cette API est expérimentale et faites-nous faire part de vos retours d’expérience dans YouTrack.

API non ambiguë pour la conversion des caractères

Les fonctions actuelles de conversion de « Char » en nombres, qui renvoient son code UTF-16 exprimé en différents types numériques, sont souvent confondues avec la conversion similaire String-to-Int, qui renvoie la valeur numérique d’une chaîne de caractères.

Pour éviter cette confusion, nous avons décidé de séparer les conversions de caractères en deux ensembles de fonctions clairement nommées : les fonctions permettant d’obtenir le code de l’entier de Char et de construire Char et les fonctions permettant de convertir Char en la valeur numérique du nombre qu’il représente.

Cette fonctionnalité est expérimentale mais nous prévoyons de la stabiliser dans la version 1.5.0. Pour en savoir plus, consultez KEEP.

Pour plus de détails sur l’ensemble des mises à jour de la version 1.4.30, consultez la page Nouveautés, l’article sur le Nouveau backend JVM et celui sur les Nouvelles donctionnalités du langage.

Comment faire la mise à jour

IntelliJ IDEA proposera de mettre automatiquement à jour le plugin Kotlin vers la version 1.4.30. Vous pouvez également le mettre à jour manuellement en suivant ces instructions. Le plugin Kotlin pour Android Studio Arctic Fox sortira ultérieurement.

Si vous souhaitez travailler sur des projets créés avec des versions précédentes de Kotlin, utilisez la version Kotlin 1.4.30 dans la configuration de votre projet. Pour en savoir plus, consultez la documentation pour Gradle et pour Maven.

Vous pouvez télécharger le compilateur de ligne de commande à partir de la page de la version sur Github.

Les détails de la version et la liste des bibliothèques compatibles sont disponibles ici.

Si vous rencontrez des problèmes avec cette nouvelle version, vous pouvez trouver de l’aide sur Slack (obtenez une invitation ici) et les signaler via YouTrack.

Avant de mettre à jour vos projets vers la dernière version de Kotlin, vous pouvez essayer les nouvelles fonctionnalités des bibliothèques standards et du langage en ligne sur play.kotl.in.

Contributeurs externes

Nous souhaitons remercier tous les contributeurs externes dont les requêtes pull ont été incluses dans cette version :

Jinseong Jeon
Toshiaki Kameyama
pyos
Mads Ager
Steven Schäfer
Mark Punzalan
Ivan Gavrilovic
Kristoffer Andersen
Bingran
Juan Chen
zhelenskiy
Kris
Hung Nguyen
Victor Turansky
AJ
Louis CAD
Kevin Bierhoff
Hollow Man
Francesco Vasco
Uzi Landsmann
Dominik Wuttke
Derek Bodin
Ciaran Treanor
rbares
Martin Petrov
Yuya Urano
KotlinIsland
Jiaxiang Chen
Jake Wharton
Sam Wang
MikeKulasinski-visa
Matthew Gharrity
Mikhail Likholetov

The post 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features first appeared on JetBrains Blog.

Auteur de l’article original en anglais : Alina Grebenkina

image description