2作者: vertexclique2 天前原帖
大家好!我一直在开发一个叫做 Afterburner 的项目:这是一个快速、可嵌入的 JavaScript/TypeScript 运行时,使用 Rust 编写,并内置了能力沙箱。 脚本默认情况下是被锁定的:没有网络、没有文件系统、没有环境变量。您需要明确授予脚本实际所需的访问权限,并且每个调用都有 CPU、内存和时间的硬限制。 我们的目标不是替代您现有的技术栈,而是与其无缝结合: 在您的 Rust 应用中嵌入一个 JavaScript/TypeScript 引擎,只需一个 crate。运行用户脚本、插件、业务规则或边缘逻辑,每个调用都完全沙箱化。 封装您已经使用的工具。像 `burn node app.js`、`burn npm test`、`burn bun`、`burn deno run` 和 `burn npx tsx` 这样的命令可以在沙箱中运行您现有的工具链。您可以使用未修改的 Express、Fastify 或 Hono 应用,并在没有环境 I/O 和内存上限的情况下运行。无需代码更改。 使用内置的注册表 registry.afterburner.sh。通过 `burn publish` 发布,通过 `burn install` 或 `burn add` 安装依赖,依赖项由内容摘要固定。每个包都附带能力清单,因此安装的代码默认是沙箱化的。它还与 npm 互操作,因此您仍然可以根据需要引入 npm 库。 由于没有任何东西获得环境权限,这也是一种干净、实用的方式来运行不可信的代码,而不必抱着侥幸心理。 仓库: [https://github.com/afterburner-sh/afterburner](https://github.com/afterburner-sh/afterburner) 网站: [https://afterburner.sh](https://afterburner.sh) 注册表: [https://registry.afterburner.sh](https://registry.afterburner.sh) 完整的操作指南,包括它是如何工作的、能做什么以及基准测试(达到约 16.8M 行/秒)都在一篇文章中。这是最好的入门地方: [https://vertexclique.com/blog/burn-after-reading/](https://vertexclique.com/blog/burn-after-reading/) 关于许可的一点说明:它在 BSL-1.1 下可用源代码,四年后自动转换为 Apache-2.0。可以自由用于您自己的项目,所以快去构建一些东西吧。