mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
## [0.24.0] - 2024-08-08 -75f2207traverse: [**BREAKING**] Replace `find_scope` with `ancestor_scopes` returning iterator (#4693) (overlookmotel) -506709ftraverse: [**BREAKING**] Replace `find_ancestor` with `ancestors` returning iterator (#4692) (overlookmotel) ### Features -23b0040allocator: Introduce `CloneIn` trait. (#4726) (rzvxa) -51c1ca0ast: Derive `CloneIn` for AST types, using `generate_derive`. (#4732) (rzvxa) -e12bd1east: Allow conversion from TSAccessibility into &'static str (#4711) (DonIsaac) -fd2d9daast: Improve `AstKind::debug_name` (#4553) (DonIsaac) -b3b7028ast: Implement missing Clone, Hash, and Display traits for literals (#4552) (DonIsaac) -54047e0ast: `GetSpanMut` trait (#4609) (overlookmotel) -eae401cast, ast_macros: Apply stable repr to all `#[ast]` enums (#4373) (rzvxa) -ec0b4cbast_codegen: Add `derive_clone_in` generator. (#4731) (rzvxa) -2e91ad6ast_codegen: Support for `generate_derive` marker. (#4728) (rzvxa) -82e2f6bast_codegen: Process AST-related `syntax` types. (#4694) (rzvxa) -0c52c0dast_codegen: Add alignment and size data to the schema. (#4615) (rzvxa) -07607d3ast_codegen, span: Process `Span` through ast_codegen (#4703) (overlookmotel) -125c5fdast_codegen, span: Process `SourceType` through ast_codegen. (#4696) (rzvxa) -eaddc8flinter: Add fixer for eslint/func_names (#4714) (DonIsaac) -229a0e9minifier: Implement dot define for member expressions (#3959) (camc314) -33f1312semantic: Impl GetSpan for AstNode (#4717) (DonIsaac) -e42ac3asourcemap: Add `ConcatSourceMapBuilder::from_sourcemaps` (#4639) (overlookmotel) -2e63618span: Implement `CloneIn` for the AST-related items. (#4729) (rzvxa) -6a36616syntax: Derive `CloneIn` for the AST-related items. (#4730) (rzvxa) ### Bug Fixes -4a56954codegen: Print raw if value is number is Infinity (#4676) (Boshen) -94d3c31minifier: Avoid removing function declaration from `KeepVar` (#4722) (Boshen) -bf43148minifier: Do not `remove_syntax` in dead_code_elimination (Boshen) -bf48c7fminifier: Fix `keep_var` keeping vars from arrow functions (#4680) (Boshen) -9be29afminifier: Temporarily fix shadowed `undefined` variable (#4678) (Boshen) -e8b662aminifier: Various fixes to pass minifier conformance (#4667) (Boshen) -01d85denapi/transform: Update napi files (Boshen) -f290191oxc_ast_macros: Fix `syn` lacking features to build (Boshen) -a40a217parser: Parse `assert` keyword in `TSImportAttributes` (#4610) (Boshen) -03c643asemantic: Incorrect `scope_id` for catch parameter symbols (#4659) (Dunqing) -6c612d1semantic/jsdoc: Handle whitespace absence (#4642) (leaysgur) -0d2c41asemantic/jsdoc: Panic on parsing `type_name_comment`. (#4632) (rzvxa) -9f8f299syntax: Prevent creating invalid u32 IDs (#4675) (overlookmotel) -4797eaatransformer: Strip TS statements from for in/of statement bodies (#4686) (overlookmotel) -5327acdtransformer/react: The `require` IdentifierReference does not have a `reference_id` (#4658) (Dunqing) -3987665transformer/typescript: Incorrect enum-related `symbol_id`/`reference_id` (#4660) (Dunqing) -4efd54btransformer/typescript: Incorrect `SymbolFlags` for jsx imports (#4549) (Dunqing) ### Performance -8dd76e4codegen: Reduce size of `LineOffsetTable` (#4643) (overlookmotel) -b8e6753codegen: `u32` indexes in `LineOffsetTable` for source maps (#4641) (overlookmotel) -6ff200dlinter: Change react rules and utils to use `Cow` and `CompactStr` instead of `String` (#4603) (DonIsaac) -0f5e982minifier: Only visit arrow expression after dropping `console.log` (#4677) (Boshen) -ff43dffsourcemap: Speed up VLQ encoding (#4633) (overlookmotel) -a330773sourcemap: Reduce string copying in `ConcatSourceMapBuilder` (#4638) (overlookmotel) -372316bsourcemap: `ConcatSourceMapBuilder` extend `source_contents` in separate loop (#4634) (overlookmotel) -c7f1d48sourcemap: Keep local copy of previous token in VLQ encode (#4596) (overlookmotel) -590d795sourcemap: Shorten main loop encoding VLQ (#4586) (overlookmotel) ### Documentation -c69ada4ast: Improve AST node documentation (#4051) (Rintaro Itokawa) ### Refactor -579b797ast: Use type identifier instead of `CloneIn::Cloned` GAT. (#4738) (rzvxa) -475266dast: Use correct lifetimes for name-related methods (#4712) (DonIsaac) -83b6ca9ast: Add explicit enum discriminants. (#4689) (rzvxa) -ba70001ast: Put `assert_layouts.rs` behind `debug_assertions` (#4621) (rzvxa) -3f53b6fast: Make AST structs `repr(C)`. (#4614) (rzvxa) -452e0eeast: Remove defunct `visit_as` + `visit_args` attrs from `#[ast]` macro (#4599) (overlookmotel) -2218340ast, ast_codegen: Use `generate_derive` for implementing `GetSpan` and `GetSpanMut` traits. (#4735) (rzvxa) -fbfd852minifier: Add `NodeUtil` trait for accessing symbols on ast nodes (#4734) (Boshen) -e0832f8minifier: Use `oxc_traverse` for AST passes (#4725) (Boshen) -17602dbminifier: Move tests and files around (Boshen) -3289477minifier: Clean up tests (#4724) (Boshen) -e78cba6minifier: Ast passes infrastructure (#4625) (Boshen) -d25dea7parser: Use `ast_builder` in more places. (#4612) (rzvxa) -09d9822semantic: Simplify setting scope flags (#4674) (overlookmotel) -6e453dbsemantic: Simplify inherit scope flags from parent scope (#4664) (Dunqing) -e1429e5span: Reduce #[cfg_attr] boilerplate in type defs (#4702) (overlookmotel) -e24fb5bsyntax: Add explicit enum discriminants to AST related types. (#4691) (rzvxa) -3f3cb62syntax, span: Reduce #[cfg_attr] boilerplate in type defs (#4698) (overlookmotel) -54f9897traverse: Simpler code for entering/exiting unconditional scopes (#4685) (overlookmotel) -83546d3traverse: Enter node before entering scope (#4684) (overlookmotel)-9b51e04Overhaul napi transformer package (#4592) (DonIsaac) ### Testing -49d5196ast: Fix `assert_layouts.rs` offset tests on 32bit platforms. (#4620) (rzvxa) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
223 lines
9 KiB
TOML
223 lines
9 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = ["apps/*", "crates/*", "napi/*", "tasks/*", "wasm/*"]
|
|
exclude = ["tasks/lint_rules"]
|
|
|
|
[workspace.package]
|
|
authors = ["Boshen <boshenc@gmail.com>", "Oxc contributors"]
|
|
categories = ["compilers", "development-tools", "web-programming"]
|
|
description = "A collection of JavaScript tools written in Rust."
|
|
edition = "2021"
|
|
homepage = "https://oxc.rs"
|
|
keywords = ["JavaScript", "TypeScript", "linter", "minifier", "parser"]
|
|
license = "MIT"
|
|
repository = "https://github.com/oxc-project/oxc"
|
|
rust-version = "1.74"
|
|
|
|
# <https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html>
|
|
[workspace.lints.rust]
|
|
absolute_paths_not_starting_with_crate = "warn"
|
|
non_ascii_idents = "warn"
|
|
unit-bindings = "warn"
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage)', 'cfg(coverage_nightly)'] }
|
|
|
|
[workspace.lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
empty_docs = { level = "allow", priority = 1 } # from `Tsify`
|
|
# restriction
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
unimplemented = "warn"
|
|
print_stdout = "warn" # must be opt-in
|
|
print_stderr = "warn" # must be opt-in
|
|
# I like the explicitness of this rule as it removes confusion around `clone`.
|
|
# This increases readability, avoids `clone` mindlessly and heap allocating on accident.
|
|
clone_on_ref_ptr = "warn"
|
|
# These two are mutually exclusive, I like `mod.rs` files for better fuzzy searches on module entries.
|
|
self_named_module_files = "warn" # "-Wclippy::mod_module_files"
|
|
empty_drop = "warn"
|
|
empty_structs_with_brackets = "warn"
|
|
exit = "warn"
|
|
filetype_is_file = "warn"
|
|
get_unwrap = "warn"
|
|
impl_trait_in_params = "warn"
|
|
rc_buffer = "warn"
|
|
rc_mutex = "warn"
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
unnecessary_safety_comment = "warn"
|
|
undocumented_unsafe_blocks = "warn"
|
|
infinite_loop = "warn"
|
|
# I want to write the best Rust code so pedantic is enabled.
|
|
# We should only disable rules globally if they are either false positives, chaotic, or does not make sense.
|
|
pedantic = { level = "warn", priority = -1 }
|
|
# Allowed rules
|
|
# pedantic
|
|
# This rule is too pedantic, I don't want to force this because naming things are hard.
|
|
module_name_repetitions = "allow"
|
|
# All triggers are mostly ignored in our codebase, so this is ignored globally.
|
|
struct_excessive_bools = "allow"
|
|
too_many_lines = "allow"
|
|
# #[must_use] is creating too much noise for this codebase, it does not add much value except nagging
|
|
# the programmer to add a #[must_use] after clippy has been run.
|
|
# Having #[must_use] every where also hinders readability.
|
|
must_use_candidate = "allow"
|
|
# used_underscore_binding= "allow"
|
|
doc_markdown = "allow"
|
|
# nursery
|
|
# `const` functions do not make sense for our project because this is not a `const` library.
|
|
# This rule also confuses new comers and forces them to add `const` blindlessly without any reason.
|
|
missing_const_for_fn = "allow"
|
|
# cargo
|
|
cargo = { level = "warn", priority = -1 }
|
|
multiple_crate_versions = "allow"
|
|
cargo_common_metadata = "allow" # FIXME
|
|
doc_lazy_continuation = "allow" # FIXME
|
|
|
|
[workspace.dependencies]
|
|
# publish = true
|
|
oxc = { version = "0.24.0", path = "crates/oxc" }
|
|
oxc_allocator = { version = "0.24.0", path = "crates/oxc_allocator" }
|
|
oxc_ast = { version = "0.24.0", path = "crates/oxc_ast" }
|
|
oxc_codegen = { version = "0.24.0", path = "crates/oxc_codegen" }
|
|
oxc_diagnostics = { version = "0.24.0", path = "crates/oxc_diagnostics" }
|
|
oxc_index = { version = "0.24.0", path = "crates/oxc_index" }
|
|
oxc_minifier = { version = "0.24.0", path = "crates/oxc_minifier" }
|
|
oxc_mangler = { version = "0.24.0", path = "crates/oxc_mangler" }
|
|
oxc_parser = { version = "0.24.0", path = "crates/oxc_parser" }
|
|
oxc_semantic = { version = "0.24.0", path = "crates/oxc_semantic" }
|
|
oxc_span = { version = "0.24.0", path = "crates/oxc_span" }
|
|
oxc_syntax = { version = "0.24.0", path = "crates/oxc_syntax" }
|
|
oxc_transformer = { version = "0.24.0", path = "crates/oxc_transformer" }
|
|
oxc_sourcemap = { version = "0.24.0", path = "crates/oxc_sourcemap" }
|
|
oxc_ast_macros = { version = "0.24.0", path = "crates/oxc_ast_macros" }
|
|
oxc_traverse = { version = "0.24.0", path = "crates/oxc_traverse" }
|
|
oxc_module_lexer = { version = "0.24.0", path = "crates/oxc_module_lexer" }
|
|
oxc_cfg = { version = "0.24.0", path = "crates/oxc_cfg" }
|
|
oxc_isolated_declarations = { version = "0.24.0", path = "crates/oxc_isolated_declarations" }
|
|
oxc_transform_napi = { version = "0.24.0", path = "napi/transform" }
|
|
|
|
# publish = false
|
|
oxc_macros = { path = "crates/oxc_macros" }
|
|
oxc_linter = { path = "crates/oxc_linter" }
|
|
oxc_prettier = { path = "crates/oxc_prettier" }
|
|
oxc_tasks_common = { path = "tasks/common" }
|
|
|
|
napi = "3.0.0-alpha"
|
|
napi-derive = "3.0.0-alpha"
|
|
napi-build = "2.1.3"
|
|
|
|
allocator-api2 = "0.2.18"
|
|
assert-unchecked = "0.1.2"
|
|
base64 = "0.22.1"
|
|
base64-simd = "0.8"
|
|
bitflags = "2.5.0"
|
|
bpaf = "0.9.12"
|
|
bumpalo = "3.16.0"
|
|
cfg-if = "1.0.0"
|
|
compact_str = "0.8.0"
|
|
console = "0.15.8"
|
|
convert_case = "0.6.0"
|
|
criterion2 = { version = "0.11.0", default-features = false }
|
|
daachorse = { version = "1.0.0" }
|
|
dashmap = "6.0.0"
|
|
encoding_rs = "0.8.34"
|
|
encoding_rs_io = "0.1.7"
|
|
env_logger = { version = "0.11.3", default-features = false }
|
|
flate2 = "1.0.30"
|
|
futures = "0.3.30"
|
|
glob = "0.3.1"
|
|
globset = "0.4.14"
|
|
handlebars = "6.0.0"
|
|
humansize = "2.1.3"
|
|
ignore = "0.4.22"
|
|
indexmap = "2.2.6"
|
|
insta = "1.39.0"
|
|
itertools = "0.13.0"
|
|
jemallocator = "0.5.4"
|
|
json-strip-comments = "1.0.2"
|
|
language-tags = "0.3.2"
|
|
lazy_static = "1.4.0"
|
|
log = "0.4.21"
|
|
memchr = "2.7.2"
|
|
memoffset = "0.9.1"
|
|
miette = { version = "7.2.0", features = ["fancy-no-syscall"] }
|
|
mimalloc = "0.1.42"
|
|
mime_guess = "2.0.4"
|
|
nonmax = "0.5.5"
|
|
num-bigint = "0.4.5"
|
|
num-traits = "0.2.19"
|
|
once_cell = "1.19.0"
|
|
ouroboros = "0.18.4"
|
|
owo-colors = "4.0.0"
|
|
oxc_resolver = "1.8.2"
|
|
oxc-browserslist = "1.0.1"
|
|
petgraph = "0.6.5"
|
|
phf = "0.11.2"
|
|
pico-args = "0.5.0"
|
|
prettyplease = "0.2.20"
|
|
proc-macro2 = "1.0.85"
|
|
project-root = "0.2.2"
|
|
quote = "1.0.36"
|
|
rayon = "1.10.0"
|
|
regex = "1.10.5"
|
|
ropey = "1.6.1"
|
|
rust-lapper = "1.1.0"
|
|
rustc-hash = "2.*"
|
|
ryu-js = "1.0.1"
|
|
saphyr = "0.0.1"
|
|
schemars = "0.8.21"
|
|
seq-macro = "0.3.5"
|
|
serde = "1.0.203"
|
|
serde_json = "1.0.117"
|
|
serde-wasm-bindgen = "0.6.5"
|
|
similar = "2.5.0"
|
|
static_assertions = "1.1.0"
|
|
syn = { version = "2.0.58", default-features = false }
|
|
tempfile = "3.10.1"
|
|
textwrap = "0.16.1"
|
|
tokio = "1.38.0"
|
|
tower-lsp = "0.20.0"
|
|
tracing-subscriber = "0.3.18"
|
|
tsify = "0.4.5"
|
|
unicode-id-start = "1" # Relaxed version so the user can decide which unicode version to use.
|
|
unicode-width = "0.1.13"
|
|
ureq = { version = "2.9.6", default-features = false }
|
|
url = "2.5.2"
|
|
walkdir = "2.5.0"
|
|
wasm-bindgen = "0.2.92"
|
|
|
|
[workspace.metadata.cargo-shear]
|
|
ignored = ["napi", "oxc_transform_napi", "prettyplease"]
|
|
|
|
[profile.dev]
|
|
# Disabling debug info speeds up local and CI builds,
|
|
# and we don't rely on it for debugging that much.
|
|
debug = false
|
|
|
|
[profile.dev.package]
|
|
# Compile macros with some optimizations to make consuming crates build faster
|
|
oxc_macros.opt-level = 1
|
|
oxc_ast_macros.opt-level = 1
|
|
# Compile insta and its dependencies in release mode for faster snapshot tests
|
|
# See: https://insta.rs/docs/quickstart/#optional-faster-runs
|
|
insta.opt-level = 3
|
|
similar.opt-level = 3
|
|
|
|
[profile.release.package.oxc_wasm]
|
|
opt-level = 'z'
|
|
|
|
[profile.release]
|
|
# Configurations explicitly listed here for clarity.
|
|
# Using the best options for performance.
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
strip = "symbols" # set to `false` for debug information
|
|
debug = false # set to `true` for debug information
|
|
panic = "abort" # Let it crash and force ourselves to write safe Rust.
|
|
|
|
# Profile for `cargo coverage`
|
|
[profile.coverage]
|
|
inherits = "release"
|
|
lto = "thin" # Faster compile time with thin lto
|
|
debug-assertions = true # Make sure `debug_assert!`s pass
|