Hasty Briefsbeta

双语

Minikotlin

4 hours ago
  • #Kotlin Compiler
  • #WASM-GC
  • #WebAssembly
  • minikotlin 是一个用C语言从头编写的编译器,它直接输出WebAssembly GC字节码,不依赖JVM、LLVM、Binaryen或Gradle。
  • 它能在浏览器内将Kotlin源代码(.kt文件)完整编译成一个可运行的.wasm模块,且编译器本身也作为WebAssembly模块提供,无需外部工具链。
  • 该编译器支持完整的Kotlin特性,包括开放/覆写方法、接口、数据类、枚举、带穷举when的密封层次结构、智能转换、支持安全调用的可空类型、泛型、扩展函数,以及通过CPS实现真实挂起的协程。
  • 其核心编译技术包括:将每个类映射到WebAssembly GC结构体类型以存储属性,通过虚函数表和call_ref实现虚拟分派,将is检查编译为ref.test以支持智能转换,并将协程挂起点降级为延续闭包而无需Asyncify或线程。
  • 该系统允许在浏览器中直接编写、编译和运行Kotlin项目,其功能包括通过coroutineScope管理并发启动,以及通过setTimeout等宿主机制处理delay挂起操作。