[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"] either = ["dep:either"] # Enables the `Intl` builtin object and bundles a default ICU4X data provider. # Prefer this over `intl` if you just want to enable `Intl` without dealing with the # generation of ICU4X data. intl_bundled = ["intl", "dep:boa_icu_provider"] # Enables Boa's `Intl` builtin implementation. # Prefer this over `intl_bundled` if you want to reduce the size of the final binary # by providing a smaller ICU4X data provider. intl = [ "boa_gc/icu", "icu_normalizer/serde", "icu_normalizer/std", "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:icu_decimal", "dep:writeable", "dep:sys-locale", "dep:yoke", "dep:zerofrom", "dep:fixed_decimal", "dep:tinystr", ] 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"] # Enable Boa's Temporal proposal implementation temporal = ["dep:icu_calendar", "dep:temporal_rs"] # 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", "boa_string"] } boa_profiler.workspace = true boa_macros.workspace = true boa_ast.workspace = true boa_parser.workspace = true boa_string.workspace = true serde = { workspace = true, features = ["derive", "rc"] } serde_json.workspace = true rand.workspace = true num-traits.workspace = true regress.workspace = true rustc-hash = { workspace = true, features = ["std"] } num-bigint = { workspace = true, features = ["serde"] } num-integer.workspace = true bitflags.workspace = true indexmap = { workspace = true, features = ["std"] } ryu-js.workspace = true fast-float.workspace = true once_cell = { workspace = true, features = ["std"] } tap.workspace = true sptr.workspace = true thiserror.workspace = true dashmap.workspace = true num_enum.workspace = true pollster.workspace = true thin-vec.workspace = true itertools = { workspace = true, default-features = false } icu_normalizer = { workspace = true, features = ["compiled_data"] } portable-atomic.workspace = true bytemuck = { workspace = true, features = ["derive"] } arrayvec.workspace = true intrusive-collections.workspace = true cfg-if.workspace = true time.workspace = true hashbrown.workspace = true either = { workspace = true, optional = true } static_assertions.workspace = true # intl deps boa_icu_provider = { workspace = true, features = ["std"], optional = true } sys-locale = { workspace = true, 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 } icu_decimal = { workspace = true, default-features = false, features = ["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 } tinystr = { workspace = true, optional = true } # temporal deps temporal_rs = { workspace = true, optional = true } [target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies] web-time = { workspace = true, optional = true } [dev-dependencies] criterion.workspace = true float-cmp.workspace = true indoc.workspace = true textwrap.workspace = true futures-lite.workspace = true test-case.workspace = true [target.x86_64-unknown-linux-gnu.dev-dependencies] jemallocator.workspace = true [lib] crate-type = ["cdylib", "lib"] name = "boa_engine" bench = false [[bench]] name = "full" harness = false [lints] workspace = true [package.metadata.docs.rs] all-features = true