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 la versión 1.1.60 de Kotlin, una actualización con corrección de errores y actualización de herramientas para la 1.1. En esta actualización:
<code class="highlighter-rouge">Parcelable
y proporciona soporte en el IDEEsta actualización es compatible con todas las versiones de IntelliJ IDEA desde la 2016.3 hasta la 2017.3, así como con Android Studio 2.3, 3.0 y 3.1 Canary.
Podéis encontrar la lista completa de cambios aquí.
Nos gustaría agradecer a los contribuyentes externos cuyas PRs están incluídas en esta versión:
Toshiaki Kameyama, Kirill Rakhman, Paul Merlin, Raluca Sauciuc, Yoshinori Isogai, Andrey Mischenko, Francesco Vasco, Jonathan Leitschuh, Denis Grachev, y pivotal-vladimir.
Kotlin 1.1.60 introduce soporte experimental para la compilación incremental en los proyectos Gradle de Kotlin/JS, que puede reducir los tiempos de build de forma significativa durante el desarrollo, haciendo que un pequeño cambio local tome segundos, en vez de hasta un minuto entero en una reconstrucción no incremental.
Está deshabilitado por defecto y debe habilitarse poniendo <code class="highlighter-rouge">kotlin.incremental.js=true
en el <code class="highlighter-rouge">gradle.properties
o en el <code class="highlighter-rouge">local.properties
.
Sentíos libres de probarlo e informar de cualquier problema que os encontréis en el issue tracker de Kotlin.
Hemos mejorado y corregido errores en esta versión para el soporte para las anotaciones de nulabilidad de la JSR-305, que ya se extendió con apodos de tipo y calificadors por defecto en Kotlin 1.1.50.
Los calificadores de tipo por defecto de la JSR-305 ya permiten especificar <code class="highlighter-rouge">ElementType.TYPE_USE
para afectar a todos los usos de tipos dentro del ámbito de anotación, incluyendo tipos de argumentos, límites superiores de tipos deparámetro y tipos comodín:
Para los que mantenéis librerías proporcionando apodos de calificación y calificación de tipos de anotaciones por defecto, podéis ahora controlar el estado de migración de las anotaciones, marcando los tipos de anotación con <code class="highlighter-rouge">@UnderMigration
. Esta anotación está disponible dentro de un nuevo artefacto <code class="highlighter-rouge">kotlin-annotations-jvm
que se debe añadir como dependencia para la librería. Ejemplo: <code class="highlighter-rouge">compile "org.jetbrains.kotlin:kotlin-annotations-jvm:1.1.60"
en Gradle.
El <code class="highlighter-rouge">@UnderMigration(status = ...)
valor especifica cómo trata el compilador las violaciones de nulabilidad detectadas en los usos de anotaciones de API y pueden ser uno de <code class="highlighter-rouge">MigrationStatus.STRICT
, <code class="highlighter-rouge">MigrationStatus.WARN
y <code class="highlighter-rouge">MigrationStatus.IGNORE
, haciendo que el compilador produzca errores, warnings o ninguna de las dos cosas respectivamente.
Nota: <code class="highlighter-rouge">MigrationStatus.STRICT
se considera experimental en cuanto a que no ofrece garantías de que el código compilado con la vcersión actual con esta opción siga siendo correcto en versiones futuras de Kotlin. Es bien probable que las comprobaciones sean más estrictas en Kotlin 1.2.x o en Kotlin 1.3.
Los usuarios de librerías que por algún motivo necesiten un estado de migración diferente del ofrecido por alguien encargado de mantener de librería pueden establecer las comprobaciones de nulabilidad pasando los flags del compilador en algunas de las siguientes formas:
<code class="highlighter-rouge">-Xjsr305={strict|warn|ignore}
que ahora afecta únicamente a todas las anotaciones que no tengan el estado <code class="highlighter-rouge">@UnderMigration
<code class="highlighter-rouge">-Xjsr305=under-migration:{strict|warn|ignore}
sobreesctibe el comportamiento para todas las anotaciones <code class="highlighter-rouge">@UnderMigration
<code class="highlighter-rouge">-Xjsr305=@<fq.name>:{strict|warn|ignore}
donde fq.name es el nombre completamente calificado de una anotación específica para sobreescribir el estado de migraciónEl modo <code class="highlighter-rouge">strict
es experimental, y no proporciona garantías de que el código compilado con Kotlin 1.1.60 siga compilando en versiones futuras.
Estos flags se pueden combinar. Por ejemplo: <code class="highlighter-rouge">-Xjsr305=ignore -Xjsr305=under-migration:ignore -Xjsr305=@org.library.MyNullable:warn
hace que el compilador ignore todas las anotaciones de nulabilidad, excepto <code class="highlighter-rouge">org.library.MyNullable
y informa de advertencias para el resto.
Esta versión corrige un montón de progblemas conocidos con la implementación experimental automática del generador de <code class="highlighter-rouge">Parcelable
que se presentó en Kotlin 1.1.4 (ver la especificación) y también proporciona soporte para el IDE en forma de quick fixes y diagnóistico que asisten en la utilización de <code class="highlighter-rouge">@Parcelize
.
Con Kotlin 1.1.60, el código Kotlin en el source set de <code class="highlighter-rouge">test
se recompila de forma incremental cuando cambia el código en <code class="highlighter-rouge">main
.
De la misma forma, hemos hecho algunas correcciones para que las comprobaciones de up-to-date sean más robustas para asegurarnos de que se recompilan cuando cambian opciones como el target de la JVM, configuraciones de los plugins del compilador y otras cosas cambian.
Esta nueva versión trae un montón de mejoras en el plugin de IntelliJ de Kotlin:
<code class="highlighter-rouge">Iterable
, <code class="highlighter-rouge">Sequence
y <code class="highlighter-rouge">Array
entre ellos en el caso de que el tipo no coincida.Par aactualizar el plugin, usar <code class="highlighter-rouge">Tools | Kotlin | Configure Kotlin Plugin Updates
y pulsad el botón <code class="highlighter-rouge">Check for updates now
(para Android Studio 3.1, descargar el plugin desde un canal separado en el Plugin Repository). También, no os olvidéis de actualizar las versiones del compilador y de la librería estándar en vuestros scripts de compilación de Maven y de Gradle.
Como de costumbre, si os encontráis con algún problema con esta versión, sois bienvenidos a pedir ayuda en los foros, en Slack o informar de cualquier problema en el issue tracker.
¡A Kotlinear!