Kotlin 1.2-M2

Nos complace anunciar la segunda versión hito de Kotlin 1.2. Nuestro foco principal en esta versión es la estabilidad
y la corrección de bugs en el compilador de Kotlin, en las herramientas y en la librería estándar. También incluye muchas de las mejoras de la próxima 1.1.4 de Kotlin.

Por adelantado os damos las gracias por el feedback que nos déis sobre las características y posibles problemas que os encontréis en esta versión.

La lista completa de cambios desde la 1.2 M1 se puede encontrar aquí.

Como cambios más destacados en esta versión, encontramos:

Compilador

Cambio de ruptura: Llamadas a métodos Java por defecto

Hasta ahora, los miembros de interfaz en Kotlin sobreescribiendo métodos mientras
se generaba código para la JVM 1.6 producían un warning al hacer llamadas super:
Ahora las llamadas super a los métodos por defecto están deprecadas generando JVM 1.6.
Recompilad con -jvm-target 1.8. En la versión 1.2-M2 hemos reemplazado el warning con un error,
por lo que requiere que dicho código se compile con la opción -jvm-target 1.8.

Librería estándar

Hemos revisado las operaciones windowed/pairwise

Hemos escuchado vuestras opiniones y sugerencias sobre las funciones chunked/windowed/pairwise
KEEP-11, que sacamos como preview en el primer hito 1.2-M1, y hemos hecho ciertos cambios:

  • La función windowed tiene ahora el parámetro step con el valor por defecto 1.
    También optiene un parámetro opcional adicional partialWindows, que controla qué hacer
    con ventanas incompletas al final. Por defecto es falso, lo que significa que las ventanas
    incompletas se descartan.
  • La función pairwise tenía un nombre confuso, no dejaba claro cómo emparejaba los elementos.
    La hemos renombrado a zipWithNext, que deja más claro que juntamos cada elemento con el siguiente en una colección.
    Operaciones comunes matemáticas en la librería estándar

Operaciones matemáticas comunes en la librería estándar

Había una petición desde hace mucho tiempo para soportar las operaciones matemáticas en la librería estándar KT-4900.
Hasta ahora uno tenía que reorganizar las funciones matemáticas y constantes de la clase java.lang.Math de la JVM y de
kotlin.js.Math que exponían funciones matemáticas de JavaScript a Kotlin en la plataforma JavaScript.
Pero ahora hemos introducido los siguientes grupos de APIs en el paquete kotlin.math:

  • constantes: PI y E
  • trigonométricas: cos, sin, tan y las inversas: acos, asin, atan, atan2
  • hiperbólicas: cosh, sinh, tanh
  • exponenciales: pow (cómo método de extensión), sqrt, hypot, exp, expm1
  • logarítmicas: log, log2, log10, ln, ln1p
  • de redondeo:
    • funciones ceil, floor, truncate, round (mitad a impares);
    • funciones de extensión roundToInt, roundToLong (mitad a enteros);
  • signo y valor absoluto:
    • funciones abs y sign;
    • propiedades de extensión de valor absoluto y signo:
    • método de extensión withSign;
  • max y min de dos valores;
  • representación binaria:
    • propiedad de extensión ulp;
    • métodos de extensión nextUp, nextDown, nextTowards;
      toBits, toRawBits, Double.fromBits (están en el paquete Kotlin).

El mismo conjunto de funciones (pero sin constantes) está también disponible para los argumentos Float.
La mayor parte de dichas funciones (excepto del grupo de representación binaria), también están diponibles en JS, lo que soluciona el problema de escribir los mismos cálculos
en ambas plataformas.

Notas de versión preeliminar:

Como en otras versiones hito, no garantizamos ningún tipo de compatibilidad hacia adetrás para características del lenguaje o de la librería estándar. Cualquier cosa introducida en los hitos de la 1.2 está sujeta a cambio antes de la versión final de la 1.2. Cuando alcancemos la RC, todos los binarios producidos por versiones anteriores serán rechazados por el compilador: y tendréis que recompilar todo lo que hubieseis compilado con las 1.2‑Mx.
Sin embargo todo el código compilado por las 1.1.x y versiones anteriores se puede usar perfectamente sin ningún tipo de recompilación.

Cómo probar:

En Maven/Gradle: añadid http://dl.bintray.com/kotlin/kotlin-eap-1.2 como repositorio para el build script y vuestros proyectis;
usad 1.2-M2 como número de versión para el plugin de compilación y la librería estándar.

En IntelliJ IDEA: Id a ToolsKotlinConfigure Kotlin Plugin Updates, y seleccionad “Early Access Preview 1.2”
en el desplegable de Update channel, y pulsad Check for updates.

El compilador de línea de comandos se puede descargar de la página de versiones de Github.

En try.kotlinlang.org: Usad el desplegable de la esquina inferior derecha para cambiar la versión del compilador a la 1.2‑M2 (próximamente).