diff --git a/apps/10000/rolldown.config.mjs b/apps/10000/rolldown.config.mjs index 0858e4d6..dee07e68 100644 --- a/apps/10000/rolldown.config.mjs +++ b/apps/10000/rolldown.config.mjs @@ -1,8 +1,32 @@ import { defineConfig } from "rolldown"; -import { minify } from "rollup-plugin-esbuild"; +// import { minify } from "rollup-plugin-esbuild"; const sourceMap = !!process.env.SOURCE_MAP; const m = !!process.env.MINIFY; +const transformPluginCount = process.env.PLUGIN_COUNT || 0; +let transformCssPlugin = Array.from({ length: transformPluginCount }, (_, i) => { + let index = i + 1; + return { + name: `transform-css-${index}`, + transform: { + filter: { + id: { + include: new RegExp(`foo${index}.css$`), + } + }, + handler(code, id) { + if (id.endsWith(`foo${index}.css`)) { + return { + code: `.index-${index} { + color: red; +}`, + map: null, + }; + } + } + } + } +}) export default defineConfig({ input: { main: "./src/index.jsx", @@ -11,13 +35,7 @@ export default defineConfig({ "process.env.NODE_ENV": JSON.stringify("production"), }, plugins: [ - m - ? minify({ - minify: true, - legalComments: "none", - target: "es2022", - }) - : null, + ...transformCssPlugin, ].filter(Boolean), profilerNames: !m, output: { diff --git a/apps/10000/src/index.css b/apps/10000/src/foo1.css similarity index 100% rename from apps/10000/src/index.css rename to apps/10000/src/foo1.css diff --git a/apps/10000/src/foo10.css b/apps/10000/src/foo10.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo2.css b/apps/10000/src/foo2.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo3.css b/apps/10000/src/foo3.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo4.css b/apps/10000/src/foo4.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo5.css b/apps/10000/src/foo5.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo6.css b/apps/10000/src/foo6.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo7.css b/apps/10000/src/foo7.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo8.css b/apps/10000/src/foo8.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/foo9.css b/apps/10000/src/foo9.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/10000/src/index.jsx b/apps/10000/src/index.jsx index 0b95f9a8..53a15ba8 100644 --- a/apps/10000/src/index.jsx +++ b/apps/10000/src/index.jsx @@ -1,7 +1,16 @@ import React from "react"; import ReactDom from "react-dom/client"; import App1 from "./f0"; -import './index.css' +import './foo1.css' +import './foo2.css' +import './foo3.css' +import './foo4.css' +import './foo5.css' +import './foo6.css' +import './foo7.css' +import './foo8.css' +import './foo9.css' +import './foo10.css' ReactDom.createRoot(document.getElementById("root")).render( diff --git a/package.json b/package.json index 53b47f1b..7614d58b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "lint-staged": "^15.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", - "rolldown": "0.15.1", + "rolldown": "nightly", "rolldown-vite": "0.3.2", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-swc3": "^0.12.1", diff --git a/plugin-bench.md b/plugin-bench.md new file mode 100644 index 00000000..2f9ea878 --- /dev/null +++ b/plugin-bench.md @@ -0,0 +1,220 @@ +Although the Rolldown core is written in Rust and utilizes modern CPU parallel computing capabilities to improve build speed, it still relies on the JavaScript runtime to provide the execution environment and (by the JavaScript engine) execute user-side JavaScript plugin code in order to maintain compatibility with JavaScript plugins as much as possible. Therefore, one of the common issues users may encounter is that as the number of JavaScript plugins increases, the build performance gradually deteriorates. + +# What? + +Here, we use a specific example, taking `apps/10000` as an example. + +```diff +diff --git a/apps/10000/rolldown.config.mjs b/apps/10000/rolldown.config.mjs +index 0858e4d6..822af995 100644 +--- a/apps/10000/rolldown.config.mjs ++++ b/apps/10000/rolldown.config.mjs +@@ -1,8 +1,25 @@ + import { defineConfig } from "rolldown"; +-import { minify } from "rollup-plugin-esbuild"; ++// import { minify } from "rollup-plugin-esbuild"; + const sourceMap = !!process.env.SOURCE_MAP; + const m = !!process.env.MINIFY; ++const transformPluginCount = process.env.PLUGIN_COUNT || 0; + ++let transformCssPlugin = Array.from({ length: transformPluginCount }, (_, i) => { ++ let index = i + 1; ++ return { ++ name: `transform-css-${index}`, ++ transform(code, id) { ++ if (id.endsWith(`foo${index}.css`)) { ++ return { ++ code: `.index-${index} { ++ color: red; ++}`, ++ map: null, ++ }; ++ } ++ } ++ } ++}) + export default defineConfig({ + input: { + main: "./src/index.jsx", +@@ -11,13 +28,7 @@ export default defineConfig({ + "process.env.NODE_ENV": JSON.stringify("production"), + }, + plugins: [ +- m +- ? minify({ +- minify: true, +- legalComments: "none", +- target: "es2022", +- }) +- : null, ++ ...transformCssPlugin, + ].filter(Boolean), + profilerNames: !m, + output: { +diff --git a/apps/10000/src/index.css b/apps/10000/src/index.css +deleted file mode 100644 +index e69de29b..00000000 +diff --git a/apps/10000/src/index.jsx b/apps/10000/src/index.jsx +index 0b95f9a8..53a15ba8 100644 +--- a/apps/10000/src/index.jsx ++++ b/apps/10000/src/index.jsx +@@ -1,7 +1,16 @@ + import React from "react"; + import ReactDom from "react-dom/client"; + import App1 from "./f0"; +-import './index.css' ++import './foo1.css' ++import './foo2.css' ++import './foo3.css' ++import './foo4.css' ++import './foo5.css' ++import './foo6.css' ++import './foo7.css' ++import './foo8.css' ++import './foo9.css' ++import './foo10.css' + + ReactDom.createRoot(document.getElementById("root")).render( + + +``` + +**Diff Explanation** + +1. To better reflect the impact of the number of JavaScript plugins on build time, the example uses `build + disable minify`. +2. Added ten empty CSS files named `foo1.css` to `foo10.css`. +3. Controlled the number of enabled plugins through `process.env.PLUGIN_COUNT`. The plugin content is similar to conventional community plugins, using filter to exclude non-matching files and generating corresponding dummy CSS files for matching files. + +## Benchmark Result + +```bash +Benchmark 1: PLUGIN_COUNT=0 node --run build:rolldown + Time (mean ± σ): 745.6 ms ± 11.8 ms [User: 2298.0 ms, System: 1161.3 ms] + Range (min … max): 732.1 ms … 753.6 ms 3 runs + +Benchmark 2: PLUGIN_COUNT=1 node --run build:rolldown + Time (mean ± σ): 862.6 ms ± 61.3 ms [User: 2714.1 ms, System: 1192.6 ms] + Range (min … max): 808.3 ms … 929.2 ms 3 runs + +Benchmark 3: PLUGIN_COUNT=2 node --run build:rolldown + Time (mean ± σ): 1.106 s ± 0.020 s [User: 3.287 s, System: 1.382 s] + Range (min … max): 1.091 s … 1.130 s 3 runs + +Benchmark 4: PLUGIN_COUNT=5 node --run build:rolldown + Time (mean ± σ): 1.848 s ± 0.022 s [User: 4.398 s, System: 1.728 s] + Range (min … max): 1.825 s … 1.869 s 3 runs + +Benchmark 5: PLUGIN_COUNT=10 node --run build:rolldown + Time (mean ± σ): 2.792 s ± 0.065 s [User: 6.013 s, System: 2.198 s] + Range (min … max): 2.722 s … 2.850 s 3 runs + +Summary + 'PLUGIN_COUNT=0 node --run build:rolldown' ran + 1.16 ± 0.08 times faster than 'PLUGIN_COUNT=1 node --run build:rolldown' + 1.48 ± 0.04 times faster than 'PLUGIN_COUNT=2 node --run build:rolldown' + 2.48 ± 0.05 times faster than 'PLUGIN_COUNT=5 node --run build:rolldown' + 3.74 ± 0.10 times faster than 'PLUGIN_COUNT=10 node --run build:rolldown' + +``` + +It can be seen that when the number of JavaScript plugins is ten, the build time is almost four times that of having no plugins at all. Before understanding the reasons, let's look at how to optimize this. + +# How? (the optimization) + +To address this issue, Rolldown supports passing additional fields `filter` when JavaScript plugin are passed as object. Below are the changes made to the plugin: + +```diff +diff --git a/apps/10000/rolldown.config.mjs b/apps/10000/rolldown.config.mjs +index 822af995..dee07e68 100644 +--- a/apps/10000/rolldown.config.mjs ++++ b/apps/10000/rolldown.config.mjs +@@ -8,14 +8,21 @@ let transformCssPlugin = Array.from({ length: transformPluginCount }, (_, i) => + let index = i + 1; + return { + name: `transform-css-${index}`, +- transform(code, id) { +- if (id.endsWith(`foo${index}.css`)) { +- return { +- code: `.index-${index} { ++ transform: { ++ filter: { ++ id: { ++ include: new RegExp(`foo${index}.css$`), ++ } ++ }, ++ handler(code, id) { ++ if (id.endsWith(`foo${index}.css`)) { ++ return { ++ code: `.index-${index} { + color: red; + }`, +- map: null, +- }; ++ map: null, ++ }; ++ } + } + } + } + +``` +## New Benchmark Result + +```bash +Benchmark 1: PLUGIN_COUNT=0 node --run build:rolldown + Time (mean ± σ): 739.1 ms ± 6.8 ms [User: 2312.5 ms, System: 1153.0 ms] + Range (min … max): 733.0 ms … 746.5 ms 3 runs + +Benchmark 2: PLUGIN_COUNT=1 node --run build:rolldown + Time (mean ± σ): 760.6 ms ± 18.3 ms [User: 2422.1 ms, System: 1107.4 ms] + Range (min … max): 739.7 ms … 773.6 ms 3 runs + +Benchmark 3: PLUGIN_COUNT=2 node --run build:rolldown + Time (mean ± σ): 731.2 ms ± 11.1 ms [User: 2461.3 ms, System: 1141.4 ms] + Range (min … max): 723.9 ms … 744.0 ms 3 runs + +Benchmark 4: PLUGIN_COUNT=5 node --run build:rolldown + Time (mean ± σ): 741.5 ms ± 9.3 ms [User: 2621.6 ms, System: 1111.3 ms] + Range (min … max): 734.0 ms … 751.9 ms 3 runs + +Benchmark 5: PLUGIN_COUNT=10 node --run build:rolldown + Time (mean ± σ): 747.3 ms ± 2.1 ms [User: 2900.9 ms, System: 1120.0 ms] + Range (min … max): 745.0 ms … 749.2 ms 3 runs + +Summary + 'PLUGIN_COUNT=2 node --run build:rolldown' ran + 1.01 ± 0.02 times faster than 'PLUGIN_COUNT=0 node --run build:rolldown' + 1.01 ± 0.02 times faster than 'PLUGIN_COUNT=5 node --run build:rolldown' + 1.02 ± 0.02 times faster than 'PLUGIN_COUNT=10 node --run build:rolldown' + 1.04 ± 0.03 times faster than 'PLUGIN_COUNT=1 node --run build:rolldown' +``` + +It can be seen that after adding `filter`, when there are fewer matching files for the JavaScript plugin itself, the number of JavaScript plugins has little observable impact on build performance. + +# Why? + +Native language-based bundlers typically use algorithms similar to solving the [producer-consumer problem](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem) to generate ModuleGraph and metadata for each module in parallel. +Here’s a simple example to illustrate the entire build process: + +**Dependency Graph** +![IMAGE (3)](https://github.com/user-attachments/assets/e49c29f1-1d2f-4d21-a277-311bcc33eda7) + +## Rolldown without JavaScript Plugin +![IMAGE (2) 1](https://github.com/user-attachments/assets/ad071cf9-6a34-4a7d-a669-02efec342d45) + + +> [!note] +> +> The illustrations only represent an approximate algorithm of Rolldown and do not depict specific implementations. +> For better visualization, some time slices in the illustrations can be enlarged; for instance, in actual programs, `fetch_module` time is at the nanosecond level. + +## Rolldown with JavaScript Plugin +![IMAGE (4)](https://github.com/user-attachments/assets/7e95fb60-d345-4d23-a35e-c7d062fa2b70) + + +Although parts of Rolldown core can handle multiple tasks in parallel, JavaScript plugins execute in a single thread. Thus, each task's hook call phase is almost executed serially. As the number of JavaScript plugins increases, leading to increased execution time in that diamond-shaped section and significantly reduced overall CPU utilization. + +After using `filter`, Rolldown core can determine whether a plugin matches module metadata before invoking `FFI` calls. If it does not match, it skips it altogether, greatly reducing execution time in that diamond-shaped section and improving the CPU utilization. + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2df121c..d3058428 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,8 +76,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) rolldown: - specifier: 0.15.1 - version: 0.15.1(@babel/runtime@7.25.6) + specifier: nightly + version: 1.0.0-beta.1-commit.f1c6bdf(@babel/runtime@7.25.6) rolldown-vite: specifier: 0.3.2 version: 0.3.2(@types/node@22.5.5)(terser@5.37.0) @@ -713,8 +713,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@0.15.1': - resolution: {integrity: sha512-eHszEW3Tpf2MNCOB3Qq+ypXBJl5MY+QNmb32AfUkcjGLtS6A84CkzjLLRBCIAJJ07WR0dD2EbOEjFXyp9JpdxA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-l6dv9EqXOlXfGFP7DRG3QCxM9h2xZs1bW/Bt7FNme1TbrKEFGPfZUEsZCDXVAALiQq8XbOHUBT/6N2Kw02xzfg==} cpu: [arm64] os: [darwin] @@ -723,8 +723,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@0.15.1': - resolution: {integrity: sha512-0IczkPBKzftwezo19wR/W7b2uXrPIgU5sDpic2DGndqZwcqtO0LBg1SvRoTUFzs0sSqIK/e2fo0VUzOe1wShLQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-iQ12ZPZwBgTyBaLE8CkrAaF5/X1a7Zu4qkb6kWk0Jeq/5BTfsEvx0KZk83Gtoibmd92+66h6+pxBLk0DzHT+IA==} cpu: [x64] os: [darwin] @@ -733,8 +733,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@0.15.1': - resolution: {integrity: sha512-yad0CKnx9H3NQZCfV4gTzsfTQxqFEJvJSzyXxxA/RhGa6nq/3S/JugQAis37xjaVmQ39NMRrRQ7NokbagHlJVA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-Ttn6ojq3eM/cheYnkosHnBu2ZNJx4uRog9dG8s8V24Dk8f4KnBprrSAhXx8PKZ7LhDgoR1Ld98BdBKIgA1/VDA==} cpu: [x64] os: [freebsd] @@ -743,8 +743,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@0.15.1': - resolution: {integrity: sha512-B4YuHSz18yvZ7ng0qy7ZhzWe+IyeZ1EUAIvBH7O7Fg69oDUp3TqCkh/nnY7mLNPoA2BCwwweIMAOX7U778J1Ww==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-QKo4rx1jYpj76n+n0YiUrh8DaD7kaWIuygDQ1y4T+opEPXy9DhvY57wdMDRSqSDokf7hitLRI5GFIG4RWb4zvA==} cpu: [arm] os: [linux] @@ -753,8 +753,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@0.15.1': - resolution: {integrity: sha512-2v4ZE/a75XA96f7Hmw8RibVIHktpREHTvAG/jG+0718UAVl0XS1o3gCcfJHOzq0vxRM6JrJxL0An6Blqx0zo/g==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-u14DiFg6MgHQ8GGSmVI6liWSoxH4zob5HXTZ9nfEcEmZljLKBeDHVyWwcmLrhPiBqVFiBbOdko5hjypkyca2iA==} cpu: [arm64] os: [linux] @@ -763,8 +763,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@0.15.1': - resolution: {integrity: sha512-ICZANEBNJxpaZPspK3Xd5+pG6CO/0pEOMPJEBiUi67Gy6NexyN9ILPwXoF3ZWEmBMizcURt52xkqoUuEGpJMQg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-gOpsnCh7mB2+y5J8VeAw9WBk29AC7kvw+nIt6X9WnHCiF8WRYifGRnG6AOKJ+XpW6oXPrZFt7UZ06PzmwFWohA==} cpu: [arm64] os: [linux] @@ -773,8 +773,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@0.15.1': - resolution: {integrity: sha512-PldpjbytgMM0eKmnRAvKM6F4bwpRS3aoFr5AAOtbdIxC08ABG/ab+xXuwjdVyo2xxM3nTItbma76verU8lkCgA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-d0ZkDoUsst+ZTqSa/XSZDTamJxvuJg7plNmMKjjVEvhJRbSo70vuorkhU8xQtSliSo6OOt7vAMGDMv1WSmwe2w==} cpu: [x64] os: [linux] @@ -783,8 +783,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@0.15.1': - resolution: {integrity: sha512-ydIgDOKQi92RQjgFFuMeO09IWe0fWLcmhv7opAjutcGwEgqediamlhgmDW2eRJTqHwhT56zMVpivvejMR2KT8g==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-41O2NyixiJlv3WzvTZ2E5gkLa+dsgCjFPZCc6LKo4uEkj9abVGesjrBe7zUzP77Uy52p/IWc2wiwEdySJ6B73g==} cpu: [x64] os: [linux] @@ -793,8 +793,8 @@ packages: engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@0.15.1': - resolution: {integrity: sha512-tNE0tEX+h0WmFx2hL3s1zZOrJtB3hVJkyrMMdyCGwB+ockaeBpinqLsbWzd130RODODLXnMIDXKZcFA8yATMpg==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-+cso5NF2Nw8I6r2JTQcSqykXKF7s9JNScX2OXyLaVwkeifu+Xi72DTnDFp/Ld2b0Ux7c2GiOKu37Ot2MGpACmg==} engines: {node: '>=14.21.3'} cpu: [wasm32] @@ -803,8 +803,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@0.15.1': - resolution: {integrity: sha512-/t1r1tT95cZ2Qt+GO+9pCmgwSNzBRQnX9TL+FJOi9js2PYTnftGq7oU7/VbITpAvwd3bsuWoVncCBnOhgRjxRw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-oMTyWJRmwDQ8g546qFGmas9Q6BxSWS3+zbaw/+8YRN1QYD0vlII7cTeoD7f497tAwf/qXGy3yv8eE22gdNNv0w==} cpu: [arm64] os: [win32] @@ -813,8 +813,8 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@0.15.1': - resolution: {integrity: sha512-x/IImodHRMXeUVUg/BslxYfbBCVTyR1vToEkBiyDt7QVdWBOVAnn/hHOwDRNXBsLLhNB8s74EGzwCihC0TZRgw==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-mKNF4AkpaOt8DDKngQqbVx2j/4q3PJr8sjTRrfg6imrL4LwNyZPbWOQ6TLm0K0INf9jAzrXEqPdWYPg7/Qy3kQ==} cpu: [ia32] os: [win32] @@ -823,8 +823,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@0.15.1': - resolution: {integrity: sha512-8h55cfyhl2WVXZz+FRFhcBAS7cZUZscZ9Uu5lTq+21+wC7LShiBTe8slbACZDNShSW1vskx/bvOQ4PienU1ovA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1-commit.f1c6bdf': + resolution: {integrity: sha512-PuHvByrfBgEf22YTse5og2X49y7gjyvkXSt8kzE6s/3FvHBmjJl+fJbNmVFS40D6kMDB9utJakUujdJbBL8NxQ==} cpu: [x64] os: [win32] @@ -2874,8 +2874,8 @@ packages: resolution: {integrity: sha512-jIkGka4zPkiqpEjPBkaMgRGivbvQQTYV1usKQOWsOIKiiweuJ1ebuA41KdosaSIDNxYjA0yBKIQKMSZkvfqYQQ==} hasBin: true - rolldown@0.15.1: - resolution: {integrity: sha512-i368PJXHjqyYm9ZXdnI0j/etPF2euP5OG/C0RnhO/bHkZEo4WmorWbaYfeRqe6MEo/H3wkXxGz/y1Vnaq5FiuQ==} + rolldown@1.0.0-beta.1-commit.f1c6bdf: + resolution: {integrity: sha512-nHzktOj01vVaBJAV7RPoU3v4wCqz4ljAlWXpLQbAlBTT3tuSv9tqWbGFQJurJAZYqvVziCssfqEoIcW+ewOeqg==} hasBin: true peerDependencies: '@babel/runtime': '>=7' @@ -3996,49 +3996,49 @@ snapshots: '@rolldown/binding-darwin-arm64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-darwin-arm64@0.15.1': + '@rolldown/binding-darwin-arm64@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-darwin-x64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-darwin-x64@0.15.1': + '@rolldown/binding-darwin-x64@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-freebsd-x64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-freebsd-x64@0.15.1': + '@rolldown/binding-freebsd-x64@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-linux-arm-gnueabihf@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm-gnueabihf@0.15.1': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-linux-arm64-gnu@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm64-gnu@0.15.1': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-linux-arm64-musl@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm64-musl@0.15.1': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-linux-x64-gnu@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-x64-gnu@0.15.1': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-linux-x64-musl@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-x64-musl@0.15.1': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-wasm32-wasi@0.13.2-snapshot-3777bfb-20240913003043': @@ -4046,7 +4046,7 @@ snapshots: '@napi-rs/wasm-runtime': 0.2.4 optional: true - '@rolldown/binding-wasm32-wasi@0.15.1': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.1-commit.f1c6bdf': dependencies: '@napi-rs/wasm-runtime': 0.2.4 optional: true @@ -4054,19 +4054,19 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-win32-arm64-msvc@0.15.1': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-win32-ia32-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-win32-ia32-msvc@0.15.1': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rolldown/binding-win32-x64-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-win32-x64-msvc@0.15.1': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.1-commit.f1c6bdf': optional: true '@rollup/plugin-commonjs@28.0.2(rollup@4.29.1)': @@ -6131,23 +6131,23 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 0.13.2-snapshot-3777bfb-20240913003043 '@rolldown/binding-win32-x64-msvc': 0.13.2-snapshot-3777bfb-20240913003043 - rolldown@0.15.1(@babel/runtime@7.25.6): + rolldown@1.0.0-beta.1-commit.f1c6bdf(@babel/runtime@7.25.6): dependencies: zod: 3.23.8 optionalDependencies: '@babel/runtime': 7.25.6 - '@rolldown/binding-darwin-arm64': 0.15.1 - '@rolldown/binding-darwin-x64': 0.15.1 - '@rolldown/binding-freebsd-x64': 0.15.1 - '@rolldown/binding-linux-arm-gnueabihf': 0.15.1 - '@rolldown/binding-linux-arm64-gnu': 0.15.1 - '@rolldown/binding-linux-arm64-musl': 0.15.1 - '@rolldown/binding-linux-x64-gnu': 0.15.1 - '@rolldown/binding-linux-x64-musl': 0.15.1 - '@rolldown/binding-wasm32-wasi': 0.15.1 - '@rolldown/binding-win32-arm64-msvc': 0.15.1 - '@rolldown/binding-win32-ia32-msvc': 0.15.1 - '@rolldown/binding-win32-x64-msvc': 0.15.1 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-darwin-x64': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-freebsd-x64': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.1-commit.f1c6bdf + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.1-commit.f1c6bdf rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.29.1): dependencies: