[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5578":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":16,"starSnapshotCount":16,"syncStatus":42,"lastSyncTime":43,"discoverSource":44},5578,"boa","boa-dev\u002Fboa","boa-dev","Boa is an embeddable Javascript engine written in Rust.","",null,"Rust",7303,633,48,168,0,3,15,77,12,39.41,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38],"ecmascript","hacktoberfest","interpreter","javascript","javascript-engine","javascript-interpreter","parser","runtime","rust","rust-crate","wasm","webassembly","2026-06-12 02:01:12","# Boa\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fboajs.dev\u002F\">\n    \u003Cpicture>\n      \u003Csource\n        media=\"(prefers-color-scheme: dark)\"\n        srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fboa-dev\u002Fboa\u002Frefs\u002Ftags\u002Fv0.21\u002Fassets\u002Flogo_yellow.svg\">\n      \u003Csource\n        media=\"(prefers-color-scheme: light)\"\n        srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fboa-dev\u002Fboa\u002Frefs\u002Ftags\u002Fv0.21\u002Fassets\u002Flogo_black.svg\">\n      \u003Cimg\n        alt=\"Boa logo\"\n        style=\"width:auto;\"\n        src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fboa-dev\u002Fboa\u002Frefs\u002Ftags\u002Fv0.21\u002Fassets\u002Flogo.png\">\n    \u003C\u002Fpicture>\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\nBoa is an experimental JavaScript lexer, parser and interpreter written in Rust 🦀, it has support for **more** than 90% of the latest ECMAScript specification. We continuously improve the conformance to keep up with the ever-evolving standard.\n\n[![Build Status][build_badge]][build_link]\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fboa-dev\u002Fboa\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fboa-dev\u002Fboa)\n[![Crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fboa_engine.svg)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fboa_engine)\n[![Docs.rs](https:\u002F\u002Fdocs.rs\u002Fboa_engine\u002Fbadge.svg)](https:\u002F\u002Fdocs.rs\u002Fboa_engine)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F595323158140158003?logo=discord)](https:\u002F\u002Fdiscord.gg\u002FtUFFk9Y)\n[![Matrix](https:\u002F\u002Fimg.shields.io\u002Fmatrix\u002Fboa:matrix.org?logo=matrix)](https:\u002F\u002Fmatrix.to\u002F#\u002F#boa:matrix.org)\n\n[build_badge]: https:\u002F\u002Fgithub.com\u002Fboa-dev\u002Fboa\u002Factions\u002Fworkflows\u002Frust.yml\u002Fbadge.svg?event=push&branch=main\n[build_link]: https:\u002F\u002Fgithub.com\u002Fboa-dev\u002Fboa\u002Factions\u002Fworkflows\u002Frust.yml?query=event%3Apush+branch%3Amain\n\n## ⚡️ Live Demo (Wasm)\n\nTry out the engine now at the live Wasm playground [here](https:\u002F\u002Fboajs.dev\u002Fplayground)!\n\nPrefer a CLI? Feel free to try out `boa_cli`!\n\n## 📦 Crates\n\nBoa currently publishes and actively maintains the following crates:\n\n- **`boa_ast`** - Boa's ECMAScript Abstract Syntax Tree\n- **`boa_cli`** - Boa's CLI && REPL implementation\n- **`boa_engine`** - Boa's implementation of ECMAScript builtin objects and\n  execution\n- **`boa_gc`** - Boa's garbage collector\n- **`boa_interner`** - Boa's string interner\n- **`boa_parser`** - Boa's lexer and parser\n- **`boa_icu_provider`** - Boa's ICU4X data provider\n- **`boa_runtime`** - Boa's WebAPI features\n- **`boa_string`** - Boa's ECMAScript string implementation.\n- **`tag_ptr`** - Utility library that enables a pointer to be associated with a tag of type `usize`.\n\n> [!NOTE]\n>\n> The `Boa` and `boa_unicode` crates are deprecated.\n\n## 🚀 Example\n\nTo start using Boa simply add the `boa_engine` crate to your `Cargo.toml`:\n\n```toml\n[dependencies]\nboa_engine = \"0.21.0\"\n```\n\nThen in `main.rs`, copy the below:\n\n```rust\nuse boa_engine::{Context, Source, JsResult};\n\nfn main() -> JsResult\u003C()> {\n  let js_code = r#\"\n      let two = 1 + 1;\n      let definitely_not_four = two + \"2\";\n\n      definitely_not_four\n  \"#;\n\n  \u002F\u002F Instantiate the execution context\n  let mut context = Context::default();\n\n  \u002F\u002F Parse the source code\n  let result = context.eval(Source::from_bytes(js_code))?;\n\n  println!(\"{}\", result.display());\n\n  Ok(())\n}\n\n```\n\nNow, all that's left to do is `cargo run`.\n\nCongrats! You've executed your first JavaScript code using Boa!\n\n## 🔎 Documentation\n\nFor more information on Boa's API, feel free to check out our documentation.\n\n[**API Documentation**](https:\u002F\u002Fdocs.rs\u002Fboa_engine\u002Flatest\u002Fboa_engine\u002F)\n\n## 🏅 Conformance\n\nTo know more details about Boa's conformance surrounding the _ECMAScript_ specification,\nyou can check out our _ECMAScript Test262_ test suite results [here](https:\u002F\u002Fboajs.dev\u002Fconformance).\n\n## 🪚 Contributing\n\nPlease, check the [CONTRIBUTING.md](CONTRIBUTING.md) file to know how to\ncontribute in the project. You will need Rust installed and an editor. We have\nsome configurations ready for VSCode.\n\n### 🐛 Debugging\n\nCheck [debugging.md](.\u002Fdocs\u002Fdebugging.md) for more info on debugging.\n\n### 🕸 Web Assembly\n\n> [!IMPORTANT]\n>\n> This only applies to `wasm32-unknown-unknown` target,\n> `WASI` and `Emscripten` target variants are handled automatically.\n\n- Enable the `js` feature flag.\n- Set `RUSTFLAGS='--cfg getrandom_backend=\"wasm_js\"'`\n\nThe `rustflags` can also be set by adding a `.cargo\u002Fconfig.toml` file in the project root directory:\n\n```toml\n[target.wasm32-unknown-unknown]\nrustflags = '--cfg getrandom_backend=\"wasm_js\"'\n```\n\nFor more information see: [`getrandom` WebAssembly Support][getrandom-webassembly-support]\n\n[getrandom-webassembly-support]: https:\u002F\u002Fdocs.rs\u002Fgetrandom\u002Flatest\u002Fgetrandom\u002Findex.html#webassembly-support\n\n## ⚙️ Usage\n\n- Clone this repo.\n- Run with `cargo run -- test.js` in the project root directory where `test.js` is a path to an existing JS file with any valid JS code.\n- If any JS doesn't work then it's a bug. Please raise an [issue](https:\u002F\u002Fgithub.com\u002Fboa-dev\u002Fboa\u002Fissues\u002F)!\n\n### Example\n\n![Example](docs\u002Fimg\u002FlatestDemo.gif)\n\n### Command-line Options\n\n```txt\nUsage: boa [OPTIONS] [FILE]...\n\nArguments:\n  [FILE]...  The JavaScript file(s) to be evaluated\n\nOptions:\n      --strict                        Run in strict mode\n  -a, --dump-ast [\u003CFORMAT>]           Dump the AST to stdout with the given format [possible values: debug, json, json-pretty]\n  -t, --trace                         Dump the AST to stdout with the given format\n      --vi                            Use vi mode in the REPL\n  -O, --optimize\n      --optimizer-statistics\n      --flowgraph [\u003CFORMAT>]          Generate instruction flowgraph. Default is Graphviz [possible values: graphviz, mermaid]\n      --flowgraph-direction \u003CFORMAT>  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]\n      --debug-object                  Inject debugging object `$boa`\n      --test262-object                Inject the test262 host object `$262`\n  -m, --module                        Treats the input files as modules\n  -r, --root \u003CROOT>                   Root path from where the module resolver will try to load the modules [default: .]\n  -h, --help                          Print help (see more with '--help')\n  -V, --version                       Print version\n```\n\n## 🧭 Roadmap\n\nSee [Milestones](https:\u002F\u002Fgithub.com\u002Fboa-dev\u002Fboa\u002Fmilestones).\n\n## 📊 Benchmarks\n\nThe current benchmarks are taken from v8's benchmark that you can find [here][boa-benchmarks]. You can also view the results of nightly benchmark runs comparing Boa with other JavaScript engines [here](https:\u002F\u002Fboajs.dev\u002Fbenchmarks).\n\nIf you wish to run the benchmarks locally, then run Boa in release using the `combined.js` script which contains all the sub-benchmarks in the `bench-v8` directory.\n\n```bash\ncargo run --release -p boa_cli -- bench-v8\u002Fcombined.js\n```\n\n> [!TIP]\n>\n> If you'd like to run only a subset of the benchmarks, you can modify the `Makefile` located in the [`bench-v8` directory][boa-benchmarks].\n> Comment out the benchmarks you don't want to include, then run `make`. After that, you can run Boa using the same command as above.\n\n[boa-benchmarks]: https:\u002F\u002Fgithub.com\u002Fboa-dev\u002Fdata\u002Ftree\u002Fbenchmarks\u002Fbench\n\n## 🧠 Profiling\n\nSee [Profiling](.\u002Fdocs\u002Fprofiling.md).\n\n## 📆 Changelog\n\nSee [CHANGELOG.md](.\u002FCHANGELOG.md).\n\n## 💬 Communication\n\nFeel free to contact us on [Matrix](https:\u002F\u002Fmatrix.to\u002F#\u002F#boa:matrix.org) if you have any questions.\nContributor discussions take place on the same Matrix Space if you're interested in contributing.\nWe also have a [Discord](https:\u002F\u002Fdiscord.gg\u002FtUFFk9Y) for any questions or issues.\n\n## ⚖️ License\n\nThis project is licensed under the [Unlicense](.\u002FLICENSE-UNLICENSE) or [MIT](.\u002FLICENSE-MIT) licenses, at your option.\n","Boa 是一个用 Rust 编写的可嵌入 JavaScript 引擎。它支持超过 90% 的最新 ECMAScript 规范，具有词法分析、语法解析和解释执行的核心功能，并且持续改进以符合不断发展的标准。Boa 项目包括多个子模块，如抽象语法树（AST）、命令行界面（CLI）及 REPL 实现、内置对象与执行引擎、垃圾回收器等，适用于需要在 Rust 项目中集成 JavaScript 功能的场景，如 WebAssembly 应用开发或任何需要高性能 JavaScript 执行环境的地方。",2,"2026-06-11 03:04:10","top_language"]