این صفحه صرفا ترجمه شده این مقاله میباشد

یادآور شویم که در حال حاضر کاتلین نیتیو ورژن بالاتری را دارا است

ما خیلی خوشحالیم که اعلام کنیم کاتلین/نیتیو 0.2 منتشر شده است که به همراه یک ویژگی و فیکس شدن باگ های بررسی تکنولوژی کاتلین نیتیو آمده است. در این آپدیت coroutines و توابع بین خطی cross-module ساپورت شده است و همچنین بسیاری از باگ ها اصلاح شده و بسیاری بهبود سازی صورت گرفته است.

این انتشار شامل تعدادی مثال مفید است که به عنوان مثال نحوه استفاده از coroutine ها در concourent non-blocking I/O توضیح داده شده و یا سورس یک برنامه با رابط کاربری ساخته شده با GTK مثال زده شده است و همچنین یک کلاینت یادگیری ماشین TensorFlow نیز مثال زده شده است.

به عنوان مثال، کد ساده ای مثل زیر:

var connectionId = 0
acceptClientsAndRun(listenFd) {
    memScoped {
        val bufferLength = 100L
        val buffer = allocArray<ByteVar>(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}")
        }
    }
}

میتونه در پردازش چندین Socket I/O ی همزمان با استفاده از coroutine ها و خدمت دادن به همه کلاینت ها به صورت کاملا مستقل و همزمان استفاده بشه!

و همچنین برای ساختن یک دکمه GTK به همراه یک event Listener، میشه اینجوری کد زد:

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

بنابراین با استفاده از ورژن 0.2 میشه برنامه های ساده نوشته شده با کاتلین رو پیاده سازی کنید.

هم زمان تایم کامپایل و هم عملکرد در زمان اجرا به شدت بهبود پیدا کرده است و همچنین سایز بازنشردهنده (redistributable) نیز کاهش پیدا کرده است.

لیست تغییرات این انتشار رو میتونید در changelog ببینید.

همچنین فایل های باینری از قبل کامپایل شده برای Linux و MacOS نیز در دسترس است.