De auteur heeft tmux volledig in (unsafe) Rust overgezet vanuit C, met ongeveer 81.000 regels Rust tegenover 67.000 regels C.
Initieel gebruikte hij de C2Rust-transpiler maar schakelde hij over op handmatige vertaling wegens onleesbare en onhoudbare output.
Het bouwproces combineert Rust en autotools door eerst een statische Rust-bibliotheek te linken en later met de cc-crate de C-code als bibliotheek aan een Rust-binary toe te voegen.
Twee vertaalbugs veroorzaakten geheugenfouten: ontbrekende C-functieprototypes leidden tot pointertruncatie en onjuiste struct-definities veroorzaakten offsetsverschillen.
C-patronen zoals raw pointers, goto en intrusieve macros worden in Rust met unsafe-constructies, generieke traits en labeled loops/labeled blocks nagebootst.
De yacc-parser is vervangen door een lalrpop-implementatie, waardoor de parser volledig in Rust staat.
De vertaalworkflow maakte gebruik van Vim-macro’s en AI-tools (Cursor), die echter beperkt bruikbaar bleken.
Versie 0.0.1 is uitgebracht; de volgende stap is het omzetten naar veilige Rust.
Get notified when new stories are published for "🇳🇱 Hacker News Dutch"