{"id":118587,"date":"2021-02-23T12:44:40","date_gmt":"2021-02-23T11:44:40","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=118587"},"modified":"2021-02-23T12:44:40","modified_gmt":"2021-02-23T11:44:40","slug":"la-version-1-4-30-de-kotlin-apporte-un-nouveau-backend-jvm-et-de-nouvelles-fonctionnalites-de-langage-et-multiplateformes","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2021\/02\/la-version-1-4-30-de-kotlin-apporte-un-nouveau-backend-jvm-et-de-nouvelles-fonctionnalites-de-langage-et-multiplateformes\/","title":{"rendered":"La version 1.4.30 de Kotlin apporte un nouveau backend JVM et de nouvelles fonctionnalit\u00e9s de langage et multiplateformes"},"content":{"rendered":"<p>Kotlin 1.4.30 est maintenant disponible. Il s&#8217;agit de la derni\u00e8re version incr\u00e9mentielle en 1.4, il y a donc beaucoup de nouvelles fonctionnalit\u00e9s exp\u00e9rimentales que nous pr\u00e9voyons de stabiliser dans la version 1.5.0. Nous vous invitons \u00e0 les essayer et \u00e0 nous faire part de vos retours. Nous esp\u00e9rons que vous appr\u00e9cierez <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#how-to-update\">de tester<\/a> ces nouveaut\u00e9s et mises \u00e0 jour.<\/p>\n<\/p>\n<p>Ce qui a chang\u00e9 dans cette version\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#language-features-compiler\">Caract\u00e9ristiques du langage et compilateur<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#compiler\">Le nouveau backend de la JVM est pass\u00e9 en phase b\u00eata.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#language-features\">Mise \u00e0 jour des classes de valeur, des enregistrements JVM et des interfaces scell\u00e9es.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#build-tools\">Outils de build<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#cache-support\">Prise en charge du cache de configuration dans le plugin Kotlin Gradle.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#kotlin-native\">Kotlin\/Native<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#performance-improvements\">Am\u00e9lioration du temps de compilation.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#64-bit-watchos-simulator-support\">Prise en charge du simulateur WatchOS 64 bits.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#xcode-sdk-support\">Prise en charge du SDK Xcode 12.2.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#kotlin-js\">Kotlin\/JS<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#prototype-lazy-initialization\">Prototype de lazy initialization pour les propri\u00e9t\u00e9s de haut niveau.<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#standard-library\">Biblioth\u00e8que standard<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#locale-agnostic-api\">API ind\u00e9pendante des param\u00e8tres de localisation pour les textes en majuscules et minuscules.<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#char-conversion\">API non ambigu\u00eb pour la conversion des caract\u00e8res.<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Caract\u00e9ristiques du langage et compilateur<\/h2>\n<p><a name = \"language-features-compiler\"><\/a><\/p>\n<p>Nous avons d\u00e9cid\u00e9 d&#8217;aborder deux des mises \u00e0 jour les plus importantes dans des articles de blog s\u00e9par\u00e9s afin de pouvoir apporter plus de d\u00e9tails sur ces fonctionnalit\u00e9s. <\/p>\n<h3>Compilateur<\/h3>\n<p><a name = \"compiler\"><\/a><\/p>\n<p>Le nouveau backend de la JVM passe en phase <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">b\u00eata<\/a> et produit maintenant des binaires stables. Vous pouvez donc l\u2019utiliser en toute s\u00e9curit\u00e9 dans vos projets. <\/p>\n<p>Tous les d\u00e9tails sur la mise \u00e0 jour, les moyens d\u2019activer le nouveau backend IR de la JVM et la fa\u00e7on dont vous pouvez nous aider \u00e0 le stabiliser sont disponibles <a href=\"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2021\/02\/le-nouveau-backend-ir-de-la-jvm-est-en-phase-beta-favorisons-sa-stabilite-ensemble\/\">ici<\/a>.<\/p>\n<h3>Aper\u00e7u des nouvelles caract\u00e9ristiques du langage<\/h3>\n<p><a name = \"language-features\"><\/a><\/p>\n<p>Parmi les nouvelles caract\u00e9ristiques du langage que nous allons publier dans Kotlin 1.5.0 figurent <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42434?_ga=2.184548070.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">les classes de valeurs inline<\/a>, <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42430?_ga=2.184548070.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">les enregistrements de la JVM<\/a> et <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42433?_ga=2.154677880.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">les interfaces scell\u00e9es<\/a>. Vous trouverez plus de d\u00e9tails les concernant dans <a href=\"\/?p=118590\">cet article<\/a> ; en voici une br\u00e8ve pr\u00e9sentation :<\/p>\n<p><strong>Les classes inline.<\/strong> Elles \u00e9taient auparavant une caract\u00e9ristique s\u00e9par\u00e9e du langage et sont maintenant devenues une optimisation sp\u00e9cifique de la JVM pour une classe de valeur avec un seul param\u00e8tre. Les classes de valeur repr\u00e9sentent un concept plus g\u00e9n\u00e9ral et feront l&#8217;objet d&#8217;autres optimisations \u00e0 l\u2019avenir. Elles prennent actuellement en charge les classes inline et prendront en charge les classes primitives Valhalla lorsque le projet Valhalla sera disponible.<\/p>\n<p><strong>Les enregistrements Java.<\/strong> Autre am\u00e9lioration \u00e0 venir dans l\u2019\u00e9cosyst\u00e8me de la JVM\u00a0: <a href=\"https:\/\/openjdk.java.net\/jeps\/395\" target=\"_blank\" rel=\"noopener\">les enregistrements Java<\/a>. Elles sont analogues aux classes <code>data<\/code> de Kotlin, principalement utilis\u00e9es comme simples conteneurs de donn\u00e9es. L\u2019interop\u00e9rabilit\u00e9 avec Java a toujours \u00e9t\u00e9 et restera une priorit\u00e9 pour Kotlin. Le code Kotlin \u00ab\u00a0comprend\u00a0\u00bb les nouveaux enregistrements Java et les consid\u00e8re comme des classes dot\u00e9es de propri\u00e9t\u00e9s Kotlin.<\/p>\n<p><strong>Les interfaces scell\u00e9es.<\/strong> Les interfaces peuvent \u00eatre d\u00e9clar\u00e9es \u00ab\u00a0sealed\u00a0\u00bb, tout comme les classes. Le modificateur \u00ab\u00a0sealed\u00a0\u00bb fonctionne de la m\u00eame mani\u00e8re sur les interfaces : toutes les impl\u00e9mentations d\u2019une interface scell\u00e9e sont connues au moment de la compilation. Une fois qu\u2019un module avec une interface scell\u00e9e est compil\u00e9, aucune nouvelle impl\u00e9mentation ne peut appara\u00eetre.<\/p>\n<p>Nous vous demandons de bien vouloir essayer ces caract\u00e9ristiques du langage et de nous faire part de vos retours d&#8217;exp\u00e9rience. Nous aimerions conna\u00eetre vos attentes \u00e0 leur \u00e9gard, les cas d\u2019utilisation dans lesquels vous souhaitez appliquer ces fonctionnalit\u00e9 et toute r\u00e9flexion ou id\u00e9e les concernant. <\/p>\n<p>Vous trouverez une description d\u00e9taill\u00e9e des nouvelles fonctionnalit\u00e9s du langage et des instructions pour les essayer dans cet <a href=\"https:\/\/blog.jetbrains.com\/?post_type=kotlin&amp;p=111522&amp;preview=true&amp;do_not_cache=1612175412\">article de blog<\/a>.<\/p>\n<h2>Outils de build<\/h2>\n<p><a name = \"build-tools\"><\/a><\/p>\n<h3>Prise en charge du cache de configuration dans le plugin Kotlin Gradle<\/h3>\n<p><a name = \"cache-support\"><\/a><\/p>\n<p>Avec Kotlin 1.4.30, the plugin Kotlin Gradle est compatible avec le <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html\" target=\"_blank\" rel=\"noopener\">cache de configuration Gradle<\/a>. Cela acc\u00e9l\u00e8re le processus de build. Par exemple, <a href=\"https:\/\/squareup.com\" target=\"_blank\" rel=\"noopener\">Square<\/a>, qui utilise Kotlin pour Android, a un build (Android, Java, Kotlin) de 1\u00a0800 modules. Son \u00e9quipe rapporte les chiffres suivants :<\/p>\n<ul>\n<li>Le tout premier build a pris 16 minutes et 30 secondes.<\/li>\n<li>La deuxi\u00e8me a \u00e9t\u00e9 beaucoup plus rapide\u00a0; elle n&#8217;a demand\u00e9 que 5 minutes 45 secondes. <br \/>\nPlus pr\u00e9cis\u00e9ment, pour Square, le cache de configuration permet d\u2019\u00e9conomiser 1 minute et 10 secondes de cr\u00e9ation de graphiques de t\u00e2ches et de configuration par build.<\/li>\n<\/ul>\n<p>Lorsque vous ex\u00e9cutez la commande, Gradle ex\u00e9cute la phase de configuration et calcule le graphique des t\u00e2ches. Gradle met le r\u00e9sultat en cache et le r\u00e9utilise pour les builds suivants, ce qui vous fait gagner du temps.<\/p>\n<p>Pour commencer \u00e0 utiliser cette fonctionnalit\u00e9, <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html#config_cache:usage\" target=\"_blank\" rel=\"noopener\">utilisez la commande Gradle<\/a> ou <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/configuration_cache.html#config_cache:ide:intellij\" target=\"_blank\" rel=\"noopener\">configurez votre IDE bas\u00e9 sur IntelliJ<\/a>. Et si quoi que ce soit ne fonctionne pas bien, veuillez nous le signaler via <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>. <\/p>\n<p>Veuillez noter que cette fonctionnalit\u00e9 est toujours en <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">phase alpha<\/a> pour le multiplateforme.<\/p>\n<h2>Kotlin\/Native<\/h2>\n<p><a name = \"kotlin-native\"><\/a><\/p>\n<h3>Am\u00e9lioration du temps de compilation<\/h3>\n<p><a name = \"performance-improvements\"><\/a><\/p>\n<p>Nous avons am\u00e9lior\u00e9 le temps de compilation dans la version 1.4.30. Le temps n\u00e9cessaire pour reconstituer l&#8217;exemple de framework <a href=\"https:\/\/github.com\/kotlin-hands-on\/kmm-networking-and-data-storage\/tree\/final\" target=\"_blank\" rel=\"noopener\">KMM Networking and Data Storage<\/a> est pass\u00e9 de 9,5 secondes (avec la version 1.4.10) \u00e0 4,5 secondes (avec la version 1.4.30).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/02\/image-18-1024x582.png\" alt=\"\" \/><\/p>\n<p>Nous pr\u00e9voyons de continuer \u00e0 optimiser le compilateur et vous pouvez suivre les avanc\u00e9es via ce ticket dans <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42294?_ga=2.78639700.1394575398.1610963436-619426049.1589386231\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<h3>Prise en charge du simulateur WatchOS 64 bits<\/h3>\n<p><a name = \"64-bit-watchos-simulator-support\"><\/a><\/p>\n<p>Avec la <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/11\/kotlin-1-3-60-released\/\">version 1.3.60 de Kotlin<\/a> en octobre 2018, nous avons inaugur\u00e9 la prise en charge de la cr\u00e9ation d\u2019applications Kotlin pour des simulateurs Apple Watch. En novembre dernier, l\u2019architecture du simulateur Apple Watch est pass\u00e9e de i386 \u00e0 x86_64, ce qui a pos\u00e9 des probl\u00e8mes aux d\u00e9veloppeurs travaillant sur cette fonctionnalit\u00e9. La nouvelle cible Kotlin\/Native <code>watchosX64<\/code> permet d&#8217;ex\u00e9cuter le simulateur watchOS sur une architecture 64 bits et elle fonctionne sur watchOS \u00e0 partir de la version 7.0.<\/p>\n<h3>Prise en charge du SDK Xcode 12.2<\/h3>\n<p><a name = \"xcode-sdk-support\"><\/a><\/p>\n<p>Kotlin\/Native prend d\u00e9sormais en charge Xcode 12.2. Les frameworks macOS qui ont \u00e9t\u00e9 ajout\u00e9s \u00e0 la version Xcode 12.2 peuvent \u00eatre utilis\u00e9s avec cette mise \u00e0 jour de Kotlin. Par exemple, le framework MLCompute est maintenant disponible pour les utilisateurs qui d\u00e9veloppent des applications pour MacOS.<\/p>\n<h2>Kotlin\/JS<\/h2>\n<p><a name = \"kotlin-js\"><\/a><\/p>\n<h3>Prototype d\u2019initialisation retard\u00e9e pour les propri\u00e9t\u00e9s de haut niveau<\/h3>\n<p><a name = \"prototype-lazy-initialization\"><\/a><\/p>\n<p>La lazy initialization des propri\u00e9t\u00e9s de haut niveau est disponible \u00e0 titre <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">exp\u00e9rimental<\/a>. Vous pouvez en lire plus \u00e0 ce sujet dans les <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew1430.html\" target=\"_blank\" rel=\"noopener\">Nouveaut\u00e9s<\/a>.<\/p>\n<h2>Biblioth\u00e8que standard<\/h2>\n<p><a name = \"standard-library\"><\/a><\/p>\n<h3>API ind\u00e9pendante des param\u00e8tres de localisation pour les textes en majuscules et minuscules<\/h3>\n<p><a name = \"locale-agnostic-api\"><\/a><\/p>\n<p>Cette version inaugure une <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">API exp\u00e9rimentale ind\u00e9pendante des param\u00e8tres de localisation<\/a> pour changer la casse des cha\u00eenes et des caract\u00e8res. Les fonctions actuelles <code>toLowerCase()<\/code>, <code>toUpperCase()<\/code>, <code>capitalize()<\/code>, <code>decapitalize()<\/code> de l\u2019API sont sensibles aux param\u00e8tres locaux, ce qui n\u2019est pas \u00e9vident et peu pratique dans certains cas. Des param\u00e8tres locaux diff\u00e9rents sur la plateforme affectent le comportement du code\u00a0: par exemple, en langue turque, lorsque la cha\u00eene \u00ab\u00a0kotlin\u00a0\u00bb est convertie par <code>toUpperCase<\/code>, cela donne \u00ab\u00a0KOTL\u0130N\u00a0\u00bb et non \u00ab\u00a0KOTLIN\u00a0\u00bb. Le langage utilise maintenant les param\u00e8tres locaux de la racine.<\/p>\n<p>Vous trouverez la liste compl\u00e8te des modifications apport\u00e9es aux fonctions de traitement de texte dans <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/stdlib\/locale-agnostic-string-conversions.md\" target=\"_blank\" rel=\"noopener\">KEEP<\/a>. Gardez \u00e0 l&#8217;esprit que cette API est exp\u00e9rimentale et faites-nous faire part de vos retours d&#8217;exp\u00e9rience dans <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42437\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<h3>API non ambigu\u00eb pour la conversion des caract\u00e8res<\/h3>\n<p><a name = \"char-conversion\"><\/a><\/p>\n<p>Les fonctions actuelles de conversion de \u00ab\u00a0Char\u00a0\u00bb en nombres, qui renvoient son code UTF-16 exprim\u00e9 en diff\u00e9rents types num\u00e9riques, sont souvent confondues avec la conversion similaire String-to-Int, qui renvoie la valeur num\u00e9rique d\u2019une cha\u00eene de caract\u00e8res.<\/p>\n<p>Pour \u00e9viter cette confusion, nous avons d\u00e9cid\u00e9 de s\u00e9parer les conversions de caract\u00e8res en deux ensembles de fonctions clairement nomm\u00e9es : les fonctions permettant d\u2019obtenir le code de l&#8217;entier de <code>Char<\/code> et de construire <code>Char<\/code> et les fonctions permettant de convertir <code>Char<\/code> en la valeur num\u00e9rique du nombre qu\u2019il repr\u00e9sente.<\/p>\n<p>Cette fonctionnalit\u00e9 est <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">exp\u00e9rimentale<\/a> mais nous pr\u00e9voyons de la stabiliser dans la version 1.5.0. Pour en savoir plus, consultez <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/stdlib\/char-int-conversions.md\" target=\"_blank\" rel=\"noopener\">KEEP<\/a>.<\/p>\n<h3>Pour plus de d\u00e9tails sur l&#8217;ensemble des mises \u00e0 jour de la version 1.4.30, consultez la page <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew1430.html\" target=\"_blank\" rel=\"noopener\">Nouveaut\u00e9s<\/a>, l&#8217;article sur le <a href=\"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2021\/02\/le-nouveau-backend-ir-de-la-jvm-est-en-phase-beta-favorisons-sa-stabilite-ensemble\/\">Nouveau backend JVM<\/a> et celui sur les <a href=\"\/?p=118590\">Nouvelles donctionnalit\u00e9s du langage<\/a>.<\/h3>\n<h2>Comment faire la mise \u00e0 jour<\/h2>\n<p><a name = \"how-to-update\"><\/a><\/p>\n<p>IntelliJ IDEA proposera de mettre automatiquement \u00e0 jour le plugin Kotlin vers la version 1.4.30. Vous pouvez \u00e9galement le mettre \u00e0 jour manuellement en suivant <a href=\"https:\/\/kotlinlang.org\/docs\/releases.html#update-to-a-new-release\" target=\"_blank\" rel=\"noopener\">ces instructions<\/a>. Le plugin Kotlin pour Android Studio Arctic Fox sortira ult\u00e9rieurement.<\/p>\n<p>Si vous souhaitez travailler sur des projets cr\u00e9\u00e9s avec des versions pr\u00e9c\u00e9dentes de Kotlin, utilisez la version Kotlin 1.4.30 dans la configuration de votre projet. Pour en savoir plus, consultez la documentation <a href=\"http:\/\/kotlinlang.org\/docs\/reference\/using-gradle.html\" target=\"_blank\" rel=\"noopener\">pour Gradle<\/a> et <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/using-maven.html\" target=\"_blank\" rel=\"noopener\">pour Maven<\/a>.<\/p>\n<p>Vous pouvez t\u00e9l\u00e9charger le compilateur de ligne de commande \u00e0 partir de la <a href=\"https:\/\/github.com\/JetBrains\/kotlin\/releases\/tag\/v1.4.30\" target=\"_blank\" rel=\"noopener\">page de la version sur Github<\/a>.<\/p>\n<p>Les d\u00e9tails de la version et la liste des biblioth\u00e8ques compatibles sont disponibles <a href=\"https:\/\/kotlinlang.org\/releases.html#release-details\" target=\"_blank\" rel=\"noopener\">ici<\/a>.<\/p>\n<p>Si vous rencontrez des probl\u00e8mes avec cette nouvelle version, vous pouvez trouver de l&#8217;aide sur <a href=\"http:\/\/kotlinlang.slack.com\/\" target=\"_blank\" rel=\"noopener\">Slack<\/a> (obtenez une invitation <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up?_ga=2.134077326.1218289669.1605167163-154294388.1603171954\" target=\"_blank\" rel=\"noopener\">ici<\/a>) et les signaler via <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<p>Avant de mettre \u00e0 jour vos projets vers la derni\u00e8re version de Kotlin, vous pouvez essayer les nouvelles fonctionnalit\u00e9s des biblioth\u00e8ques standards et du langage en ligne sur <a href=\"http:\/\/play.kotl.in\/\" target=\"_blank\" rel=\"noopener\">play.kotl.in<\/a>.<\/p>\n<h2>Contributeurs externes<\/h2>\n<p>Nous souhaitons remercier tous les contributeurs externes dont les requ\u00eates pull ont \u00e9t\u00e9 incluses dans cette version\u00a0:<\/p>\n<p><a href=\"https:\/\/github.com\/jsjeon\" target=\"_blank\" rel=\"noopener\">Jinseong Jeon<\/a><br \/>\n<a href=\"https:\/\/github.com\/t-kameyama\" target=\"_blank\" rel=\"noopener\">Toshiaki Kameyama<\/a><br \/>\n<a href=\"https:\/\/github.com\/pyos\" target=\"_blank\" rel=\"noopener\">pyos<\/a><br \/>\n<a href=\"https:\/\/github.com\/madsager\" target=\"_blank\" rel=\"noopener\">Mads Ager<\/a><br \/>\n<a href=\"https:\/\/github.com\/sfs\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a><br \/>\n<a href=\"https:\/\/github.com\/punzki\" target=\"_blank\" rel=\"noopener\">Mark Punzalan<\/a><br \/>\n<a href=\"https:\/\/github.com\/gavra0\" target=\"_blank\" rel=\"noopener\">Ivan Gavrilovic<\/a><br \/>\n<a href=\"https:\/\/github.com\/kandersen\" target=\"_blank\" rel=\"noopener\">Kristoffer Andersen<\/a><br \/>\n<a href=\"https:\/\/github.com\/bingranl\" target=\"_blank\" rel=\"noopener\">Bingran<\/a><br \/>\n<a href=\"https:\/\/github.com\/juan-chen\" target=\"_blank\" rel=\"noopener\">Juan Chen<\/a><br \/>\n<a href=\"https:\/\/github.com\/zhelenskiy\" target=\"_blank\" rel=\"noopener\">zhelenskiy<\/a><br \/>\n<a href=\"https:\/\/github.com\/zekehul\" target=\"_blank\" rel=\"noopener\">Kris<\/a><br \/>\n<a href=\"https:\/\/github.com\/hungvietnguyen\" target=\"_blank\" rel=\"noopener\">Hung Nguyen<\/a><br \/>\n<a href=\"https:\/\/github.com\/turansky\" target=\"_blank\" rel=\"noopener\">Victor Turansky<\/a><br \/>\n<a href=\"https:\/\/github.com\/ajalt\" target=\"_blank\" rel=\"noopener\">AJ<\/a><br \/>\n<a href=\"https:\/\/github.com\/LouisCAD\" target=\"_blank\" rel=\"noopener\">Louis CAD<\/a><br \/>\n<a href=\"https:\/\/github.com\/kevin1e100\" target=\"_blank\" rel=\"noopener\">Kevin Bierhoff<\/a><br \/>\n<a href=\"https:\/\/github.com\/HollowMan6\" target=\"_blank\" rel=\"noopener\">Hollow Man<\/a><br \/>\n<a href=\"https:\/\/github.com\/fvasco\" target=\"_blank\" rel=\"noopener\">Francesco Vasco<\/a><br \/>\n<a href=\"https:\/\/github.com\/uzilan\" target=\"_blank\" rel=\"noopener\">Uzi Landsmann<\/a><br \/>\n<a href=\"https:\/\/github.com\/dominikwuttke\" target=\"_blank\" rel=\"noopener\">Dominik Wuttke<\/a><br \/>\n<a href=\"https:\/\/github.com\/bodin\" target=\"_blank\" rel=\"noopener\">Derek Bodin<\/a><br \/>\n<a href=\"https:\/\/github.com\/ciarant\" target=\"_blank\" rel=\"noopener\">Ciaran Treanor<\/a><br \/>\n<a href=\"https:\/\/github.com\/rbares\" target=\"_blank\" rel=\"noopener\">rbares<\/a><br \/>\n<a href=\"https:\/\/github.com\/mpetrov\" target=\"_blank\" rel=\"noopener\">Martin Petrov<\/a><br \/>\n<a href=\"https:\/\/github.com\/yurano\" target=\"_blank\" rel=\"noopener\">Yuya Urano<\/a><br \/>\n<a href=\"https:\/\/github.com\/KotlinIsland\" target=\"_blank\" rel=\"noopener\">KotlinIsland<\/a><br \/>\n<a href=\"https:\/\/github.com\/neetopia\" target=\"_blank\" rel=\"noopener\">Jiaxiang Chen<\/a><br \/>\n<a href=\"https:\/\/github.com\/JakeWharton\" target=\"_blank\" rel=\"noopener\">Jake Wharton<\/a><br \/>\n<a href=\"https:\/\/github.com\/samofcorinth\" target=\"_blank\" rel=\"noopener\">Sam Wang<\/a><br \/>\n<a href=\"https:\/\/github.com\/MikeKulasinski-visa\" target=\"_blank\" rel=\"noopener\">MikeKulasinski-visa<\/a><br \/>\n<a href=\"https:\/\/github.com\/gharrma\" target=\"_blank\" rel=\"noopener\">Matthew Gharrity<\/a><br \/>\n<a href=\"https:\/\/github.com\/McCreeMainer\" target=\"_blank\" rel=\"noopener\">Mikhail Likholetov<\/a><\/p>\n<p>The post <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features<\/a> first appeared on <a href=\"https:\/\/blog.jetbrains.com\">JetBrains Blog<\/a>.<\/p>\n<p>Auteur de l&#8217;article original en anglais : <a href=\"https:\/\/blog.jetbrains.com\/author\/alinagrebenkina\/\" target=\"_blank\" rel=\"noopener noreferrer\">Alina Grebenkina<\/a><\/p>\n","protected":false},"author":813,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[4113,907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/118587"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=118587"}],"version-history":[{"count":4,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/118587\/revisions"}],"predecessor-version":[{"id":118621,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/118587\/revisions\/118621"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=118587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=118587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=118587"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=118587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}