feat: add Renamer#123
Merged
Merged
Conversation
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 17, 2026
Removes the "Auto Assign PR" GitHub Actions workflow that auto-assigned newly opened PRs to their authors when the author was a rolldown org member. <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 17, 2026
#9810) #9755 already made the external default-import name deterministic via `min_by_key((stable_id, name))` plus an always-on stable sort. This refines that path without changing output: - `sort_by` -> `sort_unstable_by`, guarded by `len > 1`: stability is needless since the names are unique `FxHashMap` keys, and this matches the project direction in #9803 (use unstable sort where stability is unneeded). - default-name selection uses `exec_order()` (u32 compare) instead of `stable_id().as_str()` (string compare): cheaper, and consistent with the sibling `external_import_namespace_merger`, which `code_splitting.rs` already orders by `exec_order()`. All rolldown integration snapshot tests pass unchanged. <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 17, 2026
Replace the two-line CODEOWNERS (which only covered AGENTS.md / CLAUDE.md) with a full crate/package-level ownership map derived from git history (all-time + recent commit activity). Owners are the five maintainers @hyf0, @IWANABETHATGUY, @shulaoda, @h-a-n-a, and @sapphi-red. Design rules: - Every area has at least TWO owners so changes can be cross-reviewed. - Global `*` default lists all five (placed first; GitHub uses last-match-wins). - Vite plugin suite folded into a single `/crates/rolldown_plugin_vite_*/` wildcard owned by @shulaoda + @sapphi-red, the two contributors active across all 19 vite crates. - Dev/HMR, core engine, ECMAScript tooling, plugins, and packages assigned to their most active contributors. - AGENTS.md / CLAUDE.md kept unanchored so they match at any depth (root AGENTS.md, .claude/CLAUDE.md, rollup/AGENTS.md). <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 17, 2026
Adds a `meta/design` doc explaining the options normalization pipeline: JS options → NAPI binding options → raw `BundlerOptions` → `NormalizedBundlerOptions`, plus the Rust integration-test config path that deserializes `BundlerOptions` directly from `_config.json`. The doc documents **why each layer exists** and that both frontends converge at the serde-deserializable `BundlerOptions`, normalized once by `prepare_build_context`. It also calls out the test-harness defaulting caveat: the integration-test harness pre-fills several fields (`cwd`, `external`, `input`, entry/chunk filenames, `checks`) before `Bundler::new`, so omitted fixture fields exercise test-harness defaults rather than production defaults. Docs-only change; no runtime code is affected. <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 23, 2026
The CLI `--help` message rendered option names in kebab-case while the parser (and Rollup/Vite) use camelCase. Switch the help-only `options` map and `help.ts` rendering to camelCase, regenerate the CLI e2e snapshots, and update the internal CLI pipeline doc. from #9932 (comment) <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
h-a-n-a
added a commit
that referenced
this pull request
Jun 24, 2026
<!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! --> Add more clarifications on drafting PRs.
h-a-n-a
added a commit
that referenced
this pull request
Jun 24, 2026
<!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! --> Remove global catch line. It's the author's obligation to request how small changes should be reviewed. This keeps these changes from spamming every maintain's inbox.
leegeunhyeok
added a commit
to rollipop-dev/rolldown
that referenced
this pull request
Jun 25, 2026
<!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes rolldown#123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
leegeunhyeok
added a commit
to rollipop-dev/rolldown
that referenced
this pull request
Jun 25, 2026
<!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes rolldown#123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! --> just indent ```js // AS-IS (function () { var __rollipop_modules__ = __rollipop_require__.m = { 1: function() {}, 2: function() {}, 3: function() {} }; })(); // TO-BE (function () { var __rollipop_modules__ = __rollipop_require__.m = { 1: function() {}, 2: function() {}, 3: function() {} }; })(); ```
shulaoda
added a commit
that referenced
this pull request
Jun 26, 2026
…#9948) When two emitted assets have identical content but different names, rolldown deduplicates them by content hash. The surviving asset's [name] was taken from whichever copy emits first, which is non-deterministic. Fix by always choosing the alphabetically-first name. Fixes #9940 Claude was used, the work was reviewed by me. I mostly have Rust experience from advent of code. <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! --> --- ### The problem When several assets are emitted with identical content but different names, rolldown deduplicates them by content hash into one output asset. The surviving asset took its `[name]` from whichever copy was emitted first, and because assets are emitted concurrently during module processing that order is not stable. The chosen name flows into `assetFileNames` and changes the `[hash]` of every chunk that references the asset, so byte-identical input could produce different file names from one build to the next. Fixes #9940. ### Deterministic survivor name The survivor is now chosen deterministically: the shortest name wins, with ties broken lexicographically. This is the rule Rollup uses in `finalizeAssetsWithSameSource`, and the same order rolldown already applies when it sorts an asset's `names`, so the chosen `filename` stays consistent with `names[0]`. An earlier version of this PR kept the alphabetically-first name, which ignores length and disagrees with Rollup; it has been changed to shortest-then-lexicographic. ### Fixing a metadata-loss race The first time a hash is seen, the asset is now inserted into `self.files` while the `source_hash_to_reference_id` shard lock is still held, before the reference id becomes visible. Previously the lock was dropped before that insert, so a concurrent duplicate could look up the reference id, find nothing in `self.files` yet, and silently lose its `name` and `originalFileName`. ### Behavior change (Rollup parity) This restores Rollup's behavior. For example, two identical CSS assets named `style` and `style2` now deduplicate to `style-[hash].css`, the shorter name, exactly as Rollup does. Vite's `css-codesplit-consistent` test was flipped to expect `style2` when vite started building with rolldown, precisely because rolldown diverged here; with this fix it can go back to its original Rollup assertion. ### Tests Tests live in `crates/rolldown/tests/rolldown/function/asset_dedup_filename` and cover the shortest name winning regardless of emission order, the shortest name beating the lexicographically-first one, every duplicate's `name` and `originalFileName` being collected and sorted onto the survivor, explicit `fileName` assets being left untouched, and concurrent emission never dropping a name. Each test fails on the current code and passes with the fix. --------- Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 26, 2026
This PR adds a failing test that covers a bug found in vitejs/vite#21626. When lazy bundling is enabled, the following bug exists: ```javascript try { await import('./foo.js'); // throws an error inside } catch (e) { // the error is not caught here and a unhandled error happens } ``` <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jun 27, 2026
### What this solves The replace plugin's `delimiters` option is a `[string, string]` tuple, but the docs never said what the two elements mean. This clarifies that the first value is matched immediately before a key (left) and the second immediately after it (right), and that both are regular expressions, so the default keeps replacements at word boundaries while skipping property accesses. Docs-only change, no code affected. <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
leegeunhyeok
added a commit
to rollipop-dev/rolldown
that referenced
this pull request
Jun 29, 2026
# Description Integrate the Oxc-based React Compiler into Rollipop. This change preserves the existing transform options and introduces a new `react_compiler` field to the NAPI surface, avoiding changes to the current API while keeping the integration maintainable. ## Background The Rolldown team decided to withdraw the Rust React Compiler integration (see the linked X post). However, Rollipop is a hard fork of Rolldown and is focused exclusively on React Native, where React Compiler integration remains valuable. For that reason, this PR integrates the React Compiler independently rather than following the upstream decision. refs: https://x.com/boshen_c/status/2069449703935336846 <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes rolldown#123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
graphite-app Bot
pushed a commit
that referenced
this pull request
Jul 1, 2026
…pression (#10062) <!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes #123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
leegeunhyeok
added a commit
to rollipop-dev/rolldown
that referenced
this pull request
Jul 1, 2026
<!-- - What is this PR solving? Write a clear and concise description. - Reference the issues it solves (e.g. `fixes rolldown#123`). - What other alternatives have you explored? - Are there any parts you think require more attention from reviewers? Also, please make sure you do the following: - Read the Contributing Guidelines at https://rolldown.rs/contribution-guide/. - Check that there isn't already a PR that solves the problem the same way. If you find a duplicate, please help us review it. - Update the corresponding documentation if needed. - Include relevant tests that fail without this PR but pass with it. If the tests are not included, explain why. Thank you for contributing to Rolldown! -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Test Plan