Thanks to visit codestin.com
Credit goes to app.codspeed.io

Avatar for the webpack user
webpack
webpack
BlogDocsChangelog

Performance History

Latest Results

docs: reword nextToken comment to satisfy cspell
perf/js-parser-tokenizer-lookups
18 hours ago
test(benchmark): stabilize memory benchmarks via deterministic I/O ordering (#21354) * test(benchmark): report peak heapUsed per task in memory mode CodSpeed memory mode counts allocations in a heap already warmed by the prime and warmup runs, so peak-RSS improvements (e.g. streaming sources) don't move the reported number. Sample the live-set high-water mark in the un-instrumented prime pass and log it per task, giving a faithful, machine-comparable memory signal in CI without touching the measured region. * test(benchmark): make memory measurements deterministic Run-to-run instability came from non-deterministic execution order that the V8 flags don't cover: the libuv threadpool (default 4) races fs completions and webpack's default parallelism builds modules concurrently, so identical source produced different Map/Set growth and allocation counts, amplified into large jumps by GC's page-granularity. Pin parallelism to 1 in the bench config builder for deterministic module-build order everywhere, and set UV_THREADPOOL_SIZE=1 on both CI jobs to remove the residual fs-completion race. * test(benchmark): drop parallelism=1, rely on single libuv thread parallelism=1 serialized all module processing (parse/codegen), making builds very slow and hiding concurrency-driven regressions. Determinism only needs the fs-completion race gone: pin UV_THREADPOOL_SIZE=1 in process (before the pool initializes) so completions fire in submission order, while webpack keeps building modules concurrently.
main
18 hours ago
feat: built-in build progress (infrastructureLogging.progress) and ProgressPlugin enhancements (#21352) * feat(ProgressPlugin): add estimatedTime, phaseTimings and progress bar width Add three opt-in ProgressPlugin options built on top of the existing progressBar bar: - estimatedTime: show smoothed ETA remaining during the build. - phaseTimings: print a per-phase duration breakdown at completion. - progressBar.width: configurable bar width (default 25). All default to false/unchanged, so existing output is preserved. * feat(ProgressPlugin): add progressBar "auto" (TTY-gated) with futureDefaults opt-in `progressBar: "auto"` renders the bar only for interactive terminals (resolved from infrastructureLogging.appendOnly / stream.isTTY), so CI and piped output stay quiet. Under `experiments.futureDefaults` an unset progressBar now defaults to "auto" — the webpack@6 path — while an explicit `false` is still respected. * perf(ProgressPlugin): build the progress bar renderer once per handler Profiling showed createReportBar (and its closure) was rebuilt on every progress step in bar mode. Lazily create it once and reuse it, dropping the per-step closure allocation and getColors lookup off the hot path. * feat(core): auto-enable interactive progress under futureDefaults Like Vite/Rollup/Parcel, progress is now gated on the terminal rather than an explicit flag: when experiments.futureDefaults is on and output is an interactive TTY (not appendOnly, not silenced), core applies ProgressPlugin with progressBar "auto". CI/piped builds stay silent, an explicit user ProgressPlugin is never overridden, and a MultiCompiler gets a single aggregated bar. webpack@5 without futureDefaults is unchanged. * feat(core): add infrastructureLogging.progress option Move the progress on/off knob onto the existing infrastructureLogging option as `progress: boolean | "auto"`, aligning with how other bundlers gate progress on the terminal. `"auto"` shows the bar only in interactive TTYs; `true` forces it on (unless logging is silenced); `false` disables it. The default is `false` in webpack@5 and `"auto"` under experiments.futureDefaults. Core reads this option to auto-apply the progress reporter, superseding third-party progress plugins such as WebpackBar. * perf(ProgressPlugin): cache the rendered bar between steps The bar string only changes when its integer fill width does, so memoize it and hoist the color function out of the render closure. Re-profiling showed the bar renderer was rebuilding on every progress event; it now drops out of the hot path entirely. * fix(core): make infrastructureLogging.progress opt-in (default false) Auto-enabling progress under experiments.futureDefaults applied ProgressPlugin to every futureDefaults build, which retains per-compilation state and writes `ProgressPlugin|counts` to the persistent cache — invalidating the pack and regressing watch-rebuild memory (caught by ConfigCacheTestCases and CodSpeed). Default `infrastructureLogging.progress` to false everywhere; it is now purely opt-in (`true` or `"auto"`). Core still auto-applies the reporter when the option is set. webpack@6 on-by-default is deferred until ProgressPlugin's cache write is made side-effect-free. * test: update CLI args snapshot for infrastructureLogging.progress The new schema option generates an `--infrastructure-logging-progress` CLI flag. * feat(core): default infrastructureLogging.progress to "auto" under futureDefaults Remove ProgressPlugin's persistent counts cache so auto-applying the reporter under experiments.futureDefaults no longer writes ProgressPlugin|counts to the pack and invalidates it. Keep the in-memory count carry-over that estimates progress across watch rebuilds. * fix: keep futureDefaults progress bar out of config test output; canonicalize schema ConfigTestCases forces stderr.isTTY, which enabled the new futureDefaults "auto" progress bar and leaked it into the captured build output; disable default progress in that harness. Reorder the progress/progressBar anyOf branches so the enum branch precedes boolean (format-schemas canonical order) and mirror that in the generated declarations. * test: update CLI flags snapshot for reordered progress anyOf * test: remove watchCases for the removed ProgressPlugin counts cache The loader-import-module-progress and loader-load-module-progress cases asserted the persisted `ProgressPlugin|counts` value, which no longer exists after dropping the pack-invalidating counts cache. * chore: regenerate schema validators and types for progress option Run yarn fix:special to regenerate the precompiled schema validators and types.d.ts for the reordered progress/progressBar anyOf and the new TimingOptions type. * test: type createCoreCompiler plugins as Configuration["plugins"] Fixes a lint:types-test TS2769 error: passing an unknown[] plugins array to webpack() didn't match the plugin type. * refactor: unify default ProgressPlugin application for single and multi compiler
main
18 hours ago

Latest Branches

Codestin Search App
-15%
perf: faster JavaScript parsing via keyword/scope lookups and an owned tokenizer loop#21358
18 hours ago
3d6b627
perf/js-parser-tokenizer-lookups
Codestin Search App
-30%
Codestin Search App
-22%
feat: built-in build progress (infrastructureLogging.progress) and ProgressPlugin enhancements#21352
1 day ago
95052b2
claude/webpack-pr-20298-review-3uej2u
© 2026 CodSpeed Technology
Home Terms Privacy Docs