[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"] # 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_profiler.workspace = true boa_macros.workspace = true boa_ast.workspace = true boa_parser.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.46" bitflags.workspace = true indexmap = { workspace = true, features = ["std"] } ryu-js = "1.0.1" 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.58" dashmap = "5.5.3" num_enum = "0.7.2" pollster.workspace = true thin-vec.workspace = true itertools = { version = "0.12.1", default-features = false } icu_normalizer = { workspace = true, features = ["compiled_data"] } paste = "1.0" portable-atomic = "1.6.0" bytemuck = { version = "1.15.0", features = ["derive"] } arrayvec = "0.7.4" intrusive-collections = "0.9.6" cfg-if = "1.0.0" time.workspace = true hashbrown.workspace = true # 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 } 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 = { version = "0.0.2", optional = true } [target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies] web-time = { version = "1.1.0", optional = true } [dev-dependencies] criterion = "0.5.1" float-cmp = "0.9.0" indoc.workspace = true textwrap.workspace = true futures-lite = "2.3.0" test-case = "3.3.1" [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 [package.metadata.docs.rs] all-features = true