[package]
edition = "2024"
rust-version = "1.91.0"
name = "boa_engine"
version = "0.22.0"
authors = ["boa-dev"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Boa is a Javascript lexer, parser and compiler written in Rust. Currently, it has support for some of the language."
readme = "README.md"
keywords = [
"javascript",
"js",
"compiler",
"lexer",
"parser",
]
categories = [
"parser-implementations",
"compilers",
]
license = "Unlicense OR MIT"
repository = "https://github.com/boa-dev/boa"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
[features]
annex-b = [
"boa_ast/annex-b",
"boa_parser/annex-b",
]
default = [
"float16",
"xsum",
"temporal",
]
deser = [
"boa_interner/serde",
"boa_ast/serde",
]
either = [
"dep:either",
"boa_gc/either",
]
embedded_lz4 = [
"boa_macros/embedded_lz4",
"lz4_flex",
]
experimental = []
float16 = ["dep:float16"]
flowgraph = []
fuzz = [
"boa_ast/arbitrary",
"boa_interner/arbitrary",
]
intl = [
"boa_gc/icu",
"icu_normalizer/serde",
"dep:icu_locale",
"dep:icu_datetime",
"dep:icu_time",
"dep:icu_plurals",
"dep:icu_provider",
"dep:icu_calendar",
"dep:icu_collator",
"dep:icu_casemap",
"dep:icu_list",
"dep:icu_segmenter",
"dep:icu_decimal",
"dep:writeable",
"dep:sys-locale",
"dep:yoke",
"dep:zerofrom",
"dep:fixed_decimal",
"dep:tinystr",
"dep:timezone_provider",
"timezone_provider/experimental_tzif",
]
intl_bundled = [
"intl",
"dep:boa_icu_provider",
]
js = [
"dep:web-time",
"dep:getrandom",
"getrandom/wasm_js",
"time/wasm-bindgen",
]
jsvalue-enum = []
native-backtrace = []
system-time-zone = ["dep:iana-time-zone"]
temporal = [
"dep:icu_calendar",
"dep:temporal_rs",
"dep:timezone_provider",
"timezone_provider/experimental_tzif",
]
trace = ["js"]
xsum = ["dep:xsum"]
[lib]
name = "boa_engine"
crate-type = [
"cdylib",
"lib",
]
path = "src/lib.rs"
bench = false
[[test]]
name = "gcd"
path = "tests/gcd.rs"
[[test]]
name = "imports"
path = "tests/imports.rs"
[[test]]
name = "macros"
path = "tests/macros.rs"
[[test]]
name = "module"
path = "tests/module.rs"
[[bench]]
name = "full"
path = "benches/full.rs"
harness = false
[dependencies.aligned-vec]
version = "0.6.4"
[dependencies.arrayvec]
version = "0.7.8"
[dependencies.async-channel]
version = "2.5.0"
[dependencies.bitflags]
version = "2.13.1"
[dependencies.boa_ast]
version = "~0.22.0"
[dependencies.boa_gc]
version = "~0.22.0"
features = [
"thin-vec",
"boa_string",
"arrayvec",
]
[dependencies.boa_icu_provider]
version = "~0.22.0"
features = ["std"]
optional = true
[dependencies.boa_interner]
version = "~0.22.0"
[dependencies.boa_macros]
version = "~0.22.0"
[dependencies.boa_parser]
version = "~0.22.0"
[dependencies.boa_string]
version = "~0.22.0"
[dependencies.bytemuck]
version = "1.25.2"
features = ["derive"]
default-features = false
[dependencies.cfg-if]
version = "1.0.4"
[dependencies.cow-utils]
version = "0.1.3"
[dependencies.dashmap]
version = "6.2.1"
[dependencies.dynify]
version = "0.1.2"
features = ["macros"]
[dependencies.either]
version = "1.18.0"
optional = true
[dependencies.fast-float2]
version = "0.2.4"
[dependencies.fixed_decimal]
version = "0.7.2"
features = ["ryu"]
optional = true
[dependencies.float16]
version = "0.1"
optional = true
[dependencies.futures-concurrency]
version = "7.7.1"
[dependencies.futures-lite]
version = "2.6.1"
[dependencies.hashbrown]
version = "0.17.1"
[dependencies.iana-time-zone]
version = "0.1.65"
optional = true
[dependencies.icu_calendar]
version = "~2.3.0"
optional = true
default-features = false
[dependencies.icu_casemap]
version = "~2.3.0"
features = ["serde"]
optional = true
default-features = false
[dependencies.icu_collator]
version = "~2.3.1"
features = ["serde"]
optional = true
default-features = false
[dependencies.icu_datetime]
version = "~2.3.0"
features = ["serde"]
optional = true
default-features = false
[dependencies.icu_decimal]
version = "~2.3.0"
features = [
"serde",
"unstable",
]
optional = true
default-features = false
[dependencies.icu_list]
version = "~2.3.0"
features = [
"serde",
"alloc",
]
optional = true
default-features = false
[dependencies.icu_locale]
version = "~2.3.0"
features = ["serde"]
optional = true
default-features = false
[dependencies.icu_normalizer]
version = "~2.3.0"
features = [
"compiled_data",
"utf16_iter",
]
default-features = false
[dependencies.icu_plurals]
version = "~2.3.0"
features = [
"serde",
"unstable",
]
optional = true
default-features = false
[dependencies.icu_provider]
version = "2.3.1"
optional = true
default-features = false
[dependencies.icu_segmenter]
version = "~2.3.0"
features = [
"auto",
"serde",
]
optional = true
default-features = false
[dependencies.icu_time]
version = "~2.3.0"
features = ["serde"]
optional = true
default-features = false
[dependencies.indexmap]
version = "2.14.0"
features = ["std"]
default-features = false
[dependencies.intrusive-collections]
version = "0.10.3"
[dependencies.itertools]
version = "0.15.0"
features = ["use_alloc"]
default-features = false
[dependencies.lz4_flex]
version = "0.14.0"
optional = true
[dependencies.num-bigint]
version = "0.5.1"
features = ["serde"]
[dependencies.num-integer]
version = "0.1.47"
[dependencies.num-traits]
version = "0.2.19"
[dependencies.num_enum]
version = "0.7.6"
[dependencies.oneshot]
version = "0.2.1"
features = ["async"]
[dependencies.pastey]
version = "0.2.3"
[dependencies.portable-atomic]
version = "1.15.0"
[dependencies.rand]
version = "0.10.2"
[dependencies.regress]
version = "0.12.0"
features = ["utf16"]
[dependencies.rustc-hash]
version = "2.1.3"
features = ["std"]
default-features = false
[dependencies.ryu-js]
version = "1.0.3"
[dependencies.serde]
version = "1.0.229"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0.151"
[dependencies.small_btree]
version = "~0.1.0"
[dependencies.static_assertions]
version = "1.1.0"
[dependencies.sys-locale]
version = "0.3.2"
optional = true
[dependencies.tag_ptr]
version = "~0.1.0"
[dependencies.tap]
version = "1.0.1"
[dependencies.temporal_rs]
version = "0.2.6"
features = ["float64_representable_durations"]
optional = true
default-features = false
[dependencies.thin-vec]
version = "0.2.19"
[dependencies.thiserror]
version = "2.0.20"
default-features = false
[dependencies.time]
version = "0.3.55"
features = [
"local-offset",
"large-dates",
"parsing",
"formatting",
"macros",
]
default-features = false
[dependencies.timezone_provider]
version = "0.2.6"
optional = true
[dependencies.tinystr]
version = "0.8.4"
optional = true
[dependencies.writeable]
version = "0.6.4"
optional = true
[dependencies.xsum]
version = "0.1.6"
optional = true
[dependencies.yoke]
version = "0.8.3"
optional = true
[dependencies.zerofrom]
version = "0.1.8"
optional = true
[dev-dependencies.criterion]
version = "0.8.2"
[dev-dependencies.float-cmp]
version = "0.10.0"
[dev-dependencies.husky-rs]
version = "0.4.0"
[dev-dependencies.indoc]
version = "2.0.7"
[dev-dependencies.test-case]
version = "3.3.1"
[dev-dependencies.textwrap]
version = "0.16.2"
[target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies.getrandom]
version = "0.4.3"
features = ["wasm_js"]
optional = true
default-features = false
[target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies.web-time]
version = "1.1.0"
optional = true
[target.x86_64-unknown-linux-gnu.dev-dependencies.jemallocator]
version = "0.5.4"
[lints.clippy]
dbg_macro = "warn"
print_stderr = "warn"
print_stdout = "warn"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.complexity]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.perf]
level = "warn"
priority = -1
[lints.clippy.style]
level = "warn"
priority = -1
[lints.clippy.suspicious]
level = "warn"
priority = -1
[lints.rust]
macro_use_extern_crate = "warn"
meta_variable_misuse = "warn"
missing_abi = "warn"
missing_copy_implementations = "warn"
missing_debug_implementations = "warn"
missing_docs = "warn"
non_ascii_idents = "warn"
noop_method_call = "warn"
single_use_lifetimes = "warn"
trivial_casts = "warn"
trivial_numeric_casts = "warn"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused_crate_dependencies = "warn"
unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_qualifications = "warn"
variant_size_differences = "warn"
warnings = "warn"
[lints.rust.future_incompatible]
level = "warn"
priority = -1
[lints.rust.let_underscore]
level = "warn"
priority = -1
[lints.rust.nonstandard_style]
level = "warn"
priority = -1
[lints.rust.rust_2018_compatibility]
level = "warn"
priority = -1
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1
[lints.rust.rust_2021_compatibility]
level = "warn"
priority = -1
[lints.rust.unused]
level = "warn"
priority = -1
[lints.rustdoc]
bare_urls = "warn"
broken_intra_doc_links = "warn"
invalid_codeblock_attributes = "warn"
invalid_rust_codeblocks = "warn"
missing_crate_level_docs = "warn"
private_doc_tests = "warn"
private_intra_doc_links = "warn"