#v8 #scripting #javascript

scriptit

scriptit 是一种在 Rust 中运行 JavaScript 代码的简单方法(native+wasm)

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

MIT 许可证

25KB
495

scriptit

cargo build & test wasm-pack build & test

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