我可能对 WASM 有一个根本性的误解,尝试用 google 搜索并阅读一些文档,但我还不清楚。
据我了解,WASI 是一种与语言无关的 API,具有支持 WASM 编译的语言标准库中存在的许多功能(具有文件系统访问功能、手动内存分配等)。
但是,在 WASI 之前,针对 WASM 的语言已经可以充分利用其标准库功能。这是正确的吗?
我担心情况并非如此,如果我的语言也不支持 WASI,我在使用 WASM 时会遇到障碍和限制。
我正在开发一个网络浏览器应用程序。在我的研究中,我发现您需要一个运行时(如 Wasmer)来原生运行 WASM 字节码,所以我在这里没问题。但是,在这方面没有发现 WASI 的任何内容。
为了实现许多标准库函数(例如文件系统),语言需要针对某种系统API。 WASI 是一组标准 API,可以由语言运行时使用,也可以直接由用户代码使用。
WASI API 有点类似于操作系统中的系统调用层。 如果没有 WASI,您将需要设计自己的系统调用层,然后以某种方式在您关心的所有运行时中实现它。 这在技术上可能是可行的,但与使用 WASI 等标准相比,它有很多缺点。