¡Kotlin 1.1-M03 ya está aquí!
NOTA: Este artículo es una traducción manual de este otro artículo.
Esta es una versión preeliminar. Para poder utilizarla en maven o en gradle, tienes que incluir el repositorio de gradle http://dl.bintray.com/kotlin/kotlin-eap-1.2
:
buildscript { ext.kotlin_version = '1.1-M03' repositories { maven { url "http://dl.bintray.com/kotlin/kotlin-eap-1.1" } mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
Nos complace anunciar el tercer hito del próximo Kotlin 1.1. Esta versión incluye nuevas características en el lenguaje así como mejoras y correcciones en el backend de JavaScript, el compilador y el plugin de IDEA. La nueva versión también incluye todas las mejoras en las herramientas introducidas en Kotlin 1.0.5, y es compatible con intelliJ IDEA 2016.3 EAP y Android Studio 2.2 y 2.3.
Como otra versión de hito, no damos ningún tipo de garantía de retrocompatibilidad para las nuevas características del lenguaje ni características en las librerías. Cualquier cosa introducida en las versiones hito de la 1.1 está sujeta a cambios antes de la liberación de la 1.1.
Por favor, compartid cualquier cosa en relación a las nuevas características o a cualquier problema que tengáis con esta versión, via YouTrack, foros y Slack.
El changelog completo de la 1.1-M03 se encuentra aquí.
Barra baja para símbolos sin usar
Ahora podéis usar una barra baja en vez de un nombre para un parámetro sin usar en las lambdas:
foo { _, x -> ... }
Y ahora también se puede usar la bara baja como nombre sin usar en las declaraciones de destructuración.
val (x, _, z) = expr
Ambos casos están descritos en detalle en el KEEP correspondiente.
Barra baja en literales numéricos
Siguiendo la especificación de Java 8, Kotlin soporta ahora literales numéricos con una única barra baja entre dígitos. Por ejemplo:
val UN_MILLÓN = 1_000_000
Echad un ojo al KEEP para más detalles y ejemplos.
Acceso genérico a valores de un enum
La propuesta ha aterrizado en la librería estándar en forma de dos funciones intrínsecas:
inline fun <reified T : Enum<T>> enumValues(): Array<T>
inline fun <reified T : Enum<T>> enumValueOf(name: String): T
Permiten enumerar los valores de un tipo enumerado genérico. Ejemplo:
enum class RGB { RED, GREEN, BLUE }
print(enumValues<RGB>().joinToString { it.name }) // imprime RED, GREEN, BLUE
Control de ámbito para los constructores tipo DSL
Como está descrito en detalle en el KEEP, los autores de DSL tenían problemas expresando restricciones ede ámbito para construcciones de construcción. Ejemplo, algunos DSL para construir HTML:
table {
tr {
tr {} // PROBLEMA: Aquí Table.tr() es válido
}
}
Para paliar ste problema hemos añadido la anotación @DslMarker
que permite controlar el ámbito de visibilidad en estos casos de
forma más precisa. Para ejemplos de uso, echad un ojo a la
versión preeliminar de la librería kotlinx.html
que usa esta característica
(mirad las implementaciones de
HtmlTagMarker
y
HTMLTag
y
DSL-markers.md
para información de uso preeliminar).
Unificación de la librería estándar
Estamos avanzando en el proceso de unificación para idferentes plataformas.
Hemos empezado a unificar los tipos de excepción en la 1.1-M2 y ahora
hemos hecho lo mismo con algunos tipos comunes que soportamos en todas
las plataformas, disponibles en el paquete kotlin.*
y que se incluyen
por defecto.
Esos incluyen:
ArrayList
,HashSet
,LinkedHashSet
,HashMap
,LinkedHashMap
enkotlin.collections
Appendable
yStringBuilder
enkotlin.text
Comparator
enkotlin.comparisons
En la JVM estos son únicamente tipos alias de los tipos de toda la vida de java.util
y java.lang
Nuevas características soportadas en el backend de JavaScript
El backend de JavaScript ahora soporta las siguientes características del lenguaje de Kotlin a la par con el backend de la JVM:
- Corrutinas
- Destructuración en parámetros lambdas
- Nombres de variable sin usar en declaraciones de destructuración
Mejoras en la generación de código JS
El backend de JavaScript ahora genera código que es más fácil de comprobar estáticamente, que es más amigable con las herramientas de procesado de JS, como minificadores, optimizadores, linters, entre otros.
Cómo probar
En Maven/Gradle: Añadid http://dl.bintray.com/kotlin/kotlin-eap-1.1 como vuestro repositorio
en vuestro archivo de construcción; y usad 1.1-M03
como versión del compilador y de la
librería estándar.
En IntelliJ IDEA: Id a Tools -> Kotlin -> Configure Kotlin Plugin Updates
, y seleccionad
“Early Access Preview 1.1” en el desplegable Update channel, y pulsad Check for updates.
¡A Kotlin!