کاتلین/نیتیو v0.2 بیرون آمد!
این صفحه صرفا ترجمه شده این مقاله میباشد
یادآور شویم که در حال حاضر کاتلین نیتیو ورژن بالاتری را دارا است
ما خیلی خوشحالیم که اعلام کنیم کاتلین/نیتیو 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 نیز در دسترس است.