Kotlin Multiplatform WebAssembly Plugin Framework · Cross-Platform WASI Execution Runtime
Wasmline 是一个 Kotlin Multiplatform 框架,用于在 Android、iOS、Desktop 与 Web 应用中加载并调用符合 WASI 规范的 WebAssembly 插件。
定义服务契约(commonMain):
// shared/src/commonMain/kotlin/com/example/EchoService.kt
import crow.wasmline.WasmlineService
interface EchoService : WasmlineService {
fun echo(message: String): String
}在插件中注册实现(wasmWasiMain):
// plugin/src/wasmWasiMain/kotlin/Main.kt
import crow.wasmline.Wasmline
import crow.wasmline.bind
fun main() {
Wasmline.current.bind(object : EchoService {
override fun echo(message: String): String {
return "Response from WASI plugin: $message"
}
})
}在宿主中加载插件并调用服务:
import crow.wasmline.WasmlineConfig
import crow.wasmline.WasmlineLoadResult
import crow.wasmline.link
import crow.wasmline.loader.WasmlineLoader
import crow.wasmline.network.ktor.KtorNetworkClient
WasmlineLoader.bootstrap()
// 本地路径与远程 URL 均可——http(s):// 会自动按远程 manifest 加载
val module = when (val result = WasmlineLoader.load(
source = "https://example.com/plugin/manifest.wlm",
config = WasmlineConfig(networkClient = KtorNetworkClient()),
)) {
is WasmlineLoadResult.Success -> result.wasmline
is WasmlineLoadResult.Failure -> error(result.cause)
}
val response = module.link<EchoService>().echo("ping")
module.close()Note
link<T>() 与 bind(impl) 是 Kotlin IR 编译器插件的重写目标。编译单元未应用 wasmline-kotlin-plugin 时,这些调用会在运行时抛出 UnsupportedOperationException。
| 平台 | 架构 | 产物支持 | 加载方式 |
|---|---|---|---|
| Android | v8a、x86_64 | .cwasm / .pwasm |
wasmtime |
| Android | v7a、x86 | 仅 .pwasm |
wasmtime |
| iOS | arm64 | .pwasm |
wasmtime |
| macOS | arm64 | .cwasm / .pwasm |
wasmtime |
| Linux | x86_64 | .cwasm / .pwasm |
wasmtime |
| Windows | x86_64 | .cwasm / .pwasm |
wasmtime |
| Web(Kotlin/JS · Kotlin/WasmJS) | 浏览器 JS 引擎 | 仅原始 .wasm |
web |
Note
Wasmline 目前处于开发阶段。详细的安装与集成文档将发布于 wuya.click/wasmline。
Wasmline 基于 Apache License, Version 2.0 发布。完整许可证文本请参见 LICENSE。





