Skip to content

Comments

feat: nativeMagicString reset#7828

Merged
graphite-app[bot] merged 1 commit intomainfrom
01-10-feat_nativemagicstring_reset
Jan 11, 2026
Merged

feat: nativeMagicString reset#7828
graphite-app[bot] merged 1 commit intomainfrom
01-10-feat_nativemagicstring_reset

Conversation

@IWANABETHATGUY
Copy link
Member

No description provided.

Copy link
Member Author

IWANABETHATGUY commented Jan 9, 2026


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@netlify
Copy link

netlify bot commented Jan 9, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 1b4e346
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/6963aea72ac4e50008c57efa

@IWANABETHATGUY IWANABETHATGUY force-pushed the 01-10-feat_nativemagicstring_reset branch 3 times, most recently from c1e081d to 7aea9ab Compare January 9, 2026 17:41
@socket-security
Copy link

socket-security bot commented Jan 9, 2026

No dependency changes detected. Learn more about Socket for GitHub.

👍 No dependency changes detected in pull request

@IWANABETHATGUY IWANABETHATGUY force-pushed the 01-10-feat_nativemagicstring_reset branch from 7aea9ab to 2d39499 Compare January 9, 2026 18:01
@IWANABETHATGUY IWANABETHATGUY changed the base branch from main to graphite-base/7828 January 9, 2026 18:16
@IWANABETHATGUY IWANABETHATGUY force-pushed the 01-10-feat_nativemagicstring_reset branch from 2d39499 to 43bb12f Compare January 9, 2026 18:16
@IWANABETHATGUY IWANABETHATGUY changed the base branch from graphite-base/7828 to 01-10-chore_change_edition_of_string_wizard_to_2024 January 9, 2026 18:16
@graphite-app graphite-app bot changed the base branch from 01-10-chore_change_edition_of_string_wizard_to_2024 to graphite-base/7828 January 10, 2026 07:25
@graphite-app graphite-app bot force-pushed the 01-10-feat_nativemagicstring_reset branch from 43bb12f to 4aae8cc Compare January 10, 2026 07:35
@graphite-app graphite-app bot force-pushed the graphite-base/7828 branch from 4ab4e7d to 896f82f Compare January 10, 2026 07:35
@graphite-app graphite-app bot changed the base branch from graphite-base/7828 to main January 10, 2026 07:35
@graphite-app graphite-app bot force-pushed the 01-10-feat_nativemagicstring_reset branch from 4aae8cc to 6e32891 Compare January 10, 2026 07:36
@IWANABETHATGUY IWANABETHATGUY requested a review from hyf0 January 11, 2026 10:57
@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review January 11, 2026 10:57
Copilot AI review requested due to automatic review settings January 11, 2026 10:57
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a reset method to the native MagicString implementation, enabling users to undo modifications made to a specific range of the string and restore it to its original content. The implementation includes support for negative indices (counting from the end) to match the behavior of the original JavaScript magic-string library.

Changes:

  • Added reset method to Rust MagicString implementation with proper error handling for edge cases
  • Added JavaScript bindings with negative index normalization support
  • Enabled previously skipped reset-related tests and added test transformations to handle special cases
  • Added chunk-level reset functionality to clear modifications

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
crates/string_wizard/src/magic_string/reset.rs New reset implementation with range validation and chunk iteration
crates/string_wizard/src/magic_string/mod.rs Registered the new reset module
crates/string_wizard/src/chunk.rs Added chunk reset method and modified split method's edited content check
crates/rolldown_binding/src/types/binding_magic_string.rs Added JS bindings with negative index normalization and character-to-UTF16 conversion
packages/rolldown/src/binding.d.cts Added TypeScript type definitions for the reset method
packages/rolldown/tests/magic-string/MagicString.test.ts Enabled reset tests including negative index and overlapping range tests
packages/rolldown/tests/magic-string/download-tests.mjs Updated test skip configuration and added transformations for special test cases

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 11, 2026

Benchmarks Rust

  • target: main(552f91e)
  • pr: 01-10-feat_nativemagicstring_reset(1b4e346)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.02     70.1±1.49ms        ? ?/sec    1.00     68.7±1.59ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.03     76.9±2.36ms        ? ?/sec    1.00     74.7±1.68ms        ? ?/sec
bundle/bundle@rome_ts                                        1.00    104.4±2.06ms        ? ?/sec    1.00    104.2±1.66ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.01    117.0±1.74ms        ? ?/sec    1.00    115.8±1.51ms        ? ?/sec
bundle/bundle@threejs                                        1.00     38.4±2.36ms        ? ?/sec    1.00     38.5±1.12ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.01     43.1±1.22ms        ? ?/sec    1.00     42.7±0.63ms        ? ?/sec
bundle/bundle@threejs10x                                     1.01    390.0±5.59ms        ? ?/sec    1.00    387.3±3.08ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.01    451.9±3.98ms        ? ?/sec    1.00    449.6±5.07ms        ? ?/sec
scan/scan@rome_ts                                            1.00     81.7±1.59ms        ? ?/sec    1.01     82.1±2.22ms        ? ?/sec
scan/scan@threejs                                            1.00     28.5±1.65ms        ? ?/sec    1.00     28.5±1.60ms        ? ?/sec
scan/scan@threejs10x                                         1.01    291.8±3.57ms        ? ?/sec    1.00    287.8±3.58ms        ? ?/sec

@IWANABETHATGUY IWANABETHATGUY force-pushed the 01-10-feat_nativemagicstring_reset branch from 6e32891 to 089f981 Compare January 11, 2026 13:53
Copilot AI review requested due to automatic review settings January 11, 2026 13:54
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@graphite-app graphite-app bot force-pushed the 01-10-feat_nativemagicstring_reset branch from ec080a7 to 1b4e346 Compare January 11, 2026 14:07
@graphite-app
Copy link
Contributor

graphite-app bot commented Jan 11, 2026

Merge activity

@graphite-app graphite-app bot merged commit 1b4e346 into main Jan 11, 2026
35 checks passed
@graphite-app graphite-app bot deleted the 01-10-feat_nativemagicstring_reset branch January 11, 2026 14:19
This was referenced Jan 14, 2026
shulaoda added a commit that referenced this pull request Jan 14, 2026
## [1.0.0-beta.60] - 2026-01-14

### 💥 BREAKING CHANGES

- tsconfig: enable auto-discovery by default (#7817) by @shulaoda

### 🚀 Features

- distinguish transformer diagnostics from parse errors (#7872) by @shulaoda
- emit transformer warnings instead of ignoring them (#7850) by @shulaoda
- node: add `output.codeSplitting` option and deprecate `output.advancedChunks` (#7855) by @hyf0
- nativeMagicString reset (#7828) by @IWANABETHATGUY
- nativeMagicString lastChar (#7819) by @IWANABETHATGUY
- dev/lazy: inject lazy compilation runtime automatically (#7816) by @hyf0
- nativeMagicString snip (#7818) by @IWANABETHATGUY
- nativeMagicString construct with options (#7814) by @IWANABETHATGUY
- nativeMagicString clone (#7813) by @IWANABETHATGUY
- nativeMagicString `insert` (#7812) by @IWANABETHATGUY
- nativeMagicString `slice` (#7807) by @IWANABETHATGUY
- nativeMagicString trim methods (#7800) by @IWANABETHATGUY
- make closeBundle hook receive the last error (#7278) by @Copilot

### 🐛 Bug Fixes

- when package only contains export default, cjsDefault didn't resolve correctly (#7873) by @IWANABETHATGUY
- inline __name calls for default exports  (#7862) by @IWANABETHATGUY
- improve variable renaming to avoid unnecessary shadowing in nested scopes (#7859) by @IWANABETHATGUY
- use correct index when inserting keepNames statements during export default transformation (#7853) by @IWANABETHATGUY
- transform non-static dynamic imports when `dynamicImportInCjs` is `false` (#7823) by @shulaoda
- dev/lazy: should include imported and non-executed modules in the patch (#7815) by @hyf0
- set ExportsKind to Esm when json is none object literal  (#7808) by @IWANABETHATGUY
- nativeMagicString move api (#7796) by @IWANABETHATGUY
- remove unnecessary exports after merging into commong and user defined entry (#7789) by @IWANABETHATGUY
- use output.name instead of chunk.name in mixed export warning (#7788) by @Copilot

### 🚜 Refactor

- generalize ParseError to OxcError with dynamic EventKind (#7868) by @shulaoda
- rust: rename `advanced_chunks` to `manual_code_splitting` (#7856) by @hyf0
- string_wizard error hanlding (#7830) by @IWANABETHATGUY
- remove `experimental.disableLiveBindings` option (#7820) by @sapphi-red
- node/test: run fixture tests in concurrent (#7790) by @hyf0
- move ConfigExport and RolldownOptionsFunction types to define-config (#7799) by @shulaoda
- cli: validate config after resolving and improve error message (#7798) by @shulaoda

### 📚 Documentation

- rebrand (#7670) by @yyx990803
- fix incorrect default value for propertyReadSideEffects (#7847) by @Copilot
- remove options pages and redirect to reference pages (#7834) by @sapphi-red
- options: inline types to option property pages (#7831) by @sapphi-red
- options: port checks.pluginTimings content from options page to reference page (#7832) by @sapphi-red
- options: use `@linkcode` where possible (#7824) by @sapphi-red
- options: port content from options page to reference page (#7822) by @sapphi-red
- options: add descriptions for output options (#7821) by @sapphi-red
- options: add description for input options (#7802) by @sapphi-red
- options: add description for `checks.*` (#7801) by @sapphi-red
- apis: add hook graph (#7671) by @sapphi-red

### 🧪 Testing

- add all valid combination of chunk exports related test (#7851) by @IWANABETHATGUY
- enable MagicString test after api return type alignment (#7797) by @IWANABETHATGUY
- init magic-string test (#7794) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- vite-tests: configure git user for rebase operation (#7875) by @shulaoda
- rolldown_binding: remove v3 native plugins (#7837) by @shulaoda
- rolldown_binding: allow crate-type as lib (#7866) by @Brooooooklyn
- README.md: adjust position and size of rolldown logo (#7861) by @hyf0
- deps: update test262 submodule for tests (#7857) by @sapphi-red
- deps: update oxc to v0.108.0 (#7845) by @renovate[bot]
- deps: update dependency oxlint to v1.39.0 (#7849) by @renovate[bot]
- deps: update dependency oxfmt to ^0.24.0 (#7844) by @renovate[bot]
- deps: update npm packages (#7841) by @renovate[bot]
- deps: update rust crates (#7839) by @renovate[bot]
- deps: update github-actions (#7840) by @renovate[bot]
- use workspace edition for all crates (#7829) by @IWANABETHATGUY
- deps: update dependency oxlint-tsgolint to v0.11.0 (#7827) by @renovate[bot]
- deps: update napi to v3.8.2 (#7810) by @renovate[bot]
- remove outdated snapshot files (#7806) by @shulaoda
- deps: update crate-ci/typos action to v1.42.0 (#7792) by @renovate[bot]

Co-authored-by: shulaoda <[email protected]>
@sapphi-red sapphi-red mentioned this pull request Feb 14, 2026
9 tasks
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.

2 participants