Thanks to visit codestin.com
Credit goes to app.codspeed.io
webpack
webpack
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
docs: reword nextToken comment to satisfy cspell
perf/js-parser-tokenizer-lookups
18 hours ago
test: cover tokenizer fast paths and fix nextToken typedef Add unit tests for the number fast path, automatic semicolon insertion, reserved-word/binding checks and non-ASCII identifier tokenization so every changed line in the parser is exercised. Declare nextToken on the ParserInternals typedef so the owned nextToken loop type-checks. Document the per-commit coverage expectation in AGENTS.md.
perf/js-parser-tokenizer-lookups
18 hours ago
style: satisfy eslint (Number.parseFloat, includes, no-lonely-if, padding) Fixes the lint job: use Number.parseFloat and String.includes, collapse the gated name checks in checkUnreserved into single conditions (no-lonely-if), and add the required blank line. Behavior is unchanged (differential suites and three.js AST digest still match acorn).
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
perf: back reservedWordsStrictBind with a Set instead of a regexp checkLValSimple runs reservedWordsStrictBind.test(name) for every binding and assignment target in strict mode (~126k times on three.js). acorn only ever calls .test() on it, so swap the regexp for a Set-backed { test } stand-in in the constructor — no checkLValSimple copy needed. Strict-mode binding errors (eval/arguments/reserved words) are unchanged.
perf/js-parser-tokenizer-lookups
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
feat(html): parse web app manifest icon URLs from <link rel=manifest> Add a `webmanifest` module type (enabled with `experiments.html`) that parses a Web App Manifest referenced by `<link rel="manifest">`, emits its `icons`/`screenshots` `src` URLs as assets, and emits the manifest itself with those URLs rewritten. Reuses acorn to recover exact JSON offsets and the existing HtmlSourceDependency to rewrite them. Teaches AssetGenerator.getTypes to treat a webmanifest referrer like css/html so icons get a static URL.
test/html-source-coverage
19 hours ago
feat(html): parse web app manifest icon URLs from <link rel=manifest> Add a `webmanifest` module type (enabled with `experiments.html`) that parses a Web App Manifest referenced by `<link rel="manifest">`, emits its `icons`/`screenshots` `src` URLs as assets, and emits the manifest itself with those URLs rewritten. Reuses acorn to recover exact JSON offsets and the existing HtmlSourceDependency to rewrite them. Teaches AssetGenerator.getTypes to treat a webmanifest referrer like css/html so icons get a static URL.
test/html-source-coverage
19 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%
feat(html): parse web app manifest icons; support twitter:player:stream + legacy SVG hrefs
#21355
1 day ago
44459a8
test/html-source-coverage
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