News

El compilador K2 se estabiliza en Kotlin 2.0

Read this post in other languages:

Llevamos bastante tiempo trabajando en un nuevo frontend para el compilador de Kotlin (cuyo nombre en código es «K2»). El frontend es la parte del compilador que analiza su código y realiza el análisis semántico, el análisis del flujo de datos, la resolución de llamadas y la inferencia de tipos. Esta es la parte del compilador con la que usted, el desarrollador, interactúa más. También 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ántica, las intenciones y las refactorizaciones. El nuevo frontend ya está disponible para su previsualización. Lo estamos puliendo y estabilizando continuamente y planeamos convertirlo en el frontend del compilador predeterminado en una futura versión de Kotlin. Hemos decidido llamar a esta futura versión Kotlin 2.0. Siga leyendo para saber más sobre la hoja de ruta de la versión 2.0 de Kotlin, nuestra motivación y qué puede esperar de ella.

¿Cuál es la hoja de ruta de lanzamiento de Kotlin 2.0?

Tenemos previsto lanzar una versión más con el formato tradicional como Kotlin 1.9, que también incluirá actualizaciones del desarrollo en curso del frontend del compilador K2 a medida que se acerque a su estabilización. No habrá Kotlin 1.10. La próxima versión principal después de Kotlin 1.9 será Kotlin 2.0.

¿Por qué Kotlin 2.0?

El frontend es una parte importante del compilador, y el frontend del compilador K2 no es solo una refactorización del antiguo frontend del compilador: es una reescritura completa desde cero basada en la nueva arquitectura. Hemos estado publicando detalles técnicos sobre las diferencias en varios blogs, vídeos y conferencias. El artículo «The Road to the K2 Compiler» es un buen punto de partida si desea obtener más información. En resumen, la nueva arquitectura es más rápida y más extensible por diseño, aborda la deuda técnica en el antiguo frontend del compilador, corrige errores y casos especiales en varios lugares y allana el camino para futuras extensiones del lenguaje. 

En el caso de los lenguajes de programación, la versión principal suele incrementarse cuando se introducen funcionalidades importantes o cambios innovadores. Sin embargo, en el caso de los programas informáticos, una versión principal puede incrementarse siempre que algo se reescriba sustancialmente para indicar una reelaboración importante, aunque el conjunto de funcionalidades permanezca prácticamente igual. A pesar de que Kotlin es un lenguaje, hemos decidido seguir esta práctica de software. El compilador de Kotlin, ante todo, es una gran pieza de software. La versión del lenguaje Kotlin viene definida por la versión de su compilador. Proporcionamos especificaciones de Kotlin como referencia del lenguaje, pero no como su definición. 

¿Fallará mi código?

Kotlin cambia con cada actualización de la versión del lenguaje. Se introducen nuevas funcionalidades lingüísticas y se corrigen antiguos errores. Siempre intentamos minimizar el número y el impacto de los cambios innovadores, y seguimos el proceso de evolución del lenguaje Kotlin. Kotlin 2.0 no será diferente en ese sentido. 

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í misma. Por un lado, el nuevo algoritmo de análisis del flujo de datos es más preciso y conduce a mejores casts inteligentes de los que eran posibles antes. Consulte estas incidencias con ejemplos concretos. Esto convierte el código rojo, no compilado en Kotlin 1.9 en el antiguo frontend, en código verde compilado en Kotlin 2.0, lo cual es, técnicamente, un aspecto definitorio de la nueva funcionalidad del lenguaje Kotlin. Sin embargo, aquí se trata simplemente de un efecto secundario de una nueva arquitectura del compilador.

Además, se han corregido montones de errores de larga duración e, inevitablemente, algunas de esas correcciones pueden estropear código 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úmero considerable de usuarios de Kotlin.

Nos comprometemos a minimizar el impacto de la migración de su código de Kotlin 1.9 a Kotlin 2.0. Le mantendremos informado sobre el proceso de estabilización de Kotlin 2.0 y le daremos tiempo suficiente para que pruebe Kotlin 2.0 en sus proyectos con antelación, para que pueda informar de cualquier regresión que se nos haya pasado en nuestras pruebas. Nuestro trabajo actual se centra en una versión de calidad beta del frontend del compilador K2 a finales de este año, que puede seguir en esta incidencia de hoja de ruta.

¿Qué hay de la compatibilidad de Kotlin 2.0 con los IDE?

El complemento de Kotlin para los IDE está incluido en las actualizaciones de IntelliJ IDEA y Android Studio. Incluye una copia del frontend del compilador de Kotlin para el análisis semántico de su código, pero esa no es la versión del compilador de Kotlin que se utiliza para compilar realmente su código. La versión real del compilador viene determinada por la configuración de sus archivos de compilación. Así, cuando compile su código con la versión 2.0 del lenguaje Kotlin, estará utilizando el nuevo frontend del compilador y obtendrá 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ódigo.

Para ofrecerle las ventajas de rendimiento del nuevo frontend del compilador en su IDE, estamos escribiendo una versión 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ública de este nuevo complemento de IDE. Puede seguir esta incidencia para obtener actualizaciones.

¿Qué esperar después de Kotlin 2.0?

La nueva arquitectura del frontend del compilador de Kotlin 2.0 permite una implementación limpia de muchas funcionalidades nuevas y geniales. Algunas de esas funcionalidades, como los receptores de contexto KT-10468 ya están disponibles para su previsualización en el antiguo frontend del compilador, pero no se activarán en Kotlin 2.0 de forma predeterminada. En su lugar, permanecerán en la fase de vista previa. La estabilización de las nuevas funcionalidades se producirá en futuras versiones de Kotlin 2.x, junto con la implementación de otras novedades que tenemos en proyecto. Como es habitual, compartiremos actualizaciones periódicas sobre nuestros planes a través de la hoja de ruta de Kotlin

¿Cuándo tendremos Kotlin 3.0? Aún no lo sabemos. Estamos barajando la posibilidad de introducir muchos cambios importantes en el lenguaje en el futuro, especialmente las peticiones más populares de nuestra última Encuesta sobre las funcionalidades de Kotlin. Es posible que algunos de estos cambios sean lo suficientemente significativos como para justificar la próxima versión principal de Kotlin.

¿Cómo puede ayudar?

¡Pruebe el nuevo frontend del compilador y denos su opinión! A partir de Kotlin 1.8.20 puede activar una vista previa de la versión del lenguaje Kotlin 2.0 a través de la bandera normal de la versión del lenguaje Kotlin.

Habilitar el compilador Kotlin K2

Más información

 

Artículo original en inglés de:

Luiz Di Bella

Roman Elizarov

image description

Discover more