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
¡Por fin Kotlin ha pasado la fase Beta y ahora estamos enormemente complacidos de presentar la RC (Release Candidate)!
NOTA: como anunciamos previamente, la RC requiere que se recompile todo el código para asegurarnos de que no queda código de versiones antiguas por ahí (¡por favor, recompilad incluso si estabais en versiones EAP!).
Este blog da una visión de conjunto de los cambios que han ocurrido desde la Beta 4. Esta es la build con más cambios en la librería. Y también hemos corregido algunos bugs. Podéis encontrar la lista completa de cambios aquí.
Discursiones en Hacker News y Reddit.
En primer lugar, como ya prometimos, ha habido una limpieza:
La mayor parte de los cambios en el lenguaje son pequeños ajustes y correcciones de errores. Vamos a destacar algunos, y podéis ver la lista completa aquí.
Ahora soportamos un nuevo objetivo de anotación: <code class="highlighter-rouge">@delegate:
. Por ejemplo, para marcar el objeto delegado como <code class="highlighter-rouge">@Transient
, podemos usar lo siguiente:
classExample{
@delegate:Transient
valfoobyLazy{...}
}`
Hemos arreglado un conjunto de bugs relacionados con la variancia en sitios de uso (proyecciones de tipo). Como resultado, el compilador puede encontrar algunos bugs que se había escapado en el código.
Por ejemplo, en el siguente caso:
valints=mutableListOf(1,2,3)
valstrs=mutableListOf("abc","def")
valcomps:MutableList<outComparable<*>>=ints
comps.addAll(strs)//?!Addingstringstoalistofints`
<code class="highlighter-rouge">Projected type MutableList<out Comparable<*>> restricts the use of addAll()
Hemos hecho algunas mejoras a las propiedades sintéticas derivadas de los pares get/set de Java.
Hemos añadido soporte para las anotaciones <code class="highlighter-rouge">@Nullable/NotNull
de varias librerías populares como <code class="highlighter-rouge">javax.annotations
, Android SDK, etc.
Los usuarios de EAP informan:
Las anotaciones de Android reconocidas me rompen un montón de código en el buen sentido
Y correcciones de errores destacadas:
<code class="highlighter-rouge">Map.getOrElse()
y <code class="highlighter-rouge">Map.getOrPut()
tratan las claves asociativas con valores <code class="highlighter-rouge">null
como no encontradas.<code class="highlighter-rouge">mutableListOf
, <code class="highlighter-rouge">mutableSetOf
y <code class="highlighter-rouge">mutableMapOf
para construir colecciones mutables.<code class="highlighter-rouge">toMutableList
en vez de <code class="highlighter-rouge">toArrayList
. La última está deprecada.<code class="highlighter-rouge">associate
y <code class="highlighter-rouge">associateBy
para ayudar en la construcción de mapas (reemplazando a <code class="highlighter-rouge">toMap
/<code class="highlighter-rouge">toMapBy
)<code class="highlighter-rouge">kotlin.comparisons
(que no se importa por defecto).Más cambios aquí.
Para habilitar las extensiones de Android en Gradle de una forma más ideomática, ahora podemos poner:
applyplugin:'kotlin-android-extensions'`
build.gradle` (de cada proyecto individual).
La forma antigua ya no funciona e imprime instrucciones para arreglarlo en la salida.
Cambios en el IDE
- Intención para reemplazar la iteración sobre entradas de un mapa, con un bucle usando una destructuración
- Inspección y quickfix para limpiar modificadores de visibilidad redundantes
- Inspección para reemplazar llamadas
<code class="highlighter-rouge">assert
con comprobaciones de variables nulables o no nulables con <code class="highlighter-rouge">!!
o <code class="highlighter-rouge">?: error(...)
- Mostrar una notificación de “Kotlin not configured” al abrir un archivo .kt en el IDE si no está configurado el runtime de Kotlin en el módulo correspondiente
- Acción para generar el método
<code class="highlighter-rouge">toString()
- Soporte para implementar miembros mediante parámetros primarios de construcción
- El popup con información de parámetros funciona para mostrar los parámetros genéricos
- El competado ofrece variantes de nombre basados en identificadores sin resolver en el archivo actual
- Quickfix para añadir ramas restantes en expresiones
<code class="highlighter-rouge">when
- Soporte para mover clases anidadas al nivel superior o en otra clase raíz
- Ya funciona
<code class="highlighter-rouge">@Supress
en las inspecciones del IDE
Instrucciones de instalación
para los usuarios de IntelliJ IDEA, puede que las actualizaciones automáticas no funcionen en el IDE, así que necesitaréis descargar el plugin e instalarlo desde un archivo zip:
- Descargarlo aquí
-
Ir a *Preferences Plugins and click Install plugin from disk…*
Sentimos las molestias
Estad atentos
La versión final se acerca… Mientras tanto: ¡que tengáis un buen Kotlin!
P.D: Ved las discursiones en Hacker News y Reddit.