一个用 C 编写的快速 WebAssembly 解释器,体积小,可嵌入微控制器及多种语言项目。
boa-dev/boa
用 Rust 编写、可嵌入的 JavaScript 引擎,包含词法分析、语法解析与解释器。
- Star
- 7,661
- Fork
- 689
- 未关闭 Issue
- 223
- 最近提交
- 7天前
这是什么?
Boa 是一个用 Rust 编写的 JavaScript 词法分析器、解析器和解释器,目标是覆盖最新 ECMAScript 规范的 90% 以上,并通过 Test262 测试套件持续跟踪兼容性。
项目以一组 Rust crate 的形式发布。核心的 boa_engine 允许 Rust 应用创建执行上下文并直接执行 JavaScript 代码。其他 crate 分别提供 AST、解析器、垃圾回收器、字符串驻留以及类似 WebAPI 的运行时功能。此外,项目还提供命令行工具和 REPL,可在终端运行 JS 文件。
Boa 支持编译为 WebAssembly,并提供在线的浏览器 Playground。在 wasm32-unknown-unknown 目标下需要开启 js 特性并配置 getrandom 后端。
核心功能
- 01用 Rust 实现的 JavaScript 词法分析、解析与解释执行。
- 02目标覆盖最新 ECMAScript 规范的 90% 以上。
- 03通过 boa_engine crate 嵌入到 Rust 应用中,提供简洁的求值接口。
- 04自带命令行与 REPL,支持导出 AST 和优化器相关选项。
- 05可编译为 WebAssembly,并提供浏览器在线 Playground。
适用场景
- 在 Rust 应用中内嵌 JavaScript 执行能力,无需依赖 C++ 引擎。
- 在 Rust 宿主中求值用户提供的脚本或表达式。
- 学习或研究 JavaScript 语言实现与引擎内部机制。
- 在 WebAssembly 环境中运行 JavaScript。
快速上手
- 1
在 Cargo.toml 中添加 boa_engine 依赖
cargo add boa_engine - 2
将示例代码复制到 main.rs
- 3
运行项目
cargo run
使用前须知
- 作者称其为实验性项目,可能暂不适合生产环境。
- 尚未完全符合 ECMAScript 规范,官方称支持率超过 90%。
标签
常见问题
- boa 是什么?
- 用 Rust 编写、可嵌入的 JavaScript 引擎,包含词法分析、语法解析与解释器。 Boa 是一个用 Rust 编写的 JavaScript 词法分析器、解析器和解释器,目标是覆盖最新 ECMAScript 规范的 90% 以上,并通过 Test262 测试套件持续跟踪兼容性。
- boa 可以免费使用吗?用的什么许可证?
- boa 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- boa 还在维护吗?
- 活跃维护中。boa 最近一次提交是在 2026年10月31日。
- boa 适合用来做什么?
- 在 Rust 应用中内嵌 JavaScript 执行能力,无需依赖 C++ 引擎。 在 Rust 宿主中求值用户提供的脚本或表达式。 学习或研究 JavaScript 语言实现与引擎内部机制。 在 WebAssembly 环境中运行 JavaScript。
- boa 怎么安装和运行?
- 在 Cargo.toml 中添加 boa_engine 依赖: cargo add boa_engine 将示例代码复制到 main.rs 运行项目: cargo run
- 在哪里获取 boa?
- 源代码和安装说明在 GitHub 上:https://github.com/boa-dev/boa
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
WAMR 是一款轻量级 WebAssembly 运行时,适用于嵌入式、物联网和边缘计算等资源受限场景。
QuickJS 的分支,可挂起运行中的 JavaScript、保存整个堆快照,并在其他进程中恢复,原生支持 TypeScript。
用纯 Go 编写的 ECMAScript 5.1 JavaScript 引擎,可将 JS 执行嵌入 Go 程序。
用 Rust 编写的超快速 TypeScript/JavaScript 编译器与解析器,可在 Rust 与 JavaScript 中使用。
一个 Go 语言的 shell 解析、格式化与解释器库,附带 shfmt 格式化工具,支持 Bash、Zsh 等。