[package] name = "boa_engine" keywords = ["javascript", "js", "compiler", "lexer", "parser"] categories = ["parser-implementations", "compilers"] readme = "../README.md" description.workspace = true version.workspace = true edition.workspace = true authors.workspace = true license.workspace = true repository.workspace = true rust-version.workspace = true [features] profiler = ["boa_profiler/profiler"] deser = ["boa_interner/serde", "boa_ast/serde"] intl = [ "icu_normalizer/serde", "icu_normalizer/std", "dep:boa_icu_provider", "dep:icu_locid_transform", "dep:icu_locid", "dep:icu_datetime", "dep:icu_plurals", "dep:icu_provider", "dep:icu_calendar", "dep:icu_collator", "dep:icu_casemap", "dep:icu_list", "dep:icu_segmenter", "dep:writeable", "dep:sys-locale", "dep:yoke", "dep:zerofrom", "dep:fixed_decimal", ] fuzz = ["boa_ast/arbitrary", "boa_interner/arbitrary"] # Enable Boa's VM instruction flowgraph generator. flowgraph = [] # Enable Boa's VM instruction tracing. trace = ["js"] # Enable Boa's additional ECMAScript features for web browsers. annex-b = ["boa_parser/annex-b"] # Stage 3 proposals temporal = ["dep:icu_calendar"] # Enable experimental features, like Stage 3 proposals. experimental = ["temporal"] # Enable binding to JS APIs for system related utilities. js = ["dep:web-time"] [dependencies] boa_interner.workspace = true boa_gc = { workspace = true, features = [ "thin-vec", "icu" ] } boa_profiler.workspace = true boa_macros.workspace = true boa_ast.workspace = true boa_parser.workspace = true boa_temporal = { workspace = true } serde = { workspace = true, features = ["derive", "rc"] } serde_json.workspace = true rand = "0.8.5" num-traits.workspace = true regress.workspace = true rustc-hash = { workspace = true, features = ["std"] } num-bigint = { workspace = true, features = ["serde"] } num-integer = "0.1.45" bitflags.workspace = true indexmap = { workspace = true, features = ["std"] } ryu-js = "1.0.0" chrono = { workspace = true, default-features = false, features = ["clock", "std"] } fast-float.workspace = true once_cell = { workspace = true, features = ["std"] } tap = "1.0.1" sptr = "0.3.2" static_assertions.workspace = true thiserror = "1.0.55" dashmap = "5.5.3" num_enum = "0.7.1" pollster.workspace = true thin-vec.workspace = true itertools = { version = "0.12.0", default-features = false } icu_normalizer.workspace = true paste = "1.0" portable-atomic = "1.6.0" bytemuck = { version = "1.14.0", features = ["derive"] } arrayvec = "0.7.4" intrusive-collections = "0.9.6" cfg-if = "1.0.0" # intl deps boa_icu_provider = {workspace = true, features = ["std"], optional = true } sys-locale = { version = "0.3.1", optional = true } icu_provider = { workspace = true, optional = true } icu_locid = { workspace = true, features = ["serde"], optional = true } icu_locid_transform = { workspace = true, default-features = false, features = ["std", "serde"], optional = true } icu_datetime = { workspace = true, default-features = false, features = ["serde", "experimental"], optional = true } icu_calendar = { workspace = true, default-features = false, optional = true } icu_collator = { workspace = true, default-features = false, features = ["serde"], optional = true } icu_plurals = { workspace = true, default-features = false, features = ["serde", "experimental"], optional = true } icu_list = { workspace = true, default-features = false, features = ["serde"], optional = true } icu_casemap = { workspace = true, default-features = false, features = ["serde"], optional = true} icu_segmenter = { workspace = true, default-features = false, features = ["auto", "serde"], optional = true } writeable = { workspace = true, optional = true } yoke = { workspace = true, optional = true } zerofrom = { workspace = true, optional = true } fixed_decimal = { workspace = true, features = ["ryu", "experimental"], optional = true} hashbrown.workspace = true [target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies] web-time = { version = "0.2.4", optional = true } [dev-dependencies] criterion = "0.5.1" float-cmp = "0.9.0" indoc.workspace = true textwrap.workspace = true futures-lite = "2.1.0" [target.x86_64-unknown-linux-gnu.dev-dependencies] jemallocator = "0.5.4" [lib] crate-type = ["cdylib", "lib"] name = "boa_engine" bench = false [[bench]] name = "full" harness = false [lints] workspace = true