Moonbit FFI 的局限性以及 WASM WIT 的参考

目前看到 Moonbit 采用 FFI 进行交互,而 FFI 交互的局限性较多,即它仅接受和返回少量核心类型(本质上只有整数和浮点数)的函数。更丰富的类型,例如字符串、列表、记录(结构)等处理困难,容易造成性能问题。

WASM 的解决方案是 WIT ,通过 Canonical ABI (Application Binary Interface),进行交互。

Moonbit 是否可以参考 WIT 来做,以解决 FFI 的问题。

是不是可以考虑直接使用 WIT ,复用目前正在制定的 WASI 2 规范,省去很多标准库的设计时间。

可以的,wit-bindgen有moonbit支持。

嗯,看到这个项目了,但是这个似乎只是解决了 WASM 和 moonbit 两者之间的交互。

我更关心 moonbit 如何通过 WIT 定义标准库,并且同时兼容三个后端?

感觉缺少一套基础设施来做这个工作?

显然兼容三个后端并不现实,因为三个后端的实现各自不同。

只能根据你的具体需求进行实现。

那么现在的标准库主要侧重是哪个端? WASM 吗?或者是 native?

我觉得 mbt 需要一个侧重端,作为主力生态位。

目前的标准库不侧重任何一个后端,或者你可以认为是pure的部分,类似Haskell非IO Monad的那部分。