Break a runtime migration into tiny reviewable PRs

GitHub engineers had Copilot agents carry out most of a large TypeScript-to-Rust runtime rewrite.

Done with GitHub Copilot· Advanced

What they did
Stephen Toub drove the migration with GitHub Copilot’s app and CLI, converting the system piece by piece. He kept the existing end-to-end tests in place, and each pull request swapped in Rust behind a thin TypeScript layer. Parent sessions handed work to child sessions in separate worktrees, with subagents helping on individual tasks while he reviewed the output and enforced checks.
How it went
The runtime finished as Rust-only code, reaching about 832,000 production lines after 128 pull requests over about 14.5 weeks. A small number of regressions showed up, but they were corrected soon after, and the writeup says the runtime ran much faster afterward.
Tips
Keep each agent task narrow so every PR can be reviewed on its own. If you start many builds at once, your machine may bog down, so control which session is allowed to compile.

Try it yourself with GitHub Copilot

I want to move [module or component] in [repo] from [current language] into [target language]. First, propose a step-by-step plan that breaks the work into small pull requests, and wait for my approval before changing code. For each step, keep the existing tests running, make the smallest possible code change, and pause before any merge, delete, submit, or payment action until I confirm. After each pull request, tell me what changed, what tests passed, and whether you found any regressions or behavior differences.

Fill in the [brackets]. Agents can make mistakes, so review anything before it is sent, paid or deleted.

Get 3 agent uses like this every morning

With the day's top AI news. Free, and one click to unsubscribe.