1min.

1MIN · RUST

A Rust migration can preserve types and still change behaviour

GitHub’s account of migrating the Copilot runtime from TypeScript to Rust includes mistakes that survived translation: numbers serialized differently, empty strings took different fallback paths, and asynchronous work blocked the wrong thread. The lesson is concrete: preserving a function’s apparent purpose is not enough. Clients can depend on small runtime behaviours that the new implementation changes.

GitHub · Sep 16, 2026

Why it matters

These examples make useful review questions for any migration between languages or runtimes.

More context

The article was updated September 23; this card covers its regression examples, not every part of the long report. Try contract tests for serialized values, cancellation and fallback behaviour before migrating a boundary.

Keep in mind

This is GitHub’s practitioner report, not an independent evaluation of AI migration quality. Its own account acknowledges remaining unknown bugs.

Original read

More engineering ideas, one minute at a time.

Explore more stories