boa

boa

用Rust打造的实验性JavaScript解释器

Boa是一个用Rust开发的实验性JavaScript引擎,提供词法分析、解析和解释功能。它支持部分JavaScript语法,具备抽象语法树、命令行界面、交互式环境等特性。Boa可编译为WebAssembly在浏览器中运行,项目持续更新,致力于实现高性能且符合ECMAScript标准的JavaScript运行时。

BoaJavaScript解释器RustWebAssemblyECMAScriptGithub开源项目

Boa

<p align="center"> <a href="https://boajs.dev/"> <picture> <source media="(prefers-color-scheme: dark)" srcset="./assets/logo_yellow.svg"> <source media="(prefers-color-scheme: light)" srcset="./assets/logo_black.svg"> <img alt="Boa logo" src="https://yellow-cdn.veclightyear.com/835a84d5/7ffd7761-773a-4af5-8b74-ceaa4578ad71.png"> </picture> </a> </p>

这是一个用Rust编写的实验性JavaScript词法分析器、解析器和解释器。目前支持该语言的部分功能。

构建状态 codecov Crates.io Docs.rs Discord Matrix

在线演示(WASM)

立即在在线WASM playground这里尝试引擎!

喜欢命令行界面?欢迎尝试boa_cli

Boa 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_profiler - Boa的代码分析器
  • boa_icu_provider - Boa的ICU4X数据提供器
  • boa_runtime - Boa的WebAPI功能
  • boa_string - Boa的ECMAScript字符串实现

请注意:Boaboa_unicode crates已被弃用。

Boa引擎示例

要使用Boa,只需按照以下步骤操作。

在你的Cargo.toml中添加以下依赖:

[dependencies] boa_engine = "0.19.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 "#; // 实例化执行上下文 let mut context = Context::default(); // 解析源代码 let result = context.eval(Source::from_bytes(js_code))?; println!("{}", result.display()); Ok(()) }

现在,只需运行cargo run即可。

恭喜!你已经使用Boa执行了你的第一段JavaScript代码!

文档

有关BoaAPI的更多信息,请查看我们的文档。

API文档

一致性

要了解Boa覆盖了多少_ECMAScript_规范,你可以查看运行_ECMASCript Test262_测试套件的结果这里

贡献

请查看CONTRIBUTING.md文件,了解如何为项目做出贡献。你需要安装Rust和一个编辑器。我们为VSCode准备了一些配置。

调试

查看debugging.md获取更多调试信息。

Web Assembly

这个解释器可以暴露给JavaScript! 你可以在本地构建示例:

npm run build

在控制台中,你可以使用window.evaluate来传递JavaScript。 要在Web Assembly端进行开发,你可以运行:

npm run serve

然后访问http://localhost:8080

使用方法

  • 克隆此仓库。
  • 在项目根目录中运行cargo run -- test.js,其中test.js是一个包含任何有效JS代码的现有JS文件的路径。
  • 如果有任何JS不工作,那就是一个bug。请提出一个issue

示例

示例

命令行选项

用法: boa [选项] [文件]... 参数: [文件]... 要评估的JavaScript文件 选项: --strict 以严格模式运行 -a, --dump-ast [<格式>] 以给定格式将AST转储到stdout [可能的值: debug, json, json-pretty] -t, --trace 以给定格式将AST转储到stdout --vi 在REPL中使用vi模式 -O, --optimize --optimizer-statistics --flowgraph [<格式>] 生成指令流程图。默认为Graphviz [可能的值: graphviz, mermaid] --flowgraph-direction <格式> 指定流程图的方向。默认为从上到下 [可能的值: top-to-bottom, bottom-to-top, left-to-right, right-to-left] --debug-object 注入调试对象`$boa` -m, --module 将输入文件视为模块 -r, --root <根路径> 模块解析器尝试加载模块的根路径 [默认: .] -h, --help 打印帮助(使用'--help'查看更多) -V, --version 打印版本

路线图

请参阅里程碑

基准测试

请参阅基准测试

性能分析

请参阅性能分析

更新日志

请参阅CHANGELOG.md

交流

如果你有任何问题,欢迎在Matrix上联系我们。 如果你对贡献感兴趣,贡献者讨论也在同一个Matrix空间进行。 我们还有一个Discord用于解答任何问题或问题。

许可证

本项目根据UnlicenseMIT许可证授权,由你选择。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多