NOTA: Este artículo es una traducción manual de este otro artículo.

Nos complace anunciar la versión 1.1.4 de Kotlin, una actualización con correcciones y mejoras en las herramientas para la 1.1. Esta actualización incluye:

  • Corrige una regresión de rendimiento notable en el plugin de IntelliJ IDEA
  • Añade soporte para las anotaciones por defecto de nulabilidad para paquetes
  • Mejora el soporte con Java 9
  • Añade soporte inicial experimental para generar implementaciones de Android Parcelable usando la anotación @Parcelize
  • Añade una herramienta para la eliminación de código muerto en JavaScript, y mejora el soporte de sourcemap en la depuración de JS y soporte de unitesting en JS
  • Genera bytecode más eficientemente
  • Añade muchas nuevas características el plugin de intelliJ IDEA

La actualización es compatible con todas las versiones de intelliJ desde la 2016.2 hasta la 2017.2, así como Android Studio 2.3 y 3.0 Beta.

La lista completa de cambios se puede encontrar aquí.

Nos gustaría agradecer a todos los contribuyentes externos cuyas PR se han incluído en esta versión: Andrius Semionovas, Bill Collins, Derek Alexander, Dimach, Ilya Zorin, Kirill Rakhman, Stuart Kent, takahirom, Toshiaki Kameyama, Vasily Kirichenko, Vitaly Khudobakhshov, Vladimir Koshelev, Yoshinori Isogai, Yuli Fiterman, y Zoltan Polgar.

Anotaciones de nulabilidad de por defecto en paquetes

A partir de esta versión, Kotlin soporta las anotaciones de nulabilidad por defecto de paquete, como la @ParametersAreNonnullByDefault de la JSR-305) y la anotación @NonNullApi de Spring Framework 5.0. Para facilitar la migración y evitar errores de compilación por tener más información de nulabilidad en las APIs de Java, el soporte para estas anotaciones está deshabilitado por defecto, y requiere habilitarse usando la opción de línea de comandos -Xjsr305-annotations=enable al compilador. Para habilitar esto en las builds de Gradle, usad la opción freeCompilerArgs; y en Maven, usad [](http://kotlinlang.org/docs/reference/using-maven.html#attributes-common-for-jvm-and-js). Para más información, ved la [especificación propuesta](https://github.com/Kotlin/KEEP/pull/78).

Soporte para Java 9

Avanzamos con el soporte de Java 9. A partir de esta versión, Kotlin hace comprobaciones de visibilidad basándose en la información del module-info.java. También se soporta ejecutar el compilador bajo el JDK 9.

Mejoras en el plugin de extensiones de Android

El plugin de extensiones de Android, ahora soporta no solo Actividades y Fragmentos, pero también vistas personalizadas e incluso contenedores personalizados de layout como un ViewHolder. También, se soporta completamente los variants.

Podéis leer más sobre las nuevas características en la propuesta de KEEP. Todas ellas se consideran experimentales, así que tenéis que habilitar un flag experimental en vuestro archivo build.gradle:

androidExtensions {
    experimental = true
}

Soporte de parcelables

El plugi nde extensiones de android ahora incluye un generador automático de implementación de Parcelable. Declara las propiedades como serializables en el constructor primario y añade una anotación @Parcelize, y crea automáticamente métodos writeToParcel()/createFromParcel().

@Parcelize
class User(val firstName: String, val lastName: String) : Parcelable

El generador de Parcelable también tiene u nestado experimental. Y no garantizamos ningún tipo de retrocompatibilidad. Cualquier tipo de feedback es bienvenido. Para más información, echad un ojo a la especificación propuesta.

Eliminación de código muerto en JavaScript

Kotlin 1.1.4 añade una nueva herramienta para eliminar código muerto de los archivos .js producidos por el compilador de Kotlin/JS. La herramienta funciona únicamente en las builds de Gradle de momento; para habilitarla añadid apply plugin: 'kotlin-dce-js' a vuestro build.gradle. Más información en la documentación.

Depuración de JavaScript

Esta actualización mejora el soporte para la generación de sourcemaps de JavaScript, haciendo más fácil depurar el JavaScript en los depuradores de los navegadores como Chrome DevTools. Echad un ojo al tutorial para más información.

Unit testing de JavaScript

Esta actualización extiende el soporte de unit testing en JavaScript para funcionar con una variedad más amplia de librerías. Ojead esta entrada del foro para más información y para enlaces a proyectos de ejemplo.

Mejoras en el bytecode generador

En esta actualización, hemos implementado bastantes mejoras en relación al bytecode generado. Y las excepciones de las funciones suspendibles con nombre ahora se originan desde la propia función, lo que hace que su stack-trace sea más fácil de leer, y el código generado es más rápido en muchos casos.

Mejoras en el plugin de IntelliJ IDEA

Esta nueva versión trae un montón de mejoras al plugin de intelliJ IDEA:

  • Mejoras de rendimiento notables
  • Nueva refactorización Copy Class
  • Refactorización Inline ahora funciona en propiedades con accessors
  • Ahora se soporta renombrar etiquetas
  • Muchas opciones nuevas en las opciones de estilo de código
  • Soporte para análisis de flujo de datos (Analyze Analyze Data Flow from/to Here)
  • Configure Kotlin in project funciona ahora al usar Gradle Kotlin DSL
  • Muchas inspecciones nuevas y quickfixes

Cómo actualizar

Para actualizar el plugin, usad Tools Kotlin Configure Kotlin Plugin Updates y pulsad sobre el botón Check for updates now. Así mismo, no olvidéis actualizar el compilador y la librería estándar en vuestros buildscripts de Gradle y Maven.

Como de costumbre, si encontráis cualquier problema con esta versión, os invitamos a pedir ayuda en nuestros foros, en Slack (invitación aquí) y a informar sobre problemas en el issue tracker.

¡A Kotlinear!