4 个版本 (破坏性更新)
0.4.0 | 2020 年 10 月 21 日 |
---|---|
0.3.0 | 2020 年 10 月 3 日 |
0.2.0 | 2020 年 9 月 13 日 |
0.1.0 | 2020 年 8 月 31 日 |
#20 in #v8
25KB
495 行
scriptit
scriptit 是一种在 Rust 中运行 JavaScript 代码的简单方法
scriptit 会根据您的平台以不同的方式运行 JS
- 在 V8 解释器中运行以针对 "native" 目标
- 在 WASM 主机解释器中运行以针对 "wasm32" 目标
您可以从 JS 中调用 Rust 函数。
为什么?
我想在我的 Rust 应用程序中进行脚本编写,我不需要像 node 或 deno 那样完全嵌入 v8,这里只用作库,因此您可以选择要注入的内容。
此外,我想用可能的目标 wasm 来编写大多数 Rust 应用程序:当我们可能在 wasm 目标上运行 Rust 代码时,我考虑使用主机上的 js 解释器。这使得 scriptit 成为一个在 wasm 中运行脚本的超轻量级方法,因为我们使用主机功能来完成此操作!
限制
由于这些目标,scriptit 不会给您提供与嵌入式 v8 相同的控制量,并且比使用 wasm_bindgen 更差的用户体验。遗憾的是,它由两个 api 的最低通用标准(v8 & wasm_bindgen)所统治。
示例
请参阅文档中的示例。
路线图
scriptit 非常实验性,我现在不会用它来做任何事情,至少在以下内容完成之前不会
- ES 模块支持
- 事件循环支持
- 承诺/Futures 支持
- 从 Rust 支持事件
- 通过引用而不是序列化的 JSON 复制传递给函数
有关更多详细信息,请参阅 问题。
依赖项
~0.8–14MB
~286K SLoC