Conversation
Deploying rspack with
|
| Latest commit: |
4601c82
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7d2f679f.rspack-v2.pages.dev |
| Branch Preview URL: | https://codex-url-async-block-assets.rspack-v2.pages.dev |
📦 Binary Size-limit
❌ Size increased by 16.00KB from 68.85MB to 68.86MB (⬆️0.02%) |
Rsdoctor Bundle Diff AnalysisFound 5 projects in monorepo, 0 projects with changes. 📊 Quick Summary
Generated by Rsdoctor GitHub Action |
Merging this PR will degrade performance by 0.4%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ❌ | rust@create_chunk_assets |
1.1 ms | 1.2 ms | -3.2% |
| ⚡ | rust@create_module_hashes |
7.6 ms | 7.4 ms | +2.48% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing codex/url-async-block-assets (4601c82) with main (22f1dd8)
Footnotes
-
47 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Motivation
Support referencing bundled JavaScript and CSS modules through
new URL()without patching cached modules or their dependency blocks after building the module graph.The dependency structure must remain valid when an unchanged issuer resolves to a different target during a rebuild. For example,
new URL('./target', import.meta.url)can initially resolve totarget.js, then resolve totarget.txtafter the JavaScript file is removed. Reusing the issuer must not leave the URL pointing to a stale JavaScript entry.Changes
dependency: 'url'rules.Usage
Use the resulting URLs to load a script or stylesheet separately:
Creating these URLs does not execute the script or apply the stylesheet. Without the explicit rules, URL targets retain their asset behavior.
Regression coverage
async-block-assets: multiple entries sharing an asset, splitChunks enabled/disabled, async chunks enabled/disabled, resource/inline/source assets, custom public paths, and ordinary dynamic imports.async-entry-module-types: JS/CSS output selection, CSS imports, CSS export types, and asset fallback when rules contain onlytest.async-entry-rebuild: cached rebuilds across cache and incremental configurations.async-entry-target-type-change: the previously identified regression, extended to JS → asset → JS → asset. It verifies that the incremental issuer builds only once, the block remains stable, asset ownership is restored, and updated asset contents are emitted.Draft scope
Empty async entries/chunks are intentionally retained in this iteration. Their removal is a follow-up; this draft implements the asset migration without adding module graph mutation hooks.
Validation
cargo clippy -p rspack_core -p rspack_plugin_javascript -p rspack_plugin_css --all-targets -- --deny warningsby OpenAI Codex