Вышел Kotlin/Native v0.9
Новости Отредактировано
В Kotlin/Native v0.9 изменения коснулись использования компилятора и стандартных библиотек Kotlin 1.3-M2, а также доработки элементов параллелизма.
2К открытий2К показов
Разработчики Kotlin рассказали о выходе новой версии LLVM-бэкенда Kotlin/Native для компилятора языка. В v0.9 добавлена поддержка беззнаковых типов и интероперабельность с C, Objective-C/Swift. В новой версии доработаны простейшие элементы параллелизма, а также она работает с компилятором и стандартными библиотеками Kotlin 1.3-M2.
Поддержка беззнаковых типов
В версии 1.3 Kotlin получил поддержку беззнаковых типов в библиотеках JVM, Native и JavaScript. Поэтому код
будет корректно работать во всех формах языка Kotlin и выводить 4294967295
. Операции стандартных библиотек поддерживают беззнаковые операнды.
Интероперабельность
Беззнаковые типы в Kotlin сопоставляются с аналогичными в C и Objective-C/Swift. В качестве примера код, который считывает данные в ByteArray
:
В нескольких местах может произойти конвертация знаковых величин в беззнаковые (их можно узнать по типу convert()
), но программный интерфейс ssize_t recv(int socket, void *buffer, size_t length, int flags);
переводится в подпись языка Kotlin вида:
Простейшие элементы параллелизма
Доработана концепция замораживания объектов, которая появилась в Kotlin/Native v0.8. Простейшие элементы перемещены в пакет kotlin.native.concurrent
. Основные изменения:
- доработаны классы
AtomicInt
,AtomicLong
,AtomicNativePtr
иAtomicReference
; lazy
правильно работает с замороженными объектами;- добавлен класс
DetachedObjectGraph
.
В качестве примера с классом DetachedObjectGraph
код
передаст права изменяемого объекта Data
асинхронному списку на macOS.
Произошло изменение с переменными верхнего уровня. Доступ к ним осуществляется из основного потока приложения, попытки получения доступа иными путями приведут к генерированию исключения. Управление производится с помощью маркировок @ThreadLocal
и @SharedImmutable
, которые привязывают переменную к одному из потоков или замораживают её, соответственно.
Пакет kotlin.native
Весь код переместили из пакета konan
в kotlin.native
. Доработан интерфейс, а также переведены во внутренние или частные нативно-специфические операции, дополняющие друг друга в общей библиотеке stdlib. Это решение позволит использовать стандартные операции.
Дополнительные изменения
- Kotlin/Native v0.9 теперь поддерживает API сопрограмм. При этом экспериментальные сопрограммы из
kotlin.coroutines.experimental
не поддерживаются компилятором или при их выполнении; - Компилятор и стандартные библиотеки Kotlin 1.3-M2 — основа текущей версии Kotlin/Native. Внутренние классы, беззнаковые типы и API общего генератора случайных чисел доступны на всех нативных объектах.
Разработчики ускорили темпы развития Kotlin/Native после выпуска предыдущей версии в середине июля 2018 года. В ней изменения коснулись безопасности многопоточного программирования, расширения функциональности библиотек и поддержки устройств iOS.
2К открытий2К показов