PLDI 2024
Mon 24 - Fri 28 June 2024 Copenhagen, Denmark
Wed 26 Jun 2024 12:00 - 12:20 at Sweden - Parsing and Compiling and Transforming Chair(s): Stephen Kell

Translating legacy system programs from C to Rust is a promising way to enhance their reliability. To alleviate the burden of manual translation, automatic C-to-Rust translation is desirable. However, existing translators fail to generate Rust code fully utilizing Rust’s language features, including algebraic data types. In this work, we focus on tuples and Option/Result types, an important subset of algebraic data types. They are used as functions’ return types to represent those returning multiple values and those that may fail. Due to the absence of these types, C programs use output parameters, i.e., pointer-type parameters for producing outputs, to implement such functions. As output parameters make code less readable and more error-prone, their use is discouraged in Rust. To address this problem, this paper presents a technique for removing output parameters during C-to-Rust translation. This involves three steps: (1) syntactically translating C code to Rust using an existing translator; (2) analyzing the Rust code to extract information related to output parameters; and (3) transforming the Rust code using the analysis result. The second step poses several challenges, including the identification and classification of output parameters. To overcome these challenges, we propose a static analysis based on abstract interpretation, complemented by the notion of abstract read/write sets, which approximate the sets of read/written pointers, and two sensitivities: write set sensitivity and nullity sensitivity. Our evaluation shows that the proposed technique is (1) scalable, with the analysis and transformation of 190k LOC within 213 seconds, (2) useful, with the detection of 1,670 output parameters across 55 real-world C programs, and (3) mostly correct, with 25 out of 26 programs passing their test suites after the transformation.

Wed 26 Jun

Displayed time zone: Windhoek change

10:40 - 12:20
Parsing and Compiling and Transforming PLDI Research Papers at Sweden
Chair(s): Stephen Kell University of Kent
10:40
20m
Talk
Daedalus: Safer Document Parsing
PLDI Research Papers
Iavor Diatchki Galois, Inc., Mike Dodds Galois, Inc., Harrison Goldstein University of Pennsylvania, Bill Harris Galois, David Holland Galois, Benoit Razet Galois, Inc, Cole Schlesinger Galois, Simon Winwood Galois
DOI
11:00
20m
Talk
SpEQ: Translation of Sparse Codes using Equivalences
PLDI Research Papers
Avery Laird University of Toronto, Bangtian Liu University of Toronto, Nikolaj Bjørner Microsoft Research, Maryam Mehri Dehnavi University of Toronto
DOI Pre-print
11:20
20m
Talk
[TOPLAS] Choral: Object-Oriented Choreographic Programming
PLDI Research Papers
Saverio Giallorenzo Alma Mater Studiorum - Università di Bologna / INRIA, Fabrizio Montesi University of Southern Denmark, Marco Peressotti University of Southern Denmark
Link to publication DOI
11:40
20m
Talk
Compiling with Abstract Interpretation
PLDI Research Papers
Dorian Lesbre CEA List, Matthieu Lemerre Université Paris-Saclay - CEA LIST
DOI
12:00
20m
Talk
Don’t Write, but Return: Replacing Output Parameters with Algebraic Data Types in C-to-Rust Translation
PLDI Research Papers
DOI