Kotlin
A concise multiplatform language developed by JetBrains
Lanzamos la versión 1.4.30 con un nuevo backend JVM y funcionalidades de lenguaje y multiplataforma
Kotlin 1.4.30 ya está disponible. Este es el último lanzamiento incremental 1.4, así que tenemos muchas funcionalidades experimentales que planeamos hacer estables en la versión 1.5.0. Nos encantaría que las probase y compartiera su opinión con nosotros. Esperamos que disfrute probando todas estas nuevas actualizaciones; no dude en decirnos lo que piensa de ellas.
Novedades de esta versión:
- Compilador y funcionalidades de lenguaje
- Herramientas de compilación
- Kotlin/Native
- Kotlin/JS
- Biblioteca estándar
Compilador y funcionalidades de lenguaje
Hemos decidido abarcar dos de las actualizaciones más importantes en publicaciones diferentes del blog para poder ofrecerles más detalles sobre estas funcionalidades.
Compilador
El nuevo backend JVM ha llegado a Beta y ahora produce binarios estables. Esto significa que puede utilizarlo con seguridad en sus proyectos.
Puede encontrar más información sobre la actualización, los modos de habilitar el nuevo backend IR JVM y cómo puede favorecer su estabilización aquí.
Avance de las nuevas funcionalidades de lenguaje
Entre las nuevas funcionalidades de lenguaje que planeamos publicar en Kotlin 1.5.0 están las clases de valor inline, registros JVM e interfaces selladas. Puede leer más información sobre ellas en esta publicación y aquí tiene un breve avance:
Clases inline. Previamente, las clases inline eran una funcionalidad de lenguaje independiente, pero ahora se han convertido en una optimización específica de JVM para una clase de valor con un parámetro. Las clases de valor representan un concepto más general y admitirán diferentes optimizaciones en el futuro. Actualmente admiten clases inline y admitirán clases primitivas Valhalla cuando el proyecto Valhalla esté disponible.
Registros Java. Otra mejora próxima en el ecosistema JVM son los registros Java. Son análogos a las clases de datos
de Kotlin, que se utilizan principalmente como contenedores de los datos. La interoperabilidad con Java siempre ha sido y será una prioridad para Kotlin. El código de Kotlin «comprende» los nuevos registros Java y los ve como clases con propiedades de Kotlin.
Interfaces selladas. Las interfaces se pueden declarar selladas, al igual que las clases. El modificador sellado funciona en interfaces del mismo modo: todas las implementaciones de una interfaz sellada se conocen en el tiempo de compilación. Una vez que se ha compilado una interfaz sellada, no pueden aparecer implementaciones nuevas.
Por tanto, le sugerimos que pruebe estas funcionalidades de lenguaje y que comparta su opinión con nosotros. Nos gustaría conocer sus expectativas respecto a estas funcionalidades, los casos de uso en los que las quiere aplicar y cualquier sugerencia o idea que tenga sobre ellas.
Puede obtener una descripción detallada de las nuevas funcionalidades de lenguaje e instrucciones sobre cómo probarlas en esta publicación del blog.
Herramientas de compilación
Compatibilidad con caché de configuración en el complemento Gradle para Kotlin
A partir de Kotlin 1.4.30, el complemento Gradle para Kotlin es compatible con la caché de configuración de Gradle. Esto acelera el proceso de compilación. Por ejemplo, Square, que emplea Kotlin para Android, tiene un build (Android, Java, Kotlin) de 1800 módulos. Su equipo comunica los números siguientes:
- El primer build tardó 16 minutos y 30 segundos.
- El segundo fue mucho más corto; tardó 5 minutos y 45 segundos.
En concreto, para Square, la caché de configuración ahorra 1 minuto y 10 segundos de configuración y creación de gráfico de tarea por build.
Cuando ejecuta el comando, Gradle ejecuta la fase de configuración y calcula el gráfico de tarea. Gradle almacena en caché el resultado y lo reutiliza para builds posteriores, lo que le ahorra tiempo.
Para empezar a utilizar esta funcionalidad, utilice el comando de Gradle o configure su IDE basado en IntelliJ. Y si algo no funciona como esperaba, puede informar al respecto a través de YouTrack.
Tenga en cuenta que esta funcionalidad todavía está en Alpha para multiplataforma.
Kotlin/Native
Mejoras en los tiempos de compilación
Hemos mejorado los tiempos de compilación en la versión 1.4.30. El tiempo necesario para crear el marco de trabajo de la muestra de almacenamiento de datos y redes KMM se ha reducido de 9,5 segundos (en la versión 1.4.10) a 4,5 segundos (en la versión 1.4.30).
Planeamos seguir optimizando el compilador. Puede seguir la incidencia en YouTrack.
Compatibilidad con el simulador de watchOS de 64 bits
Con la publicación de la versión 1.3.60 de Kotlin en October 2018, introdujimos la compatibilidad con la creación de aplicaciones de Kotlin para los simuladores de Apple Watch. En noviembre pasado, la arquitectura del simulador de Apple Watch se cambió de i386 a x86_64, lo que creó problemas a los desarrolladores que trabajan en esta funcionalidad. El nuevo destino watchosX64
de Kotlin/Native se puede utilizar para ejecutar el simulador de watchOS en arquitectura de 64 bits y funciona en WatchOS a partir de la versión 7.0.
Compatibilidad con el SDK de Xcode 12.2
Kotlin/Native ahora admite Xcode 12.2. Los marcos de trabajo de macOS que se han añadido a la versión 12.2 de Xcode se pueden utilizar con esta actualización de Kotlin. Por ejemplo, ahora está disponible el marco de trabajo MLCompute para los usuarios que desarrollan aplicaciones para macOS.
Kotlin/JS
Inicialización diferida de prototipos para propiedades de nivel superior
Hemos hecho disponible la inicialización diferida de propiedades de nivel superior como Experimental. Puede leer más sobre esto en las Novedades.
Biblioteca estándar
API independiente de configuración regional para texto en mayúsculas/minúsculas
Esta versión introduce una API independiente de configuración regional experimental para cambiar el uso de mayúsculas y minúsculas de cadenas y caracteres. Las funciones actuales toLowerCase()
, toUpperCase()
, capitalize()
, decapitalize()
de la API son sensibles a la configuración regional, lo que no es obvio y resulta inconveniente en algunos casos. En el caso de diferentes ajustes de la configuración regional de la plataforma, afecta al comportamiento del código. Por ejemplo, en la configuración regional de turco, cuando toUpperCase
convierte la cadena «kotlin», el resultado es "KOTLİN", no "KOTLIN". Ahora utiliza la configuración regional raíz, por lo que funcionará como cabría esperar.
Puede ver la lista completa de cambios de las funciones de procesamiento de texto en KEEP. Recuerde que esta API es experimental. Le agradeceríamos que compartiese sus comentarios con nosotros en YouTrack.
API inequívoca para conversión de char
Las funciones de conversión actuales de char a números, que devuelve su código UTF-16 expresado en distintos tipos numéricos, a menudo se confunden con la conversión similar de cadena a int que devuelve el valor numérico de una cadena.
Para evitar esta confusión, hemos decidido separar las conversiones de char en los dos siguientes conjuntos de funciones con un nombre claro: funciones para obtener el código entero de char
y para construir char
, y funciones para convertir char
al valor numérico del dígito que representa.
Esta funcionalidad también es Experimental, pero planeamos que sea estable para la versión 1.5.0. Ver más detalles en KEEP.
Obtenga más información sobre todas las actualizaciones de la versión 1.4.30 en las Novedades y en las publicaciones del blog sobre el nuevo backend JVM y sobre las funcionalidades de lenguaje.
Cómo actualizar
IntelliJ IDEA le sugerirá la actualización del complemento de Kotlin a la versión 1.4.30 de forma automática, pero también puede actualizarlo de forma manual siguiendo estas instrucciones. El complemento de Kotlin para Android Studio Arctic Fox se lanzará más adelante.
Si desea trabajar en proyectos existentes creados con versiones anteriores de Kotlin, utilice la versión 1.4.30 de Kotlin en la configuración de su proyecto. Para obtener más información, vea los documentos para Gradle y para Maven.
Puede descargar el compilador de línea de comando desde la página de lanzamiento de GitHub.
Los detalles del lanzamiento y la lista de bibliotecas compatibles están disponibles aquí.
Si encuentra algún problema con la nueva versión, encontrará ayuda en Slack (obtenga una invitación aquí) e informe acerca de las incidencias en nuestro YouTrack.
Antes de actualizar sus proyectos a la versión más reciente de Kotlin, puede probar el nuevo lenguaje y las funcionalidades de biblioteca estándar online en play.kotl.in.
Colaboradores externos
Queremos agradecer a todos los contribuidores externos cuyas solicitudes de incorporación de cambios se han incluido en esta versión:
Jinseong Jeon
Toshiaki Kameyama
pyos
Mads Ager
Steven Schäfer
Mark Punzalan
Ivan Gavrilovic
Kristoffer Andersen
Bingran
Juan Chen
zhelenskiy
Kris
Hung Nguyen
Victor Turansky
AJ
Louis CAD
Kevin Bierhoff
Hollow Man
Francesco Vasco
Uzi Landsmann
Dominik Wuttke
Derek Bodin
Ciaran Treanor
rbares
Martin Petrov
Yuya Urano
KotlinIsland
Jiaxiang Chen
Jake Wharton
Sam Wang
MikeKulasinski-visa
Matthew Gharrity
Mikhail Likholetov