Anuncio del procesamiento de símbolos de Kotlin (KSP) Alpha

Goolge lanzó, la versión Alpha del procesamiento de símbolos de Kotlin (Kotlin Symbol Processing o KSP), una herramienta completamente nueva para crear complementos de compilación ligeros en Kotlin.

KSP ofrece una funcionalidad similar a KAPT, sin embargo, es hasta 2 veces más rápido y ofrece acceso directo a las funciones del compilador Kotlin y además, se está desarrollando teniendo en cuenta la compatibilidad multiplataforma.

KSP es compatible con la versión de Kotlin 1.4.30 y posteriores; puedes consultar el código fuente y la documentación en el repositorio de KSP de GitHub.

¿Por qué KSP?

Muchos desarrolladores iteran e implementan aplicaciones docenas de veces al día, por lo que tener que sentarse a esperar una compilación lenta puede llevar mucho tiempo. Uno de los mayores desafíos al compilar el código de Kotlin es que Kotlin no tiene un sistema de procesamiento de anotaciones nativo.

Los procesadores de anotaciones Room, están omnipresentes en Android y dependen de la compatibilidad del procesamiento de anotaciones de Java, a través de la herramienta de procesamiento de anotaciones de Kotlin (KAPT).

Sin embargo, KAPT puede ser lento de ejecutar, ya que requiere generar stubs intermedios de Java que luego pueden ser ingeridos por el sistema de procesamiento de anotaciones de Java.

Al crear KSP, pensamos en como sería el procesamiento de anotaciones para Kotlin si lo construyéramos desde cero. KSP ofrece una API potente y simple para analizar el código Kotlin directamente.

De hecho, los puntos de referencia iniciales con la biblioteca Room muestran que KSP es aproximadamente 2 veces más rápido que KAPT.

Empezando

Para ver como funciona KSP en acción, puedes descargar el proyecto del patio de juegos de KSP de Github.

En él encontrarás:

  • Biblioteca: Una test-processorbiblioteca de juguetes que implementa el patrón del constructor como un procesador KSP
  • Proyecto de consumo: Un workloaddirectorio que muestra mo utilizar el procesador de construcción en un proyecto de Kotlin del mundo real

Toda la lógica para implementar el constructor está en test-processor– para el consumidor ( workload), la única diferencia entre usar KAPT y KSP es un cambio en el archivo de construcción de dos líneas.

Agregar:

plugins {
 ```
 id("com.google.devtools.ksp")
}
ksp(project(":test-processor"))

Suprimiendo la línea:

kapt(project(":test-processor")) 

Este es el objetivo de KSP: La mayoría de los desarrolladores de aplicaciones de Android no necesitan preocuparse por sus componentes internos. Aparte de este cambio de una línea, una biblioteca que admite KSP, se ve como un procesador de anotaciones normal, solo que es hasta 2 veces más rápido.

Dicho esto, usar KAPT y KSP en el mismo módulo probablemente ralentizará su compilación inicialmente, por lo que durante este período alpha, es mejor usar KSP y KAPT en módulos separados.

A medida que más procesadores de anotaciones adopten KSP, esperamos que la mayoría de sus módulos puedan usar KSP como un reemplazo casi inmediato de KAPT. Por ahora, puedes consultar qué procesadores de anotaciones ofrecen compatibilidad con KSP en la siguiente tabla.

Si faltase en la tabla, alguna biblioteca que admita o esté implementando soporte para KSP, no dudes en enviar una solicitud de extracción.

Si eres autor de una biblioteca, que actualmente usa el procesamiento de anotaciones, puedes encontrar más información sobre cómo hacer que tu biblioteca sea compatible con KSP dentro de las guías de inicio rápido y README.

Para los autores de bibliotecas, ahora que KSP está en modo Alpha, es un buen momento para comenzar a analizarlo de cerca y darnos su opinión sobre la API en el rastreador de problemas de KSP.

Además, se publican actualizaciones de versiones en el canal #ksp de Kotlin Slack.

Java es una marca comercial registrada de Oracle y / o sus afiliados.

Fuente: Blog de Desarrolladores de Android bajo Licencia Creative Commons 2.5.

Artículos Relacionados
¿Por qué el lenguaje de programación MATLAB ha ganado tanta publicidad?

Existe una larga lista de lenguajes de programación si uno necesita enumerarlos. Si bien, algunos lenguajes de programación son bastante populares, otros no lo son o han perdido su encanto con la introducción de nuevos lenguajes de programación. Todo aspirante a la tecnología desea ¡SEGUIR LEYENDO!

Apple ha actualizado las reglas de la App Store y ahora no te permite evitar la comisión al comprar NFT

Con el lanzamiento de iOS 16.1 y iPadOS 16.1, Apple actualizó la guía de la App Store para desarrolladores de aplicaciones para iPhone e iPad el lunes. En particular, Apple ha aclarado sus políticas sobre el comercio de criptomonedas y tokens no fungibles. Para ¡SEGUIR LEYENDO!

Coccinelle: Utilidad para refactorizar código fuente en el lenguaje de C

Coccinelle es una utilidad de código abierto para hacer coincidir y transformar el código fuente de los programas escritos en el lenguaje de programación C. El motor de comparación y transformación de programas que proporciona el lenguaje SmPL (lenguaje de parches semánticos) para especificar ¡SEGUIR LEYENDO!

¿Qué hay de nuevo en Swift 5.4?

Swift 5.4 trae consigo algunas mejoras de compilación, incluida una mejor finalización del código en expresiones con errores y grandes aceleraciones para la compilación incremental. Además, se agregan otras nuevas características. Un resumen rápido de las nuevas características, serían: Una mejor sintaxis para la ¡SEGUIR LEYENDO!

Python supera a Java para convertirse en el segundo lenguaje de programación más popular

La edición de Noviembre de la lista de los principales lenguajes de programación de TIOBE nos trae una grata sorpresa (o no tan sorpresa, para la mayoría de nosotros). Puesto que por primera vez en los 20 años de historia del índice TIOBE, los ¡SEGUIR LEYENDO!

RubyGems: Gemas con extensiones (6)

Muchas gemas usan extensiones para envolver bibliotecas que están escritas en C con un envoltorio de Ruby. Los ejemplos incluyen nokogiri que envuelve libxml2 y libxslt, pg que es una interfaz para la base de datos PostgreSQL y las gemas mysql y mysql2 que ¡SEGUIR LEYENDO!

Markdoc: Framework para la creación de documentación basado en Markdown desarrollado por Stripe

Markdoc es una sintaxis y una cadena de herramientas basadas en Markdown para crear experiencias y sitios de documentación personalizados. Con Markdoc puedes diseñar y potenciar documentación, como por ejemplo toda la documentación pública de Stripe, el sitio de contenido más grande y complejo ¡SEGUIR LEYENDO!