Skip to content

feat: add Renamer#123

Merged
hyf0 merged 1 commit into
mainfrom
hyf_32084902834
Oct 30, 2023
Merged

feat: add Renamer#123
hyf0 merged 1 commit into
mainfrom
hyf_32084902834

Conversation

@hyf0

@hyf0 hyf0 commented Oct 30, 2023

Copy link
Copy Markdown
Member

Description

Test Plan


@hyf0 hyf0 merged commit 7709cd4 into main Oct 30, 2023
@hyf0 hyf0 deleted the hyf_32084902834 branch November 5, 2023 14:03
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!
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant