Project Icon

boa

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

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

Boa

Boa logo

这是一个用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许可证授权,由你选择。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

Project Cover

天工AI音乐

天工AI音乐平台支持音乐创作,特别是在国风音乐领域。该平台适合新手DJ和音乐爱好者使用,帮助他们启动音乐创作,增添生活乐趣,同时发现和分享新音乐。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号