8个版本 (5个破坏性更新)
0.19.0 | 2024年7月11日 |
---|---|
0.18.0 | 2024年3月7日 |
0.17.3 | 2023年9月26日 |
0.17.0 | 2023年7月8日 |
0.14.0 | 2022年3月15日 |
#3 in 编程语言
每月下载量28,643
用于 21 个crate(13个直接使用)
7MB
116K SLoC
Boa
这是一个用Rust编写的实验性JavaScript词法分析器、解析器和解释器。目前,它支持该语言的一些特性。
实时演示(WASM)
现在在实时WASM游戏场中试用引擎!点此!
更喜欢命令行界面?请随意试用boa_cli
!
Boa Crates
Boa目前发布并积极维护以下crate
boa_ast
- Boa的ECMAScript抽象语法树boa_cli
- Boa的命令行界面和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字符串实现。
请注意:Boa
和boa_unicode
crate已弃用。
Boa Engine 示例
要使用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
"#;
// 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(())
}
现在,剩下的只是执行以下命令:
恭喜!您已使用Boa
执行了您的第一个JavaScript
!
文档
有关Boa
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无法工作,则表示存在错误。请提出问题!
示例
命令行选项
Usage: boa [OPTIONS] [FILE]...
Arguments:
[FILE]... The JavaScript file(s) to be evaluated
Options:
--strict Run in strict mode
-a, --dump-ast [<FORMAT>] 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 [<FORMAT>] Generate instruction flowgraph. Default is Graphviz [possible values: graphviz, mermaid]
--flowgraph-direction <FORMAT> 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> 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
路线图
请参阅里程碑。
基准测试
请参阅基准测试。
性能分析
请参阅性能分析。
变更日志
请参阅CHANGELOG.md。
通信
如果您有任何问题,请随时通过Matrix联系我们。如果您有兴趣贡献,贡献讨论将在同一个Matrix Space上进行。我们还有一个Discord用于任何问题或问题。
许可证
依赖关系
~11–19MB
~255K SLoC