Rust版tmux:从C到Rust的10万行代码迁移之旅

2025-07-03

作者耗时六个月,将67000行C代码编写的tmux终端复用器移植到Rust,最终代码量达到81000行。起初尝试使用C2Rust工具进行自动转换,但生成的代码难以维护且体积膨胀。于是作者放弃自动转换,改用手工方式逐行翻译。过程中作者分享了构建过程、遇到的bug以及C代码到Rust代码的转换技巧,例如处理raw pointers、goto语句和侵入式宏。最终,作者使用lalrpop crate重写了yacc解析器,完成了从C到Rust的完全迁移,并发布了0.0.1版本。