WASI vs Emscripten FS,沙盒文件系统

WASI vs Emscripten FS, sand-boxed file system

据我所知,WASI 为沙盒 WebAssembly 应用程序提供了对底层操作系统的访问权限,Emscripten FS 也提供了几个文件系统,例如 NODEFS。我的问题是 WASI 和 EMscriptenFS 都代表相同的 objective 来提供沙盒文件系统,或者这两者有不同的用法?有人可以帮助我理解两者吗?

Emscripten 本身并不旨在提供任何沙盒。使用 emscripten,编译代码的任何沙箱都由主机环境提供。例如,如果 Web 拥有非常强大的沙箱,那么到目前为止最常见的主机。如果您 运行 网络上的 emscripten 代码与页面上的其余 JS 代码具有完全相同的权限。同样,如果您 运行 emscripten 在节点下生成代码,如果具有与进程中其余 JS 代码相同的权限(即默认情况下,这意味着与节点进程本身相同的权限)。

然而,WASI 的目标之一是定义一个严格的沙箱,这样主机环境就可以轻松地准确决定与 WebAssembly 模块共享哪些资源。