Skip to content

Commit c9a870f

Browse files
committed
chore: add RSPACK_DEBUG_MEMORY env to support debug allocator stats
1 parent 4506d64 commit c9a870f

File tree

7 files changed

+151
-114
lines changed

7 files changed

+151
-114
lines changed

Cargo.lock

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 99 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -16,103 +16,105 @@ version = "0.6.1"
1616
[workspace.metadata.cargo-shear]
1717
ignored = ["swc", "rspack"]
1818
[workspace.dependencies]
19-
aho-corasick = { version = "1.1.3", default-features = false }
20-
anyhow = { version = "1.0.95", default-features = false, features = ["backtrace", "std"] }
21-
anymap = { package = "anymap3", version = "1.0.1", default-features = false, features = ["std"] }
22-
async-recursion = { version = "1.1.1", default-features = false }
23-
async-trait = { version = "0.1.84", default-features = false }
24-
atomic_refcell = { version = "0.1.13", default-features = false }
25-
base64 = { version = "0.22.1", default-features = false }
26-
base64-simd = { version = "0.8.0", default-features = false, features = ["alloc"] }
27-
bitflags = { version = "2.9.1", default-features = false }
28-
browserslist-rs = { version = "0.19.0", default-features = false }
29-
bytes = { version = "1.10.0", default-features = false }
30-
camino = { version = "1.2.1", default-features = false }
31-
cargo_toml = { version = "0.21.0", default-features = false }
32-
cfg-if = { version = "1.0.1", default-features = false }
33-
clap = { version = "4.5.41", default-features = false }
34-
color-backtrace = { version = "0.7.0", default-features = false, features = ["use-backtrace-crate"] }
35-
concat-string = { version = "1.0.1", default-features = false }
36-
cow-utils = { version = "0.1.3", default-features = false }
37-
criterion2 = { default-features = false, version = "2.0.0", features = ["async_tokio"] }
38-
css-module-lexer = { version = "0.0.15", default-features = false }
39-
dashmap = { version = "6.1.0", default-features = false }
40-
derive_more = { version = "2.0.1", default-features = false }
41-
dunce = { version = "1.0.5", default-features = false }
42-
dyn-clone = { version = "1.0.17", default-features = false }
43-
either = { version = "1.15.0", default-features = false }
44-
enum-tag = { version = "0.3.0", default-features = false }
45-
fast-glob = { version = "0.4.4", default-features = false }
46-
futures = { version = "0.3.31", default-features = false, features = ["std"] }
47-
glob = { version = "0.3.2", default-features = false }
48-
hashlink = { version = "0.10.0", default-features = false }
49-
heck = { version = "0.5.0", default-features = false }
50-
hex = { version = "0.4.3", default-features = false, features = ["std"] }
51-
indexmap = { version = "2.7.0", default-features = false }
52-
indicatif = { version = "0.17.9", default-features = false }
53-
indoc = { version = "2.0.5", default-features = false }
54-
insta = { version = "1.42.0", default-features = false }
55-
itertools = { version = "0.14.0", default-features = false, features = ["use_std"] }
56-
itoa = { version = "1.0.14", default-features = false }
57-
json = { version = "0.12.4", default-features = false }
58-
jsonc-parser = { version = "0.26.2", default-features = false, features = ["serde"] }
59-
lightningcss = { version = "1.0.0-alpha.68", default-features = false, features = ["serde"] }
60-
linked_hash_set = { version = "0.1.5", default-features = false }
61-
md4 = { version = "0.10.2", default-features = false }
62-
memchr = { version = "2.7.5", default-features = false }
63-
micromegas-perfetto = { version = "0.9.0", default-features = false }
64-
miette = { version = "7.5.0", default-features = false }
65-
mimalloc = { version = "0.2.4", package = "mimalloc-rspack", default-features = false }
66-
mime_guess = { version = "2.0.5", default-features = false, features = ["rev-mappings"] }
67-
notify = { version = "8.2.0", default-features = false }
68-
num-bigint = { version = "0.4.6", default-features = false }
69-
once_cell = { version = "1.20.2", default-features = false }
70-
oneshot = { version = "0.1.8", default-features = false, features = ["std", "async"] }
71-
owo-colors = { version = "4.0.0", default-features = false }
72-
parcel_sourcemap = { version = "2.1.1", default-features = false }
73-
paste = { version = "1.0.15", default-features = false }
74-
path-clean = { version = "1.0.1", default-features = false }
75-
pathdiff = { version = "0.2.3", default-features = false }
76-
pretty_assertions = { version = "1.4.1", default-features = false, features = ["std"] }
77-
proc-macro2 = { version = "1.0.92", default-features = false }
78-
prost = { version = "0.13", default-features = false }
79-
quote = { version = "1.0.38", default-features = false }
80-
rayon = { version = "1.10.0", default-features = false }
81-
regex = { version = "1.12.2", default-features = false }
82-
regex-syntax = { version = "0.8.5", default-features = false, features = ["std"] }
83-
regress = { version = "0.10.4", default-features = false, features = ["pattern"] }
84-
ropey = { version = "1.6.1", default-features = false }
85-
rspack_resolver = { features = ["package_json_raw_json_api", "yarn_pnp"], version = "0.6.4", default-features = false }
86-
rspack_sources = { version = "0.4.14", default-features = false }
87-
rustc-hash = { version = "2.1.0", default-features = false }
88-
ryu-js = { version = "1.0.2", default-features = false }
89-
scopeguard = { version = "1.2.0", default-features = false }
90-
serde = { version = "1.0.225", default-features = false, features = ["derive"] }
91-
serde_json = { version = "1.0.145", default-features = false, features = ["std"] }
92-
sftrace-setup = { version = "0.1.0", default-features = false }
93-
sha2 = { version = "0.10.8", default-features = false }
94-
signal-hook = { version = "0.3.18", default-features = false, features = ["iterator"] }
95-
simd-json = { version = "0.14.3", default-features = false }
96-
smol_str = { version = "0.3.0", default-features = false }
97-
stacker = { version = "0.1.17", default-features = false }
98-
sugar_path = { version = "1.2.0", default-features = false, features = ["cached_current_dir"] }
99-
syn = { version = "2.0.95", default-features = false }
100-
termcolor = { version = "1.4.1", default-features = false }
101-
textwrap = { version = "0.16.1", default-features = false }
102-
thread_local = { version = "1.1.9", default-features = false }
103-
tokio = { version = "1.48.0", default-features = false, features = ["rt", "rt-multi-thread"] }
104-
toml = { version = "0.8.19", default-features = false, features = ["parse", "display"] }
105-
tracing = { version = "0.1.41", default-features = false, features = ["max_level_trace", "release_max_level_trace"] }
106-
tracing-subscriber = { version = "0.3.19", default-features = false, features = ["fmt", "registry"] }
107-
trybuild = { version = "1.0.101", default-features = false, features = ["diff"] }
108-
unicase = { version = "2.8.1", default-features = false }
109-
unicode-width = { version = "0.2.0", default-features = false }
110-
url = { version = "2.5.4", default-features = false }
111-
urlencoding = { version = "2.1.3", default-features = false }
112-
ustr = { package = "ustr-fxhash", version = "1.0.1", default-features = false }
113-
wasmparser = { version = "0.222.0", default-features = false }
114-
winnow = { version = "0.7.12", default-features = false, features = ["std", "simd"] }
115-
xxhash-rust = { version = "0.8.14", default-features = false }
19+
aho-corasick = { version = "1.1.3", default-features = false }
20+
anyhow = { version = "1.0.95", default-features = false, features = ["backtrace", "std"] }
21+
anymap = { package = "anymap3", version = "1.0.1", default-features = false, features = ["std"] }
22+
async-recursion = { version = "1.1.1", default-features = false }
23+
async-trait = { version = "0.1.84", default-features = false }
24+
atomic_refcell = { version = "0.1.13", default-features = false }
25+
base64 = { version = "0.22.1", default-features = false }
26+
base64-simd = { version = "0.8.0", default-features = false, features = ["alloc"] }
27+
bitflags = { version = "2.9.1", default-features = false }
28+
browserslist-rs = { version = "0.19.0", default-features = false }
29+
bytes = { version = "1.10.0", default-features = false }
30+
camino = { version = "1.2.1", default-features = false }
31+
cargo_toml = { version = "0.21.0", default-features = false }
32+
cfg-if = { version = "1.0.1", default-features = false }
33+
clap = { version = "4.5.41", default-features = false }
34+
color-backtrace = { version = "0.7.0", default-features = false, features = ["use-backtrace-crate"] }
35+
concat-string = { version = "1.0.1", default-features = false }
36+
cow-utils = { version = "0.1.3", default-features = false }
37+
criterion2 = { default-features = false, version = "2.0.0", features = ["async_tokio"] }
38+
css-module-lexer = { version = "0.0.15", default-features = false }
39+
dashmap = { version = "6.1.0", default-features = false }
40+
derive_more = { version = "2.0.1", default-features = false }
41+
dunce = { version = "1.0.5", default-features = false }
42+
dyn-clone = { version = "1.0.17", default-features = false }
43+
either = { version = "1.15.0", default-features = false }
44+
enum-tag = { version = "0.3.0", default-features = false }
45+
fast-glob = { version = "0.4.4", default-features = false }
46+
futures = { version = "0.3.31", default-features = false, features = ["std"] }
47+
glob = { version = "0.3.2", default-features = false }
48+
hashlink = { version = "0.10.0", default-features = false }
49+
heck = { version = "0.5.0", default-features = false }
50+
hex = { version = "0.4.3", default-features = false, features = ["std"] }
51+
indexmap = { version = "2.7.0", default-features = false }
52+
indicatif = { version = "0.17.9", default-features = false }
53+
indoc = { version = "2.0.5", default-features = false }
54+
insta = { version = "1.42.0", default-features = false }
55+
itertools = { version = "0.14.0", default-features = false, features = ["use_std"] }
56+
itoa = { version = "1.0.14", default-features = false }
57+
json = { version = "0.12.4", default-features = false }
58+
jsonc-parser = { version = "0.26.2", default-features = false, features = ["serde"] }
59+
lightningcss = { version = "1.0.0-alpha.68", default-features = false, features = ["serde"] }
60+
linked_hash_set = { version = "0.1.5", default-features = false }
61+
md4 = { version = "0.10.2", default-features = false }
62+
memchr = { version = "2.7.5", default-features = false }
63+
micromegas-perfetto = { version = "0.9.0", default-features = false }
64+
miette = { version = "7.5.0", default-features = false }
65+
mimalloc = { version = "0.2.4", package = "mimalloc-rspack", default-features = false }
66+
rspack-libmimalloc-sys = { version = "0.2.4", features = ["extended"] }
67+
68+
mime_guess = { version = "2.0.5", default-features = false, features = ["rev-mappings"] }
69+
notify = { version = "8.2.0", default-features = false }
70+
num-bigint = { version = "0.4.6", default-features = false }
71+
once_cell = { version = "1.20.2", default-features = false }
72+
oneshot = { version = "0.1.8", default-features = false, features = ["std", "async"] }
73+
owo-colors = { version = "4.0.0", default-features = false }
74+
parcel_sourcemap = { version = "2.1.1", default-features = false }
75+
paste = { version = "1.0.15", default-features = false }
76+
path-clean = { version = "1.0.1", default-features = false }
77+
pathdiff = { version = "0.2.3", default-features = false }
78+
pretty_assertions = { version = "1.4.1", default-features = false, features = ["std"] }
79+
proc-macro2 = { version = "1.0.92", default-features = false }
80+
prost = { version = "0.13", default-features = false }
81+
quote = { version = "1.0.38", default-features = false }
82+
rayon = { version = "1.10.0", default-features = false }
83+
regex = { version = "1.12.2", default-features = false }
84+
regex-syntax = { version = "0.8.5", default-features = false, features = ["std"] }
85+
regress = { version = "0.10.4", default-features = false, features = ["pattern"] }
86+
ropey = { version = "1.6.1", default-features = false }
87+
rspack_resolver = { features = ["package_json_raw_json_api", "yarn_pnp"], version = "0.6.4", default-features = false }
88+
rspack_sources = { version = "0.4.14", default-features = false }
89+
rustc-hash = { version = "2.1.0", default-features = false }
90+
ryu-js = { version = "1.0.2", default-features = false }
91+
scopeguard = { version = "1.2.0", default-features = false }
92+
serde = { version = "1.0.225", default-features = false, features = ["derive"] }
93+
serde_json = { version = "1.0.145", default-features = false, features = ["std"] }
94+
sftrace-setup = { version = "0.1.0", default-features = false }
95+
sha2 = { version = "0.10.8", default-features = false }
96+
signal-hook = { version = "0.3.18", default-features = false, features = ["iterator"] }
97+
simd-json = { version = "0.14.3", default-features = false }
98+
smol_str = { version = "0.3.0", default-features = false }
99+
stacker = { version = "0.1.17", default-features = false }
100+
sugar_path = { version = "1.2.0", default-features = false, features = ["cached_current_dir"] }
101+
syn = { version = "2.0.95", default-features = false }
102+
termcolor = { version = "1.4.1", default-features = false }
103+
textwrap = { version = "0.16.1", default-features = false }
104+
thread_local = { version = "1.1.9", default-features = false }
105+
tokio = { version = "1.48.0", default-features = false, features = ["rt", "rt-multi-thread"] }
106+
toml = { version = "0.8.19", default-features = false, features = ["parse", "display"] }
107+
tracing = { version = "0.1.41", default-features = false, features = ["max_level_trace", "release_max_level_trace"] }
108+
tracing-subscriber = { version = "0.3.19", default-features = false, features = ["fmt", "registry"] }
109+
trybuild = { version = "1.0.101", default-features = false, features = ["diff"] }
110+
unicase = { version = "2.8.1", default-features = false }
111+
unicode-width = { version = "0.2.0", default-features = false }
112+
url = { version = "2.5.4", default-features = false }
113+
urlencoding = { version = "2.1.3", default-features = false }
114+
ustr = { package = "ustr-fxhash", version = "1.0.1", default-features = false }
115+
wasmparser = { version = "0.222.0", default-features = false }
116+
winnow = { version = "0.7.12", default-features = false, features = ["std", "simd"] }
117+
xxhash-rust = { version = "0.8.14", default-features = false }
116118

117119
allocative = { package = "rspack-allocative", version = "0.3.5", default-features = false, features = [
118120
"camino",

crates/rspack_allocator/Cargo.toml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ sftrace-setup = { workspace = true, optional = true }
1212

1313
[target.'cfg(target_os = "linux")'.dependencies]
1414
# Turned on `local_dynamic_tls` to avoid issue: https://github.com/microsoft/mimalloc/issues/147
15-
mimalloc = { workspace = true, features = ["local_dynamic_tls"] }
15+
mimalloc = { workspace = true, features = ["local_dynamic_tls"] }
16+
rspack-libmimalloc-sys = { workspace = true, features = ["extended"] }
1617

1718
[target.'cfg(target_os = "macos")'.dependencies]
18-
mimalloc = { workspace = true, features = ["v3"] }
19+
mimalloc = { workspace = true, features = ["v3"] }
20+
rspack-libmimalloc-sys = { workspace = true, features = ["extended"] }
1921

2022
[target.'cfg(all(not(target_os = "linux"), not(target_os = "macos"), not(target_family = "wasm")))'.dependencies]
21-
mimalloc = { workspace = true }
23+
mimalloc = { workspace = true }
24+
rspack-libmimalloc-sys = { workspace = true, features = ["extended"] }

crates/rspack_allocator/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,11 @@ static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
88
#[cfg(feature = "sftrace-setup")]
99
static GLOBAL: sftrace_setup::SftraceAllocator<mimalloc::MiMalloc> =
1010
sftrace_setup::SftraceAllocator(mimalloc::MiMalloc);
11+
12+
pub fn print_memory_stats() {
13+
#[cfg(not(any(miri, target_family = "wasm")))]
14+
#[cfg(not(feature = "sftrace-setup"))]
15+
unsafe {
16+
rspack_libmimalloc_sys::mi_stats_print(std::ptr::null_mut());
17+
}
18+
}

0 commit comments

Comments
 (0)