据我所知,WASI允许沙箱WebAssembly应用程序访问底层操作系统,Emscripten FS还提供了一些文件系统,如NODEFS。我的问题是WASI和EMscriptenFS都代表相同的目标,提供沙盒文件系统,还是这两个有不同的用途?有谁能帮我弄明白这两者吗?
Emscripten本身并不打算提供任何沙箱。使用emscripten,编译代码的任何沙箱都是由主机环境提供的。例如,到目前为止,最常见的主机是web,它有一个非常强大的自己的沙盒。如果你在web上运行emscripten代码,它与页面上的其他JS代码具有完全相同的权限。同样地,如果你在节点if下运行emscripten生成的代码,它与进程中的其他JS代码具有相同的特权(即默认情况下,这意味着与节点进程本身具有相同的特权)。
然而,WASI的目标之一是定义一个严格的沙箱,这样宿主环境就可以很容易地决定与WebAssembly模块共享哪些资源。