编写 rust 应用程序,允许使用 ..rust 编写的沙盒插件?

问题描述 投票:0回答:1

我想用 Rust 编写一个应用程序,可以使用(不受信任的)用户编写的插件进行扩展。这些插件可以通过网络平台下载,并且可以由核心软件的任何用户安装,但当然我想保护天真的免受恶意用户的侵害,并使插件在沙盒环境中运行。插件仍然应该尽可能快地执行。

我的做法是使用 wasm 和 javascript 沙箱作为接口。

  • 用 Rust 编写主应用程序。
  • 用户使用 rust 编写插件并使用
    wasm32-unknown-unknown
    目标编译为 wasm。
  • 用户使用 wasm-bindgen 创建 javascript 绑定
  • 核心应用程序使用V8等JavaScript引擎来执行插件的JavaScript前端。

我发现这种方法有一些缺点,主要是通过 javascript 及其引擎,这似乎是不必要的。难道没有更快的方法直接从 Rust 执行沙盒 Web 程序集吗?

javascript rust v8 webassembly wasm-bindgen
1个回答
0
投票

如果您只需要 Rust 而不需要 JavaScript 插件,您可以仅使用 WASM 引擎,例如 wasmerwasmtime。它们通常比完整的 JavaScript 引擎更轻。

© www.soinside.com 2019 - 2024. All rights reserved.