Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
57 lines (45 sloc) 2.7 KB
layout title category tags author original icon
post
Kotlin/Native v0.2
releases
releases
soywiz
/images/native/KotlinNative.png

Nos complace anunciar la liberación de Kotlin/Native v0.2, una actualización con características y correcciones a la preview técnica. Esta actualización añade soporte para corrutinas y soporte para funciones inline cross-módulo, así como correcciones y mejoras por todas partes.

Esta versión incluye muestras sobre cómo usar corrutinas para hacer IO no bloqueante, una aplicación GUI usando GTK así como un cliente del framework de machine learning TensorFlow aportado por Julius Kunze.

Por ejemplo, el código es tan fácil como:

{% highlight kotlin %} var connectionId = 0 acceptClientsAndRun(listenFd) { memScoped { val bufferLength = 100L val buffer = allocArray(bufferLength) val connectionIdString = "#${++connectionId}: ".cstr val connectionIdBytes = connectionIdString.getPointer(this) try { while (true) { val length = read(buffer, bufferLength) if (length == 0L) break write(connectionIdBytes, connectionIdString.size.toLong()) write(buffer, length) } } catch (e: IOException) { println("I/O error occurred: ${e.message}") } } } {% endhighlight %}

que se puede usar para procesar múltiples sockets de forma concurrente con courruticorrutinas y servir cada cliente individual y concurrentemente.

Y para crear un botón GTK y un event listener, basta con:

{% highlight kotlin %} val button = gtk_button_new_with_label("Click me!")!! g_signal_connect(button, "clicked", staticCFunction { _: CPointer?, _: gpointer? -> println("Hi from Kotlin") } ) {% endhighlight %}

Así que la versión 0.2, permite crear aplicaciones nativas, ligeras y completamente funcionales escritas en Kotlin.

Tanto el rendimiento de la compilación como del runtime ha mejorado significativamente, y también ha disminuido el tamaño de los redistribuibles.

La lista completa de cambios en esta versión se puede encontrar en el changelog.

Y hay disponible binarios precompilados tanto para Linux como para MacOS.