IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 2.2.20 de Kotlin est disponible et introduit WebAssembly en version bêta, l'exportation Swift disponible par défaut, et une compilation multiplateforme stable pour les bibliothèques Kotlin

Le , par Jade Emy

7PARTAGES

4  0 
La version 2.2.20 de Kotlin est disponible et introduit WebAssembly en version bêta, l'exportation Swift disponible par défaut, et une compilation multiplateforme stable pour les bibliothèques Kotlin

La version 2.2.20 de Kotlin est disponible et apporte des changements importants pour le développement web. Kotlin/Wasm est désormais en version bêta, avec des améliorations au niveau de la gestion des exceptions dans l'interopérabilité JavaScript, la gestion des dépendances npm, la prise en charge intégrée du débogage du navigateur et un nouvel ensemble de sources partagées pour les cibles js et wasmJs.

La version 2.2.20 de Kotlin apporte des avancées substantielles pour le développement web et multiplateforme. À la tête de cette version, la prise en charge de WebAssembly (Wasm) a atteint le statut bêta, apportant une gestion améliorée des exceptions dans l'interopérabilité JavaScript, une gestion améliorée des dépendances npm, des outils de débogage intégrés au navigateur et un ensemble de sources partagé pour les cibles js et wasmJs.

S'appuyant sur ces changements, Kotlin permet désormais l'exportation Swift par défaut et offre une compilation multiplateforme stable pour les bibliothèques Kotlin. Les développeurs bénéficient également d'une nouvelle approche pour déclarer les dépendances communes, ce qui facilite la gestion du code partagé entre les plateformes telles qu'iOS et Android. Dans le domaine du développement du langage de base, la résolution des surcharges a été affinée pour les scénarios où des lambdas sont passés à des surcharges avec des types de fonctions suspendues, améliorant ainsi la clarté et la maintenabilité du code.

À la suite de ces mises à jour, Kotlin bénéficie d'améliorations en matière de sécurité et de performances : les binaires prennent désormais en charge les stack canaries, et les binaires de publication sont nettement plus petits, ce qui peut être avantageux pour les applications embarquées et sensibles aux performances. Kotlin peut également compiler directement les valeurs longues dans le type JavaScript BigInt, résolvant ainsi un problème majeur de compatibilité numérique dans les projets web.

Afin de faciliter son adoption, le plugin Kotlin 2.2.20 est fourni avec les dernières versions d'IntelliJ IDEA et d'Android Studio, ce qui permet aux développeurs Kotlin les plus actifs d'accéder immédiatement aux nouvelles fonctionnalités.


Kotlin/Wasm

Kotlin/Wasm est désormais en version bêta et offre une plus grande stabilité ainsi que des améliorations telles que des dépendances npm séparées, une gestion affinée des exceptions pour l'interopérabilité JavaScript, une prise en charge intégrée du débogage du navigateur, et bien plus encore.

Dépendances npm séparées

Auparavant, dans vos projets Kotlin/Wasm, toutes les dépendances npm étaient installées ensemble dans le dossier de votre projet, y compris les dépendances des outils Kotlin et les vôtres. Elles étaient également enregistrées ensemble dans les fichiers de verrouillage de votre projet (package-lock.json ou yarn.lock).

Par conséquent, chaque fois que les dépendances des outils Kotlin étaient mises à jour, vous deviez mettre à jour vos fichiers de verrouillage, même si vous n'aviez rien ajouté ou modifié.

À partir de Kotlin 2.2.20, les dépendances npm des outils Kotlin sont installées en dehors de votre projet. Désormais, les dépendances des outils et vos dépendances (utilisateur) ont des répertoires distincts :

  • Répertoire des dépendances des outils : <kotlin-user-home>/kotlin-npm-tooling/<yarn|npm>/hash/node_modules
  • Répertoire des dépendances utilisateur : build/wasm/node_modules

De plus, les fichiers de verrouillage à l'intérieur du répertoire du projet ne contiennent que les dépendances définies par l'utilisateur.

Cette amélioration permet à vos fichiers de verrouillage de se concentrer uniquement sur vos propres dépendances, contribue à maintenir un projet plus propre et réduit les modifications inutiles de vos fichiers.

Cette modification est activée par défaut pour la cible wasm-js. Elle n'est pas encore implémentée pour la cible js. Bien qu'il soit prévu de l'implémenter dans les prochaines versions, le comportement des dépendances npm reste le même que précédemment pour la cible js dans Kotlin 2.2.20.

Amélioration de la gestion des exceptions dans l'interopérabilité Kotlin/Wasm et JavaScript

Auparavant, Kotlin avait des difficultés à comprendre les exceptions (erreurs) levées dans JavaScript (JS) et à passer au code Kotlin/Wasm.

Dans certains cas, le problème se produisait également dans le sens inverse, lorsqu'une exception était levée ou transmise par le code Wasm à JS et encapsulée dans WebAssembly.Exception sans aucun détail. Ces problèmes de gestion des exceptions Kotlin rendaient le débogage difficile.

À partir de Kotlin 2.2.20, l'expérience des développeurs avec les exceptions s'améliore dans les deux sens :

  • Lorsque des exceptions sont levées à partir de JS, vous pouvez voir plus d'informations du côté Kotlin. Lorsqu'une telle exception se propage via Kotlin vers JS, elle n'est plus encapsulée dans WebAssembly.
  • Lorsque des exceptions sont levées depuis Kotlin, elles peuvent désormais être interceptées du côté JS en tant qu'erreurs JS.

La nouvelle gestion des exceptions fonctionne automatiquement dans les navigateurs modernes qui prennent en charge la fonctionnalité WebAssembly.JSTag :

  • Chrome 115+
  • Firefox 129+
  • Safari 18.4+

Dans les navigateurs plus anciens, le comportement de gestion des exceptions reste inchangé.

Prise en charge du débogage dans les navigateurs sans configuration

Auparavant, les navigateurs ne pouvaient pas accéder automatiquement aux sources du projet Kotlin/Wasm nécessaires au débogage. Pour déboguer des applications Kotlin/Wasm dans le navigateur, vous deviez configurer manuellement votre build afin de servir ces sources en ajoutant l'extrait de code suivant à votre fichier build.gradle(.kts) :

Code : Sélectionner tout
1
2
3
4
5
devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
    static = (static ?: mutableListOf()).apply {
        add(project.rootDir.path)
    }
}


À partir de Kotlin 2.2.20, le débogage de vos applications dans les navigateurs modernes fonctionne dès l'installation. Lorsque vous exécutez des tâches de développement Gradle (*DevRun), Kotlin fournit automatiquement les fichiers source au navigateur, ce qui vous permet de définir des points d'arrêt, d'inspecter des variables et de parcourir le code Kotlin sans configuration supplémentaire.

Cette modification simplifie le débogage en supprimant la nécessité d'une configuration manuelle. La configuration requise est désormais incluse dans le plugin Kotlin Gradle. Si vous avez précédemment ajouté cette configuration à votre fichier build.gradle(.kts), vous devez la supprimer pour éviter tout conflit.

Le débogage dans les navigateurs est activé par défaut pour toutes les tâches Gradle *DevRun. Ces tâches fournissent non seulement l'application, mais aussi ses fichiers source. Utilisez-les donc uniquement pour le développement local et évitez de les exécuter dans des environnements cloud ou de production où les sources seraient exposées publiquement.

Gérer les rechargements répétés pendant le débogage

La fourniture des sources par défaut peut entraîner des rechargements répétés de l'application dans le navigateur avant que la compilation et le regroupement Kotlin ne soient terminés. Pour contourner ce problème, ajustez votre configuration webpack afin d'ignorer les fichiers source Kotlin et désactivez la surveillance des fichiers statiques servis. Ajoutez un fichier .js avec le contenu suivant dans le répertoire webpack.config.d à la racine de votre projet :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
config.watchOptions = config.watchOptions || {
    ignored: ["**/*.kt", "**/node_modules"]
}

if (config.devServer) {
    config.devServer.static = config.devServer.static.map(file => {
        if (typeof file === "string") {
        return { directory: file,
                 watch: false,
        }
    } else {
        return file
    }
    })
}


Suppression des fichiers yarn.lock vides

Auparavant, le plugin Kotlin Gradle (KGP) générait automatiquement un fichier yarn.lock qui contenait des informations sur les paquets npm requis par la chaîne d'outils Kotlin, ainsi que toutes les dépendances npm existantes du projet ou des bibliothèques utilisées.

Désormais, le KGP gère les dépendances de la chaîne d'outils séparément, et un fichier yarn.lock au niveau du projet n'est plus généré, sauf si le projet comporte des dépendances npm.

Le KGP crée automatiquement un fichier yarn.lock lorsque des dépendances npm sont ajoutées, et supprime le fichier yarn.lock lorsque les dépendances npm sont supprimées.

Cette modification permet de nettoyer les structures des projets et facilite le suivi de l'introduction des dépendances npm réelles.

Aucune étape supplémentaire n'est nécessaire pour configurer ce comportement. Il est appliqué par défaut dans les projets Kotlin/Wasm à partir de Kotlin 2.2.20.

Nouvelle erreur de compilation dans les noms de classe entièrement qualifiés

Sur Kotlin/Wasm, le compilateur ne stocke pas par défaut les noms entièrement qualifiés (FQN) des classes dans le binaire généré. Cette approche évite d'augmenter la taille de l'application.

Par conséquent, dans les versions précédentes de Kotlin, l'appel de la propriété KClass::qualifiedName renvoyait une chaîne vide au lieu du nom qualifié de la classe.

À partir de Kotlin 2.2.20, le compilateur signale une erreur lorsque vous utilisez la propriété KClass::qualifiedName dans les projets Kotlin/Wasm, sauf si vous activez explicitement la fonctionnalité des noms qualifiés.

Cette modification empêche l'apparition de chaînes vides inattendues lors de l'appel de la propriété qualifiedName et améliore l'expérience des développeurs en détectant les problèmes au moment de la compilation.

Le diagnostic est activé par défaut et les erreurs sont signalées automatiquement. Pour désactiver les diagnostics et autoriser le stockage des FQN dans Kotlin/Wasm, demandez au compilateur de stocker les noms complets de toutes les classes en ajoutant l'option suivante à votre fichier build.gradle(.kts) :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
kotlin {
    wasmJs {
        ...
        compilerOptions {
            freeCompilerArgs.add("-Xwasm-kclass-fqn")
        }
    }
}


Source : Annonce de Kotlin 2.2.20

Et vous ?

Pensez-vous que ces améliorations sont crédibles ou pertinentes ?
Quel est votre avis sur cette version ?

Voir aussi :

JetBrains annonce qu'IntelliJ IDEA, son EDI pour le développement en Java et Kotlin, passe à un mode de distribution unifié

La dernière mise à jour du classement Redmonk suggère que les langages Kotlin et Scala basés sur la JVM connaissent un regain de popularité, tandis que Rust stagne et le C semble confronté à des défis

Kotlin 2.0 est disponible avec un compilateur K2 stable, plus rapide et multiplateforme dès sa conception
Vous avez lu gratuitement 1 122 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !