{"id":324674,"date":"2023-02-16T12:07:28","date_gmt":"2023-02-16T11:07:28","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=324674"},"modified":"2023-02-16T12:07:30","modified_gmt":"2023-02-16T11:07:30","slug":"le-compilateur-k2-sera-stable-dans-kotlin-2-0","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2023\/02\/le-compilateur-k2-sera-stable-dans-kotlin-2-0\/","title":{"rendered":"Le Compilateur K2 sera stable dans Kotlin 2.0"},"content":{"rendered":"<p>Nous travaillons depuis un certain temps sur un nouveau frontend pour le compilateur Kotlin (nom de code \u00ab\u00a0<strong>K2<\/strong>\u00a0\u00bb). Le frontend du compilateur est responsable de l&#8217;analyse du code, de la s\u00e9mantique et du flux de donn\u00e9es, ainsi que de la r\u00e9solution des appels et de l&#8217;inf\u00e9rence de type. Il s&#8217;agit de la partie du compilateur avec laquelle les d\u00e9veloppeurs interagissent le plus. Elle s&#8217;ex\u00e9cute en continu dans votre IDE, signale tous les messages d&#8217;erreur et d&#8217;avertissement et vous aide avec la saisie semi-automatique, les inspections s\u00e9mantiques, les intentions et les refactorisations. Le nouveau frontend est d\u00e9j\u00e0 disponible en pr\u00e9version. Nous continuons \u00e0 le perfectionner et \u00e0 le stabiliser et pr\u00e9voyons d&#8217;en faire le frontend du compilateur par d\u00e9faut dans une future version de Kotlin, que nous appellerons <strong>Kotlin 2.0<\/strong>. Poursuivez votre lecture pour en savoir plus sur la feuille de route de Kotlin 2.0 et sur nos objectifs pour cette version.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-321786\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/DSGN-15525-Blog-Post-about-Kotlin-2.0_kotlinlang.org_.png\" alt=\"\" width=\"2000\" height=\"656\" \/><\/figure>\n<h2>Quelle est la feuille de route pour la version 2.0 de Kotlin\u00a0?<\/h2>\n<p>Nous pr\u00e9voyons de publier une version 1.9 de Kotlin, qui inclura les mises \u00e0 jour du d\u00e9veloppement du frontend du compilateur K2 lorsqu&#8217;il sera proche de la stabilisation. Il n&#8217;y aura pas de Kotlin 1.10. Apr\u00e8s Kotlin 1.9, la prochaine version majeure sera Kotlin 2.0.<\/p>\n<h2>Pourquoi Kotlin 2.0\u00a0?<\/h2>\n<p>Le frontend est une partie essentielle du compilateur, et le frontend du compilateur K2 n&#8217;est pas seulement une refactorisation de l&#8217;ancien frontend, mais une r\u00e9\u00e9criture compl\u00e8te bas\u00e9e sur la nouvelle architecture. Nous avons partag\u00e9 des d\u00e9tails techniques sur les diff\u00e9rences entre l&#8217;ancien et le nouveau frontend dans plusieurs articles de blog et vid\u00e9os et lors de conf\u00e9rences. Nous vous invitons \u00e0 lire l&#8217;article <a title=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/10\/the-road-to-the-k2-compiler\/\" href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/10\/the-road-to-the-k2-compiler\/\" target=\"_blank\" rel=\"noreferrer noopener\">The Road to the K2 Compiler<\/a>, qui synth\u00e9tise ces informations. La nouvelle architecture est plus rapide et extensible par sa conception, corrige la dette technique de l&#8217;ancien frontend du compilateur, r\u00e9sout les bugs et les cas critiques \u00e0 divers emplacements, et ouvre la voie aux futures extensions du langage.<\/p>\n<p>La version majeure d&#8217;un langage de programmation est souvent incr\u00e9ment\u00e9e lorsque de nouvelles fonctionnalit\u00e9s ou des changements importants sont introduits. Cependant, pour les programmes logiciels, une version majeure peut \u00eatre incr\u00e9ment\u00e9e chaque fois qu&#8217;un \u00e9l\u00e9ment est r\u00e9\u00e9crit de mani\u00e8re substantielle pour signaler un remaniement crucial, m\u00eame si l&#8217;ensemble des fonctionnalit\u00e9s reste quasiment le m\u00eame. Bien que Kotlin soit un langage, nous avons d\u00e9cid\u00e9 d&#8217;utiliser cette approche. En effet, le compilateur de Kotlin est avant tout un outil logiciel et la version du langage Kotlin est d\u00e9finie par la version de son compilateur. Nous fournissons des <a href=\"https:\/\/kotlinlang.org\/spec\/introduction.html\" target=\"_blank\" rel=\"noreferrer noopener\">sp\u00e9cifications Kotlin<\/a> en tant que r\u00e9f\u00e9rence, mais elles ne constituent pas la d\u00e9finition du langage.<\/p>\n<h2>Cela va-t-il affecter mon code ?<\/h2>\n<p>Kotlin \u00e9volue \u00e0 chaque mise \u00e0 jour de la version du langage. De nouvelles fonctionnalit\u00e9s sont introduites et des bugs sont corrig\u00e9s. Nous faisons toujours en sorte de minimiser le nombre et l&#8217;impact des changements importants et de suivre le <a href=\"https:\/\/kotlinlang.org\/docs\/kotlin-evolution.html\" target=\"_blank\" rel=\"noreferrer noopener\">processus d&#8217;\u00e9volution du langage Kotlin<\/a> et cela sera encore le cas pour la publication de Kotlin 2.0.<\/p>\n<p>Nous avons d\u00e9cid\u00e9 de ne pas apporter de nouvelles fonctionnalit\u00e9s dans Kotlin 2.0 car la r\u00e9\u00e9criture du frontend du compilateur Kotlin constitue d\u00e9j\u00e0 une \u00e9volution consid\u00e9rable et introduira un certain nombre d&#8217;am\u00e9liorations \u00e0 elle seule. Le nouvel algorithme d&#8217;analyse du flux de donn\u00e9es est plus pr\u00e9cis et permettra d&#8217;obtenir des casts intelligents de bien meilleure qualit\u00e9 qu&#8217;auparavant. Vous pouvez consulter <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=%23KT-4113%20%23KT-1982%20%23KT-7186%20%23KT-28806\" target=\"_blank\" rel=\"noreferrer noopener\">ces tickets<\/a> pour voir des exemples concrets. Cela transforme le code rouge, non compil\u00e9 en Kotlin 1.9 sur l&#8217;ancien frontend, en code vert compil\u00e9 en Kotlin 2.0. Il s&#8217;agit d&#8217;un effet secondaire de la nouvelle architecture de compilateur.<\/p>\n<p>Par ailleurs, une multitude de bugs de longue date ayant \u00e9t\u00e9 corrig\u00e9s, il est in\u00e9vitable que certains correctifs affectent le code qui reposait sur un comportement incorrect du compilateur. Nous \u00e9tudions attentivement l&#8217;impact potentiel de tous les changements de comportement entre l&#8217;ancien et le nouveau frontend K2. Si il s&#8217;av\u00e8re que ces changements risqueraient d&#8217;affecter un trop grand nombre d&#8217;utilisateurs, nous essaierons dans la mesure du possible de reproduire l&#8217;ancien comportement, m\u00eame s&#8217;il ne nous satisfait pas<\/p>\n<p>Nous ferons tout ce qui est possible pour minimiser l&#8217;impact de la migration de votre code de Kotlin 1.9 \u00e0 Kotlin 2.0. Nous vous tiendrons au courant du processus de passage \u00e0 la version stable de Kotlin 2.0 et vous permettrons de tester Kotlin 2.0 \u00e0 l&#8217;avance sur vos projets afin que vous puissiez nous signaler toute r\u00e9gression que nous aurions manqu\u00e9e lors de nos tests. Actuellement, nous travaillons principalement sur une version b\u00eata du frontend du compilateur K2 ax\u00e9e sur la qualit\u00e9, que nous pr\u00e9voyons de publier plus tard dans l&#8217;ann\u00e9e. Vous pouvez suivre ce travail dans <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-52604\" target=\"_blank\" rel=\"noreferrer noopener\">ce ticket<\/a>.<\/p>\n<h2>Qu&#8217;en est-il de la prise en charge des IDE pour Kotlin 2.0\u00a0?<\/h2>\n<p>Le plugin Kotlin IDE est int\u00e9gr\u00e9 dans les mises \u00e0 jour d&#8217;IntelliJ IDEA et d&#8217;Android Studio. Il inclut une copie du frontend du compilateur Kotlin pour l&#8217;analyse s\u00e9mantique du code, mais il ne s&#8217;agit pas de la version du compilateur Kotlin utilis\u00e9e pour compiler le code. La version r\u00e9elle du compilateur est d\u00e9termin\u00e9e par les param\u00e8tres de vos fichiers de build. Ainsi, lorsque vous compilerez votre code avec la version 2.0 de Kotlin, vous utiliserez le nouveau frontend du compilateur et vous b\u00e9n\u00e9ficierez de tous les avantages de la nouvelle architecture du compilateur en termes de performances. Il est toutefois possible que l&#8217;IDE utilise encore l&#8217;ancien frontend pour inspecter votre code.<\/p>\n<p>Afin de vous permettre de b\u00e9n\u00e9ficier des avantages du nouveau frontend du compilateur dans votre IDE, nous d\u00e9veloppons une toute nouvelle version du plugin Kotlin IDE, bas\u00e9e sur le frontend du compilateur K2. Nous travaillons actuellement \u00e0 la pr\u00e9version publique de ce nouveau plugin. Vous pouvez suivre la progression de notre travail dans <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-23988\" target=\"_blank\" rel=\"noopener\">ce ticket<\/a>.<\/p>\n<h2>\u00c0 quoi faut-il s&#8217;attendre apr\u00e8s Kotlin 2.0\u00a0?<\/h2>\n<p>La nouvelle architecture du frontend du compilateur Kotlin 2.0 permet une impl\u00e9mentation optimale de nombreuses nouvelles fonctionnalit\u00e9s int\u00e9ressantes. Certaines de ces fonctionnalit\u00e9s, comme les r\u00e9cepteurs de contexte <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-10468\" target=\"_blank\" rel=\"noreferrer noopener\">KT-10468<\/a> sont d\u00e9j\u00e0 disponibles dans la pr\u00e9version de l&#8217;ancien frontend du compilateur, mais elles ne seront pas activ\u00e9es par d\u00e9faut dans Kotlin 2.0. La stabilisation des nouvelles fonctionnalit\u00e9s, ainsi que l&#8217;impl\u00e9mentation d&#8217;autres nouveaut\u00e9s figurant dans notre pipeline, sont pr\u00e9vues pour de futures versions 2.x de Kotlin. Comme d&#8217;habitude, nous vous ferons r\u00e9guli\u00e8rement part des avanc\u00e9es de nos projets en mettant \u00e0 jour la <a title=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" target=\"_blank\" rel=\"noreferrer noopener\">feuille de route<\/a>.<\/p>\n<h2>Quand Kotlin 3.0 sera-t-il disponible\u00a0?<\/h2>\n<p>Nous ne le savons pas encore. Nous envisageons d&#8217;apporter de nombreux changements importants au langage \u00e0 l&#8217;avenir, y compris les demandes les plus populaires des utilisateurs collect\u00e9es dans le cadre de notre <a href=\"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2021\/12\/resultats-de-l-enquete-2021-sur-les-fonctionnalites-de-kotlin\/\" target=\"_blank\" rel=\"noreferrer noopener\">Enqu\u00eate sur les Fonctionnalit\u00e9s de Kotlin<\/a>. Il est fort possible que certains de ces changements soient suffisamment importants pour justifier la publication d&#8217;une nouvelle version majeure de Kotlin.<\/p>\n<h2>Comment pouvez-vous nous aider\u00a0?<\/h2>\n<p>Essayez le nouveau frontend du compilateur et donnez-nous votre avis\u00a0! \u00c0 partir de la version 1.8.20 de Kotlin, vous pouvez activer la pr\u00e9version de Kotlin 2.0 via l&#8217;indicateur de version du langage.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Activer le compilateur Kotlin K2\" href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html#new-kotlin-k2-compiler-updates\" target=\"_blank\" rel=\"noopener\">Activer le compilateur Kotlin K2<\/a><\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?_ga=2.62142766.385986069.1675687002-2069095727.1675084065&amp;_gl=1*kdn75d*_ga*MjA2OTA5NTcyNy4xNjc1MDg0MDY1*_ga_9J976DJZ68*MTY3NTc4ODEzMC4zNDUuMS4xNjc1NzkwNDE3LjU4LjAuMA..\" target=\"_blank\" rel=\"noreferrer noopener\">Feuille de route de Kotlin<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/10\/the-road-to-the-k2-compiler\/\" target=\"_blank\" rel=\"noreferrer noopener\">The Road to the K2 Compiler<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\" target=\"_blank\" rel=\"noreferrer noopener\">Nouveaut\u00e9s de Kotlin 1.8.20-Beta<\/a><\/li>\n<\/ul>\n\n\n<p><em>Article original en anglais de<\/em> :<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":322103,"comment_status":"closed","ping_status":"closed","template":"","categories":[89],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/324674"}],"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=324674"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/324674\/revisions"}],"predecessor-version":[{"id":324703,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/324674\/revisions\/324703"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/322103"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=324674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=324674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=324674"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=324674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}