[workspace] resolver = "2" members = [ # CORE "core/*", # FFI "ffi/*", # TESTS "tests/*", # TOOLS "tools/*", # OTHERS "examples", "cli", # TOOLS "tools/*", ] exclude = [ "tests/fuzz", # Does weird things on Windows tests "tests/src", # Just a hack to have fuzz inside tests ] [workspace.package] edition = "2021" version = "0.20.0" rust-version = "1.82.0" authors = ["boa-dev"] repository = "https://github.com/boa-dev/boa" license = "Unlicense OR MIT" description = "Boa is a Javascript lexer, parser and compiler written in Rust. Currently, it has support for some of the language." [workspace.dependencies] # Repo Crates boa_ast = { version = "~0.20.0", path = "core/ast" } boa_engine = { version = "~0.20.0", path = "core/engine" } boa_gc = { version = "~0.20.0", path = "core/gc" } boa_icu_provider = { version = "~0.20.0", path = "core/icu_provider" } boa_interner = { version = "~0.20.0", path = "core/interner" } boa_interop = { version = "~0.20.0", path = "core/interop" } boa_macros = { version = "~0.20.0", path = "core/macros" } boa_parser = { version = "~0.20.0", path = "core/parser" } boa_profiler = { version = "~0.20.0", path = "core/profiler" } boa_runtime = { version = "~0.20.0", path = "core/runtime" } boa_string = { version = "~0.20.0", path = "core/string" } # Shared deps arbitrary = "1" bitflags = "2.5.0" clap = "4.5.21" colored = "2.1.0" fast-float2 = "0.2.3" hashbrown = "0.15.2" indexmap = { version = "2.7.0", default-features = false } indoc = "2.0.5" jemallocator = "0.5.4" num-bigint = "0.4.6" num-traits = "0.2.19" once_cell = { version = "1.20.2", default-features = false } phf = { version = "0.11.2", default-features = false } pollster = "0.4.0" regex = "1.11.1" regress = { version = "0.10.1", features = ["utf16"] } rustc-hash = { version = "2.1.0", default-features = false } serde_json = "1.0.133" serde = "1.0.215" static_assertions = "1.1.0" textwrap = "0.16.0" thin-vec = "0.2.13" time = { version = "0.3.37", default-features = false, features = ["local-offset", "large-dates", "wasm-bindgen", "parsing", "formatting", "macros"] } tinystr = "0.7.5" log = "0.4.22" simple_logger = "5.0.0" cargo_metadata = "0.19.0" trybuild = "1.0.101" rayon = "1.10.0" toml = "0.8.19" color-eyre = "0.6.3" comfy-table = "7.1.3" serde_repr = "0.1.19" bus = "2.4.1" wasm-bindgen = { version = "0.2.97", default-features = false } getrandom = { version = "0.2.15", default-features = false } console_error_panic_hook = "0.1.7" wasm-bindgen-test = "0.3.47" smol = "2.0.2" futures-util = "0.3.31" isahc = "1.7.2" rustyline = { version = "15.0.0", default-features = false } dhat = "0.3.3" quote = "1.0.37" syn = { version = "2.0.90", default-features = false } proc-macro2 = "1.0" synstructure = "0.13" measureme = "12.0.0" sptr = "0.3.2" paste = "1.0" rand = "0.8.5" num-integer = "0.1.46" ryu-js = "1.0.1" tap = "1.0.1" thiserror = { version = "2.0.3", default-features = false } dashmap = "6.1.0" num_enum = "0.7.3" itertools = { version = "0.13.0", default-features = false } portable-atomic = "1.10.0" bytemuck = { version = "1.19.0", default-features = false } arrayvec = "0.7.6" intrusive-collections = "0.9.7" cfg-if = "1.0.0" either = "1.13.0" sys-locale = "0.3.2" temporal_rs = "0.0.4" web-time = "1.1.0" criterion = "0.5.1" float-cmp = "0.10.0" futures-lite = "2.5.0" test-case = "3.3.1" winapi = { version = "0.3.9", default-features = false } url = "2.5.4" # ICU4X icu_provider = { version = "~1.5.0", default-features = false } icu_locid = { version = "~1.5.0", default-features = false } icu_locid_transform = { version = "~1.5.0", default-features = false } icu_datetime = { version = "~1.5.1", default-features = false } icu_calendar = { version = "~1.5.1", default-features = false } icu_collator = { version = "~1.5.0", default-features = false } icu_plurals = { version = "~1.5.0", default-features = false } icu_list = { version = "~1.5.0", default-features = false } icu_casemap = { version = "~1.5.0", default-features = false } icu_segmenter = { version = "~1.5.0", default-features = false } icu_datagen = { version = "~1.5.0", default-features = false } icu_provider_adapters = { version = "~1.5.0", default-features = false } icu_provider_blob = { version = "~1.5.0", default-features = false } icu_properties = { version = "~1.5.0", default-features = true } icu_normalizer = { version = "~1.5.0", default-features = false } icu_decimal = { version = "~1.5.0", default-features = false } writeable = "~0.5.5" yoke = "~0.7.5" zerofrom = "~0.1.5" fixed_decimal = "~0.5.6" [workspace.metadata.workspaces] allow_branch = "main" # The ci profile, designed to reduce size of target directory [profile.ci] inherits = "dev" debug = false incremental = false # The release profile, used for `cargo build --release`. [profile.release] # Enables "fat" LTO, for faster release builds lto = "fat" # Makes sure that all code is compiled together, for LTO codegen-units = 1 # Strips debug information and symbols from the binary, reducing its size strip = "symbols" [profile.release-dbg] inherits = "release" debug = true strip = "none" # The test profile, used for `cargo test`. [profile.test] # Enables thin local LTO and some optimizations. opt-level = 1 # The benchmark profile, used for `cargo bench`. [profile.bench] # Enables "fat" LTO, for faster benchmark builds lto = "fat" # Makes sure that all code is compiled together, for LTO codegen-units = 1 [workspace.lints.rust] # rustc lint groups https://doc.rust-lang.org/rustc/lints/groups.html warnings = "warn" future_incompatible = { level = "warn", priority = -1 } let_underscore = { level = "warn", priority = -1 } nonstandard_style = { level = "warn", priority = -1 } rust_2018_compatibility = { level = "warn", priority = -1 } rust_2018_idioms = { level = "warn", priority = -1 } rust_2021_compatibility = { level = "warn", priority = -1 } unused = { level = "warn", priority = -1 } # rustc allowed-by-default lints https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html missing_docs = "warn" macro_use_extern_crate = "warn" meta_variable_misuse = "warn" missing_abi = "warn" missing_copy_implementations = "warn" missing_debug_implementations = "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" [workspace.lints.rustdoc] # rustdoc lints https://doc.rust-lang.org/rustdoc/lints.html broken_intra_doc_links = "warn" private_intra_doc_links = "warn" missing_crate_level_docs = "warn" private_doc_tests = "warn" invalid_codeblock_attributes = "warn" invalid_rust_codeblocks = "warn" bare_urls = "warn" [workspace.lints.clippy] # clippy allowed by default dbg_macro = "warn" print_stdout = "warn" print_stderr = "warn" # clippy categories https://doc.rust-lang.org/clippy/ all = { level = "warn", priority = -1 } correctness = { level = "warn", priority = -1 } suspicious = { level = "warn", priority = -1 } style = { level = "warn", priority = -1 } complexity = { level = "warn", priority = -1 } perf = { level = "warn", priority = -1 } pedantic = { level = "warn", priority = -1 }