Back to JetBrains

How do you rewrite C/C++ projects to Rust?

JetBrainsJuly 8, 20261h 11m
Topics38
Welcome and Guest Introduction0:14Luca Palmieri's Programming Journey0:32First Contact with Rust2:30Early Rust Contributions and Career Development3:30Advice for Teaching Rust5:01The Shift from Meme to Reality in Rust Migrations9:30Drivers Behind Rust Migration Decisions12:30Growing Rust Expertise in Industry13:30Projects That Benefit Most from Rust Migration15:00Full Rewrite vs Incremental Migration Strategy17:30Challenges with Packaged Software Migration20:00Factors Affecting Migration Strategy21:00Characteristics of Successful Incremental Migration22:30Starting the Migration Process24:34Initial Integration Challenges25:30Building Confidence Through Small Wins26:31Two Primary Migration Strategies27:06Third Approach: Mechanical Translation28:32Cultural and Philosophical Differences29:32Allocator and Memory Management Considerations30:33Working with Raw Pointers and Unsafe Code31:31Java/Kotlin vs Rust/C++ Interoperability33:30Memory Safety Across Language Boundaries35:00Common Migration Mistakes36:32Cbindgen and C2Rust Tooling41:00C2Edgen Development44:00Using AI During Migration49:02AI Integration in Mixed Codebases54:02AI's Impact on Migration Feasibility55:01Essential Learning Path for Migration Teams56:31Recommended Migration Resources57:31Hiring Experts and Training Options1:00:00Deliberate Practice with AI Assistance1:01:31Building Capability Through Practice1:03:00Development Tools for Mixed Codebases1:05:31Five-Year Outlook on C to Rust Migrations1:06:00Shift in New Project Language Choices1:07:30EuRust Conference Information1:09:00
In a Nutshell

Luca Palmieri argues that Rust migrations succeed when companies treat them as incremental engineering projects rather than big-bang rewrites: start with self-contained C modules that only need to call Rust, integrate build systems and bindings early, and expand the Rust surface while shipping continuously. The biggest risks are underestimating timeline and training, and letting the two codebases drift out of sync; the biggest gains come from using AI to accelerate testing and guard-rail creation while developers stay in control of design and correctness.

AI-Generated Notes

These notes were generated by AI and may contain inaccuracies.

Luca Palmieri, book author, speaker, principal engineering consultant, and main matter, joined the Rust Stroa live stream series to discuss migrating C/C++ projects to Rust.

Luca's first programming experience occurred at age 13-14 when he used PHP with the Symfony framework and the LAMP stack to build websites and small blogging platforms. After a significant gap, he studied programming again in university while pursuing mathematics, focusing primarily on linear algebra with C, Python, and MATLAB. His professional programming career began when he left university to work as a machine learning engineer and data scientist, where he was primarily using Python.

While working as an ML engineer, Luca needed to write custom models beyond what could be assembled from NumPy, SciPy, and scikit-learn calls. Since Python wasn't fast enough for this work, native extensions using Cython or C++ were required. His CTO recommended Rust as a fast language that could handle these requirements. Luca downloaded the Rust book in PDF format and read it during a flight, finding it interesting enough to pursue further.

Luca's first PRs were contributed to ndarray, the main NumPy alternative in the Rust ecosystem. He continued using Rust as a side tool for a couple of years until landing at TrueLayer, where he transitioned career-wise to become a backend engineer using Rust primarily for backend work, which led to writing his book.

Sign in to read the full notes

Get access to AI-generated notes, topic timestamps, and more.