boa-dev/boa

GitHub: boa-dev/boa

Boa 是一个用 Rust 编写的可嵌入 JavaScript 引擎,支持超过 90% 的 ECMAScript 规范,让开发者能在 Rust 应用中轻松集成 JavaScript 执行能力。

Stars: 6963 | Forks: 568

# Boa

Boa logo

Boa 是一个用 Rust 🦀 编写的实验性 JavaScript 词法分析器、解析器和解释器,它支持 **超过** 90% 的最新 ECMAScript 规范。我们不断改进一致性,以跟上不断发展的标准。 [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8d4e923e59154829.svg)][build_link] [![codecov](https://codecov.io/gh/boa-dev/boa/branch/main/graph/badge.svg)](https://codecov.io/gh/boa-dev/boa) [![Crates.io](https://img.shields.io/crates/v/boa_engine.svg)](https://crates.io/crates/boa_engine) [![Docs.rs](https://docs.rs/boa_engine/badge.svg)](https://docs.rs/boa_engine) [![Discord](https://img.shields.io/discord/595323158140158003?logo=discord)](https://discord.gg/tUFFk9Y) [![Matrix](https://img.shields.io/matrix/boa:matrix.org?logo=matrix)](https://matrix.to/#/#boa:matrix.org) ## ⚡️ 在线演示 (Wasm) 立即在 Wasm playground [这里](https://boajs.dev/playground)试用引擎! 更喜欢 CLI?欢迎试用 `boa_cli`! ## 📦 Crates Boa 目前发布并积极维护以下 crates: - **`boa_ast`** - Boa 的 ECMAScript 抽象语法树 - **`boa_cli`** - Boa 的 CLI && REPL 实现 - **`boa_engine`** - Boa 的 ECMAScript 内置对象和 执行 - **`boa_gc`** - Boa 的垃圾回收器 - **`boa_interner`** - Boa 的字符串驻留器 - **`boa_parser`** - Boa 的词法分析器和解析器 - **`boa_icu_provider`** - Boa 的 ICU4X 数据提供者 - **`boa_runtime`** - Boa 的 WebAPI 功能 - **`boa_string`** - Boa 的 ECMAScript 字符串实现。 - **`tag_ptr`** - 实用程序库,允许将指针与 `usize` 类型的标签关联。 ## 🚀 示例 要开始使用 Boa,只需将 `boa_engine` crate 添加到您的 `Cargo.toml` 中: ``` [dependencies] boa_engine = "0.21.0" ``` 然后在 `main.rs` 中,复制以下内容: ``` use boa_engine::{Context, Source, JsResult}; fn main() -> JsResult<()> { let js_code = r#" let two = 1 + 1; let definitely_not_four = two + "2"; definitely_not_four "#; // Instantiate the execution context let mut context = Context::default(); // Parse the source code let result = context.eval(Source::from_bytes(js_code))?; println!("{}", result.display()); Ok(()) } ``` 现在,剩下要做的就是 `cargo run`。 恭喜!您已经使用 Boa 执行了您的第一段 JavaScript 代码! ## 🔎 文档 有关 Boa 的 API 的更多信息,请随时查看我们的文档。 [**API 文档**](https://docs.rs/boa_engine/latest/boa_engine/) ## 🏅 一致性 要了解有关 Boa 围绕 _ECMAScript_ 规范一致性的更多详细信息, 您可以[在此处](https://boajs.dev/conformance)查看我们的 _ECMAScript Test262_ 测试套件结果。 ## 🪚 贡献 请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 文件以了解 如何为项目做出贡献。您需要安装 Rust 和一个编辑器。我们 为 VSCode 准备了一些配置。 ### 🐛 调试 查看 [debugging.md](./docs/debugging.md) 以获取有关调试的更多信息。 ### 🕸 Web Assembly - 启用 `js` feature flag。 - 设置 `RUSTFLAGS='--cfg getrandom_backend="wasm_js"'` 也可以通过在项目根目录中添加 `.cargo/config.toml` 文件来设置 `rustflags`: ``` [target.wasm32-unknown-unknown] rustflags = '--cfg getrandom_backend="wasm_js"' ``` 有关更多信息,请参阅:[`getrandom` WebAssembly 支持][getrandom-webassembly-support] ## ⚙️ 使用 - 克隆此仓库。 - 在项目根目录下使用 `cargo run -- test.js` 运行,其中 `test.js` 是包含任何有效 JS 代码的现有 JS 文件的路径。 - 如果有任何 JS 不起作用,那就是一个 bug。请提出一个 [issue](https://github.com/boa-dev/boa/issues/)! ### 示例 ![Example](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/65e194afb6154831.gif) ### 命令行选项 ``` Usage: boa [OPTIONS] [FILE]... Arguments: [FILE]... The JavaScript file(s) to be evaluated Options: --strict Run in strict mode -a, --dump-ast [] Dump the AST to stdout with the given format [possible values: debug, json, json-pretty] -t, --trace Dump the AST to stdout with the given format --vi Use vi mode in the REPL -O, --optimize --optimizer-statistics --flowgraph [] Generate instruction flowgraph. Default is Graphviz [possible values: graphviz, mermaid] --flowgraph-direction Specifies the direction of the flowgraph. Default is top-top-bottom [possible values: top-to-bottom, bottom-to-top, left-to-right, right-to-left] --debug-object Inject debugging object `$boa` -m, --module Treats the input files as modules -r, --root Root path from where the module resolver will try to load the modules [default: .] -h, --help Print help (see more with '--help') -V, --version Print version ``` ## 🧭 路线图 参见 [Milestones](https://github.com/boa-dev/boa/milestones)。 ## 📊 基准测试 当前的基准测试取自 v8 的基准测试,您可以[在此处][boa-benchmarks]找到。您还可以在[此处](https://boajs.dev/benchmarks)查看夜间基准测试运行的结果,该结果将 Boa 与其他 JavaScript 引擎进行了比较。 如果您希望在本地运行基准测试,请使用 `combined.js` 脚本在 release 模式下运行 Boa,该脚本包含 `bench-v8` 目录中的所有子基准测试。 ``` cargo run --release -p boa_cli -- bench-v8/combined.js ``` ## 🧠 性能分析 参见 [性能分析](./docs/profiling.md)。 ## 📆 变更日志 参见 [CHANGELOG.md](./CHANGELOG.md)。 ## 💬 沟通 如果您有任何问题,请随时在 [Matrix](https://matrix.to/#/#boa:matrix.org) 上联系我们。 如果您有兴趣做出贡献,贡献者讨论将在同一个 Matrix Space 中进行。 我们还有一个 [Discord](https://discord.gg/tUFFk9Y) 用于解答任何问题或疑虑。 ## ⚖️ 许可证 本项目根据 [Unlicense](./LICENSE-UNLICENSE) 或 [MIT](./LICENSE-MIT) 许可证授权,您可以选择其中之一。
标签:AI工具, boa, CLI, ECMAScript, Javascript 引擎, odt, REPL, Rust, Wasm, WebAssembly, WiFi技术, 前端工具, 可视化界面, 垃圾回收, 嵌入式脚本, 开发库, 抽象语法树, 编程语言实现, 编译器, 网络流量审计, 解析器, 解释器, 词法分析, 语法分析, 通知系统, 通知系统