{"id":336005,"date":"2023-03-24T12:52:24","date_gmt":"2023-03-24T11:52:24","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=336005"},"modified":"2023-03-24T12:52:27","modified_gmt":"2023-03-24T11:52:27","slug":"el-compilador-k2-se-estabiliza-en-kotlin-2-0","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/es\/kotlin\/2023\/03\/el-compilador-k2-se-estabiliza-en-kotlin-2-0\/","title":{"rendered":"El compilador K2 se estabiliza en Kotlin 2.0"},"content":{"rendered":"<p>Llevamos bastante tiempo trabajando en un nuevo frontend para el compilador de Kotlin (cuyo nombre en c\u00f3digo es \u00ab<strong>K2<\/strong>\u00bb). El frontend es la parte del compilador que analiza su c\u00f3digo y realiza el an\u00e1lisis sem\u00e1ntico, el an\u00e1lisis del flujo de datos, la resoluci\u00f3n de llamadas y la inferencia de tipos. Esta es la parte del compilador con la que usted, el desarrollador, interact\u00faa m\u00e1s. Tambi\u00e9n es la parte del compilador que se ejecuta continuamente dentro de su IDE, informa de todos los mensajes de error y advertencia, y le ayuda con tareas como el autocompletado, las inspecciones conscientes de la sem\u00e1ntica, las intenciones y las refactorizaciones. El nuevo frontend ya est\u00e1 disponible para su previsualizaci\u00f3n. Lo estamos puliendo y estabilizando continuamente y planeamos convertirlo en el frontend del compilador predeterminado en una futura versi\u00f3n de Kotlin. Hemos decidido llamar a esta futura versi\u00f3n <strong>Kotlin 2.0<\/strong>. Siga leyendo para saber m\u00e1s sobre la hoja de ruta de la versi\u00f3n 2.0 de Kotlin, nuestra motivaci\u00f3n y qu\u00e9 puede esperar de ella.<\/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>\u00bfCu\u00e1l es la hoja de ruta de lanzamiento de Kotlin 2.0?<\/h2>\n<p>Tenemos previsto lanzar una versi\u00f3n m\u00e1s con el formato tradicional como Kotlin 1.9, que tambi\u00e9n incluir\u00e1 actualizaciones del desarrollo en curso del frontend del compilador K2 a medida que se acerque a su estabilizaci\u00f3n. No habr\u00e1 Kotlin 1.10. La pr\u00f3xima versi\u00f3n principal despu\u00e9s de Kotlin 1.9 ser\u00e1 Kotlin 2.0.<\/p>\n<h2>\u00bfPor qu\u00e9 Kotlin 2.0?<\/h2>\n<p>El frontend es una parte importante del compilador, y el frontend del compilador K2 no es solo una refactorizaci\u00f3n del antiguo frontend del compilador: es una reescritura completa desde cero basada en la nueva arquitectura. Hemos estado publicando detalles t\u00e9cnicos sobre las diferencias en varios blogs, v\u00eddeos y conferencias. El art\u00edculo <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\">\u00abThe Road to the K2 Compiler\u00bb<\/a> es un buen punto de partida si desea obtener m\u00e1s informaci\u00f3n. En resumen, la nueva arquitectura es m\u00e1s r\u00e1pida y m\u00e1s extensible por dise\u00f1o, aborda la deuda t\u00e9cnica en el antiguo frontend del compilador, corrige errores y casos especiales en varios lugares y allana el camino para futuras extensiones del lenguaje.\u00a0<\/p>\n<p>En el caso de los lenguajes de programaci\u00f3n, la versi\u00f3n principal suele incrementarse cuando se introducen funcionalidades importantes o cambios innovadores. Sin embargo, en el caso de los programas inform\u00e1ticos, una versi\u00f3n principal puede incrementarse siempre que algo se reescriba sustancialmente para indicar una reelaboraci\u00f3n importante, aunque el conjunto de funcionalidades permanezca pr\u00e1cticamente igual. A pesar de que Kotlin es un lenguaje, hemos decidido seguir esta pr\u00e1ctica de software. El compilador de Kotlin, ante todo, es una gran pieza de software. La versi\u00f3n del lenguaje Kotlin viene definida por la versi\u00f3n de su compilador. Proporcionamos <a href=\"https:\/\/kotlinlang.org\/spec\/introduction.html\" target=\"_blank\" rel=\"noreferrer noopener\">especificaciones de Kotlin<\/a> como referencia del lenguaje, pero no como su definici\u00f3n.\u00a0<\/p>\n<h2>\u00bfFallar\u00e1 mi c\u00f3digo?<\/h2>\n<p>Kotlin cambia con cada actualizaci\u00f3n de la versi\u00f3n del lenguaje. Se introducen nuevas funcionalidades ling\u00fc\u00edsticas y se corrigen antiguos errores. Siempre intentamos minimizar el n\u00famero y el impacto de los cambios innovadores, y seguimos el <a href=\"https:\/\/kotlinlang.org\/docs\/kotlin-evolution.html\" target=\"_blank\" rel=\"noreferrer noopener\">proceso de evoluci\u00f3n del lenguaje Kotlin<\/a>. Kotlin 2.0 no ser\u00e1 diferente en ese sentido.\u00a0<\/p>\n<p>Estamos evitando conscientemente introducir nuevas funcionalidades en Kotlin 2.0. La reescritura del frontend del compilador de Kotlin es un cambio considerable e introduce una serie de mejoras por s\u00ed misma. Por un lado, el nuevo algoritmo de an\u00e1lisis del flujo de datos es m\u00e1s preciso y conduce a mejores casts inteligentes de los que eran posibles antes. Consulte <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=#KT-4113 #KT-1982 #KT-7186 #KT-28806\" target=\"_blank\" rel=\"noreferrer noopener\">estas incidencias<\/a> con ejemplos concretos. Esto convierte el c\u00f3digo rojo, no compilado en Kotlin 1.9 en el antiguo frontend, en c\u00f3digo verde compilado en Kotlin 2.0, lo cual es, t\u00e9cnicamente, un aspecto definitorio de la nueva funcionalidad del lenguaje Kotlin. Sin embargo, aqu\u00ed se trata simplemente de un efecto secundario de una nueva arquitectura del compilador.<\/p>\n<p>Adem\u00e1s, se han corregido montones de errores de larga duraci\u00f3n e, inevitablemente, algunas de esas correcciones pueden estropear c\u00f3digo que accidentalmente se basaba en un comportamiento incorrecto del compilador. Estamos estudiando detenidamente el impacto de todos los cambios de comportamiento entre la antigua y la nueva interfaz K2 y haciendo esfuerzos adicionales para replicar el comportamiento antiguo siempre que sea posible, incluso cuando no nos guste, si puede afectar a un n\u00famero considerable de usuarios de Kotlin.<\/p>\n<p>Nos comprometemos a minimizar el impacto de la migraci\u00f3n de su c\u00f3digo de Kotlin 1.9 a Kotlin 2.0. Le mantendremos informado sobre el proceso de estabilizaci\u00f3n de Kotlin 2.0 y le daremos tiempo suficiente para que pruebe Kotlin 2.0 en sus proyectos con antelaci\u00f3n, para que pueda informar de cualquier regresi\u00f3n que se nos haya pasado en nuestras pruebas. Nuestro trabajo actual se centra en una versi\u00f3n de calidad beta del frontend del compilador K2 a finales de este a\u00f1o, que puede seguir en <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-52604\" target=\"_blank\" rel=\"noreferrer noopener\">esta incidencia de hoja de ruta<\/a>.<\/p>\n<h2>\u00bfQu\u00e9 hay de la compatibilidad de Kotlin 2.0 con los IDE?<\/h2>\n<p>El complemento de Kotlin para los IDE est\u00e1 incluido en las actualizaciones de IntelliJ IDEA y Android Studio. Incluye una copia del frontend del compilador de Kotlin para el an\u00e1lisis sem\u00e1ntico de su c\u00f3digo, pero esa no es la versi\u00f3n del compilador de Kotlin que se utiliza para compilar realmente su c\u00f3digo. La versi\u00f3n real del compilador viene determinada por la configuraci\u00f3n de sus archivos de compilaci\u00f3n. As\u00ed, cuando compile su c\u00f3digo con la versi\u00f3n 2.0 del lenguaje Kotlin, estar\u00e1 utilizando el nuevo frontend del compilador y obtendr\u00e1 todas las ventajas de rendimiento de la nueva arquitectura del compilador. Sin embargo, es posible que el IDE siga utilizando el antiguo frontend para inspeccionar su c\u00f3digo.<\/p>\n<p>Para ofrecerle las ventajas de rendimiento del nuevo frontend del compilador en su IDE, estamos escribiendo una versi\u00f3n completamente nueva del complemento IDE de Kotlin que se crea sobre el frontend del compilador K2. Actualmente estamos trabajando para obtener una vista previa p\u00fablica de este nuevo complemento de IDE. Puede seguir <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-23988\" target=\"_blank\" rel=\"noopener\">esta incidencia<\/a> para obtener actualizaciones.<\/p>\n<h2>\u00bfQu\u00e9 esperar despu\u00e9s de Kotlin 2.0?<\/h2>\n<p>La nueva arquitectura del frontend del compilador de Kotlin 2.0 permite una implementaci\u00f3n limpia de muchas funcionalidades nuevas y geniales. Algunas de esas funcionalidades, como los receptores de contexto <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-10468\" target=\"_blank\" rel=\"noreferrer noopener\">KT-10468<\/a> ya est\u00e1n disponibles para su previsualizaci\u00f3n en el antiguo frontend del compilador, pero no se activar\u00e1n en Kotlin 2.0 de forma predeterminada. En su lugar, permanecer\u00e1n en la fase de vista previa. La estabilizaci\u00f3n de las nuevas funcionalidades se producir\u00e1 en futuras versiones de Kotlin 2.x, junto con la implementaci\u00f3n de otras novedades que tenemos en proyecto. Como es habitual, compartiremos actualizaciones peri\u00f3dicas sobre nuestros planes a trav\u00e9s de la <a title=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\" target=\"_blank\" rel=\"noreferrer noopener\">hoja de ruta de Kotlin<\/a>.\u00a0<\/p>\n<p>\u00bfCu\u00e1ndo tendremos Kotlin 3.0? A\u00fan no lo sabemos. Estamos barajando la posibilidad de introducir muchos cambios importantes en el lenguaje en el futuro, especialmente las peticiones m\u00e1s populares de nuestra \u00faltima <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/12\/kotlin-features-survey-2021-results\/\" target=\"_blank\" rel=\"noreferrer noopener\">Encuesta sobre las funcionalidades de Kotlin<\/a>. Es posible que algunos de estos cambios sean lo suficientemente significativos como para justificar la pr\u00f3xima versi\u00f3n principal de Kotlin.<\/p>\n<h2>\u00bfC\u00f3mo puede ayudar?<\/h2>\n<p>\u00a1Pruebe el nuevo frontend del compilador y denos su opini\u00f3n! A partir de Kotlin 1.8.20 puede activar una vista previa de la versi\u00f3n del lenguaje Kotlin 2.0 a trav\u00e9s de la bandera normal de la versi\u00f3n del lenguaje Kotlin.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Habilitar el compilador Kotlin K2\" href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html#new-kotlin-k2-compiler-updates\" target=\"_blank\" rel=\"noopener\">Habilitar el compilador Kotlin K2<\/a><\/p>\n<h2>M\u00e1s informaci\u00f3n<\/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\">Hoja de ruta 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\">Novedades de Kotlin 1.8.20-Beta<\/a><\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><em>Art\u00edculo original en ingl\u00e9s de:<\/em><\/p>\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":1086,"featured_media":322103,"comment_status":"closed","ping_status":"closed","template":"","categories":[89],"tags":[],"cross-post-tag":[6284],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/336005"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/comments?post=336005"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/336005\/revisions"}],"predecessor-version":[{"id":336017,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/336005\/revisions\/336017"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media\/322103"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media?parent=336005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/categories?post=336005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/tags?post=336005"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/cross-post-tag?post=336005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}