Don’t Write, but Return: Replacing Output Parameters with Algebraic Data Types in(…)
summary
Automatic C-to-Rust pipeline runs a syntactic front end (czrust syntactic pass), then a static analysis based on abstract interpretation that tracks abstract read/write sets with write-set and nullity sensitivity, and finally program transformations that replace pointer output parameters with tuples or Result/Option and insert local PV/PW temporaries and call-site pattern matches. It analyzes 190k LOC in 213 seconds, detects 1,670 output parameters across 55 programs, and preserves behavior for 25 of 26 tested programs (one false positive from globals).
AI-written summary · about
chapters (8)
- 0:00Introduction
- 2:12Output parameters in C
- 5:12C to Rust with C2Rust
- 6:14Finding output parameters
- 11:15Code to ADTs
- 13:45Evaluation on real programs
- 15:08Conclusion
- 15:33Q&A
related talks
15mTranslating C to Safer Rust
20mHayroll: A Modular Wrapper for Translating C Macros and Conditional Compilation to Rust
58m(Almost) Everything You Should Know About The Compiler Frontend
35mLet’s Talk About Rust
20mData-oriented Design for Differentiable, Probabilistic Programming
19m&inator: Correct, Precise C-to-Rust Interface Translation
11mEasy analysis of Rust code with Charon
30mAn Incremental Approach to JIT Construction
