Nuevo Kotlin User Group en Valencia y event "Estado de Machine Learning en Kotlin"
¡Se acaba de inaugurar el nuevo Kotlin Valencia User Group! Inicialmente organizado por Carlos Cáceres
Nos complace anunciar la liberación de Kotlin 1.2.50, una actualización de Kotlin 1.2 con corrección de errores y herramientas. En esta actualización:
@JvmDefault
con un modo de compatibilidad binariaLa actualización es compatible con todas las versiones de IntelliJ IDEA desde la 2017.2 hasta la 2018.2 EAP, así como Android Studio 3.0, 3.1, y 3.2 Canary.
Nos gustaría agradecer a nuestros contribuyentes externos cuyas pull requests se han incluído en esta versión: Toshiaki Kameyama, Mikaël Peltier, Raluca Sauciuc, meztihn, Ivan Gavrilovic, Denis Vnukov, Derek, Florian Steitz, Jim S, Evgeny Zakharov, Aaron Nwabuoku, Alexey Belkov, Claus Holst, Elifarley C, Felix Guo, Gabryel Monteiro, Gilkeson, Juan Chen, Mon_chi, Valeriy Zhirnov, Steven Spungin, Swapnil Sankla, TakuyaKodama, y Kenji Tomita
La lista completa de cambios se puede encontrar en el changelog. Seguid leyendo para más información sobre algunas cosas destacables.
Nos complace presentar la nueva versión 0.8.5 de nuestro plugin para el IDE Eclipse. Junto al soporte para el compilador de Kotlin 1.2.50, esta actualización trae diversas características y mejoras como:
kotlin-allopen
y kotlin-spring
Preferencias del compilador de Kotlin para todo el Workspace, que permiten configurar los plugins de compilación y otras opciones de compilación, se pueden encontrar en Preferences | Kotlin | Compiler. También es posible configurar únicamente preferencias a nivel de proyecto.
El plugin de Kotlin de Eclipse actualizado se puede encontrar en el Marketplace de Eclipse . Echad un ojo a los tutoriales ‘Getting Started’ para más detalles.
En esta actualización, hemos añadido un conjunto de extensiones toString(radix: Int)
para los tipos Byte
, Short
, Int
y Long
que están disponibles tanto en la librería estándar de los proyectos comunes como en Kotlin/JSm gracias a nuestro colaborador Florian Steitz. Están disponibles en los proyectos multiplataforma experimentales así como en proyectos que targetean a JavaScript.
Otra adición a la librería estándar en proyectos comunes y Kotlin/JS son dos nuevos constructores, String(chars: CharArray)
y String(chars: CharArray, offset: Int, length: Int)
. Su uso sirve para hacer una conversión eficiente de CharArray
a String
. Valeriy Zhirnov se ha encargado de esta mejora.
Además la librería kotlin.test
ahora soporta testear con el framework JUnit 5 con el módulo separado kotlin-test-junit5
, que proporciona una implementación del Asserter
que funciona encima de JUnit 5 y mapea las anotaciones de test dekotlin-test-annotations-common
a las anotaciones de test de JUnit 5.
Esta versión introduce soporte un nuevo soporte experimental de scripting que permite personalizar de forma más fácil los scripts de Kotlin, un uso más sencillo de los scripts con el compilador estándar y el plugin de IDEA, y una creación y embebido de host de scripting más sencillo. La propuesta completa de scripting de Kotlin junto con el estado actual de la implementación se puede encontrar en el KEEP (inglés) correspondiente. Algunas cosas a destacar incluyen:
La actualización del plugin de Kotlin de IntelliJ IDEA soporta archivos scratch ejecutables. Éstos scripts también pueden usar declaraciones del proyecto:
Además, hemos mejorado el soporte del IDE para los archivos de script de Kotlin (*.kts
). Ahora podéis crear scripts desde el la vista de proyecto y ejecutarlos dentro del módulo donde han sido declarados.
La actualización del plugin del IDE hace más sencillo escribir literales raw de cadena, ya que ahora inserta el par de """
de forma automática y proporciona una intención para indentar los literales (gracias a nuestro colaborador Toshiaki Kameyama). Esto es útil cuando pegas una cadena multilínea:
kotlinx.coroutines
– éstas detectan resultados Deferred
y async
sin utilizar y convierten de async(ctx) { }.await()
a withContext(ctx) { }
.A partir de Kotlin 1.2.50, Kotlin hace seguimiento de los cambios de forma incremental a través de módulos en los proyectos Android multimódulo. Esto resulta en builds incrmentales significantemente más r´paidas para proyectos Android grandes con multiples módulos interdependientes.
La actualización de Kotlin 1.2.50 corrige un montón de problemas con el compilador, trae mejoras de rendimiento y estabilidad, y añade nuevas características:
Mientras que corregimos tan pronto como podemos la mayoría de los bugs e inconsistencias del compilador, algunas correcciones pueden no ser retrocompatibles. La política de compatibilidad de Kotlin nos fuerza a introducir dichos cambios únicamente en versiones mayores (como la 1.1 y 1.2) y pasar por ciclos de migración largos. Nosotros, sin embargo, creemos que muchos usuarios se podrían beneficiar de esas correciones de forma más rápida, haciendo su código más seguro y claro.
En esta versión, introducimos un modo de compilador progresivo, que están pensadas para bases de código muy activas cuyos mantenedores actualizan de forma regular a la última versión del compilador de Kotlin y las herramientas. En este modo, algunas de las deprecaciones y correcciones de errores para código inestable se aplican de forma inmediata. Y por ello, es posible que parte del código pueda romperse habilitando este modo o actualizando Kotlin a una futura versión mientras se mantiene el modo progresivo habilitado.
Las correcciones elegidas para ser habilitadas en el modo progresivo no deberían afectar a muchos sitios en las bases de código, aunque no funcionarán sin más, y requerirán que los mantenedores arreglen el código erróneo. Por poner algunos ejemplos del tipo de correciones aplicadas al modo progresivo, echad un ojo a KT-9580, KT-16681, o KT-17981.
Podéis habilitar el modo progresivo por módulo, añadiendo el flag -Xprogressive
a los argumentos pasados al compilador de Kotlin.
Hemos actualizado el soporte experimental para la generación de métodos por defecto para las interfaces de la JVM con @JvmDefault
de forma que preserva la compatibilidad binaria con la implementación estándar de métodos por por defecto en interfaces en Kotlin. Para elegir este modo, usad el flag de compilación -Xjvm-default=compatibility
.
Nótese que hemos dejado de soportar el flag de compilación -Xenable-jvm-default
que introdujimos en Kotlin 1.2.40. Por favor, usad -Xjvm-default=enable
en su lugar.
Kotlin 1.2.50 soporta pasar argumentos al compilador desde un archivo con la opción de línea de comandos -Xargfile=args.txt
, que ayuda a llamar al compilador de la línea de comandos con rutas largas evitando así los límites de argumentos impuestos por los sistemas operativos.
Para actualizar el plugin de IntelliJ IDEA o Android Studio, usad Tools | Kotlin | Configure Kotlin Plugin Updates y haced click en el botón ‘Check for updates now’. El plugin de Eclipse se puede instalar o actualizar desde el Eclipse Marketplace (Help | Eclipse Marketplace y buscad el plugin de Kotlin).
Y por supuesto, no olvidéis actualizar las versiones del compilador y de la biblioteca estándar en vuestros buildscript de Maven y Gradle.
Como de costumbre, si os encontráis con cualquier problema con esta nueva versión, sois bienvenidos a pedir ayudar en los foros, en Slack (podéis obtener una invitación aquí), o informar de las incidencias en el gestor de incidencias.
¡A Kotlinear!