k/n s/p · swift kotlin backend llvm optimizer x86 arm mips. ... interop-библиотеки...
TRANSCRIPT
![Page 1: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/1.jpg)
K/N S/P
![Page 2: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/2.jpg)
Ведутся работы!
![Page 3: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/3.jpg)
DistraKted boyfriend
![Page 4: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/4.jpg)
На пальцах
LLVM Frontend
Native runtime
K/N
![Page 5: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/5.jpg)
Frontend (compiler)
LLVM
C/C++/ObjC
Swift
Kotlin
Backend
LLVM Optimizer
x86
ARM
MIPS
![Page 6: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/6.jpg)
Платформы
![Page 7: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/7.jpg)
Kotlin stdlib
kotlin
kotlin.collections
kotlin.io
kotlin.math
kotlin.coroutines
kotlin.reflect
kotlinx.cinterop
![Page 8: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/8.jpg)
K/N “stdlib”
platform.posix
platform.linux
platform.osx
platform.windows
platform.android
platform.ios
![Page 9: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/9.jpg)
Сторонние библиотеки
.h
.def
cinterop .klib
![Page 10: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/10.jpg)
Артефакты
Исполняемые файлыДинамические библиотекиKLibraryInterop-библиотекиObjective/C-фреймворкиLLVM биткод
![Page 11: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/11.jpg)
Входная точка
import kotlinx.cinterop.*
import platform.posix.*
import mqtt.*
fun main(args: Array<String>) {
…}
![Page 12: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/12.jpg)
Типы
u_byte => kotlin.Int
int* => CPointer<kotlin.Int>
enums => [kotlin.Int, enum]
struct => class
typedef => typealias
![Page 13: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/13.jpg)
Указатели
CPointer<T>.pointed => T
T.ptr => CPointer<T>
![Page 14: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/14.jpg)
Управление памятью
nativeHeap.alloc<T>()
nativeHeap.allocArray<T>(size)
nativeHeap.free(ptr)
![Page 15: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/15.jpg)
Лексические скоупы
memScoped {
alloc<T>()
}
![Page 16: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/16.jpg)
Строки
CPointer<ByteRef>.toKString() => String
String.cstr => CValuesRef<ByteRef>
![Page 17: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/17.jpg)
cinterop .def
# Dynamic library
headers = libastral.h
linkerOpts.linux = -L/usr/local/lib -llibastral
# Static library
staticLibraries = libastral.a
libraryPaths = /usr/local/lib64
![Page 18: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/18.jpg)
Поддержка IDE
![Page 19: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/19.jpg)
Демо
![Page 20: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/20.jpg)
Итоги
+ It works!+ Развивается- Недоделанный
![Page 21: K/N S/P · Swift Kotlin Backend LLVM Optimizer x86 ARM MIPS. ... Interop-библиотеки Objective/C-фреймворки](https://reader030.vdocument.in/reader030/viewer/2022041120/5f32f6abf3cd816599616611/html5/thumbnails/21.jpg)
Спасибо!