Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
Don’t Write, but Return: Replacing Output Parameters with Algebraic Data Types in C-to-Rust Translation
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 176, Pages 716–740https://doi.org/10.1145/3656406Translating 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 ...
- research-articleApril 2024
Persimmon: Nested Family Polymorphism with Extensible Variant Types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 119, Pages 698–724https://doi.org/10.1145/3649836Many obstacles stand in the way of modular, extensible code. Some language constructs, such as pattern matching, are not easily extensible. Inherited code may not be type safe in the presence of extended types. The burden of setting up design patterns ...
Turaco: Complexity-Guided Data Sampling for Training Neural Surrogates of Programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 280, Pages 1648–1676https://doi.org/10.1145/3622856Programmers and researchers are increasingly developing surrogates of programs, models of a subset of the observable behavior of a given program, to solve a variety of software development challenges. Programmers train surrogates from measurements of ...
Adventure of a Lifetime: Extract Method Refactoring for Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 245, Pages 658–685https://doi.org/10.1145/3622821We present a design and implementation of the automated "Extract Method" refactoring for Rust programs. Even though Extract Method is one of the most well-studied and widely used in practice automated refactorings, featured in all major IDEs for all ...
Mostly Automated Proof Repair for Verified Libraries
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue PLDIArticle No.: 107, Pages 25–49https://doi.org/10.1145/3591221The cost of maintaining formally specified and verified software is widely considered prohibitively high due to the need to constantly keep code and the proofs of its correctness in sync—the problem known as proof repair. One of the main challenges in ...
Aliasing Limits on Translating C to Safe Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA1Article No.: 94, Pages 551–579https://doi.org/10.1145/3586046The Rust language was created to provide safe low-level systems programming. There is both industrial and academic interest in the problem of (semi-)automatically translating C code to Rust in order to exploit Rust's safety guarantees. We study the ...
- research-articleOctober 2021
Automatic migration from synchronous to asynchronous JavaScript APIs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 160, Pages 1–27https://doi.org/10.1145/3485537The JavaScript ecosystem provides equivalent synchronous and asynchronous Application Programming Interfaces (APIs) for many commonly used I/O operations. Synchronous APIs involve straightforward sequential control flow that makes them easy to use and ...
Translating C to safer Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 121, Pages 1–29https://doi.org/10.1145/3485498Rust is a relatively new programming language that targets efficient and safe systems-level applications. It includes a sophisticated type system that allows for provable memory- and thread-safety, and is explicitly designed to take the place of unsafe ...
- research-articleNovember 2020
A large-scale longitudinal study of flaky tests
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 202, Pages 1–29https://doi.org/10.1145/3428270Flaky tests are tests that can non-deterministically pass or fail for the same code version. These tests undermine regression testing efficiency, because developers cannot easily identify whether a test fails due to their recent changes or due to ...
- research-articleOctober 2019
Reflection-aware static regression test selection
Proceedings of the ACM on Programming Languages (PACMPL), Volume 3, Issue OOPSLAArticle No.: 187, Pages 1–29https://doi.org/10.1145/3360613Regression test selection (RTS) aims to speed up regression testing by rerunning only tests that are affected by code changes. RTS can be performed using static or dynamic analysis techniques. Our prior study showed that static and dynamic RTS perform ...
A spectrum of type soundness and performance
Proceedings of the ACM on Programming Languages (PACMPL), Volume 2, Issue ICFPArticle No.: 71, Pages 1–32https://doi.org/10.1145/3236766The literature on gradual typing presents three fundamentally different ways of thinking about the integrity of programs that combine statically typed and dynamically typed code. This paper presents a uniform semantic framework that explains all three ...
Sound gradual typing: only mostly dead
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue OOPSLAArticle No.: 54, Pages 1–24https://doi.org/10.1145/3133878While gradual typing has proven itself attractive to programmers, many systems have avoided sound gradual typing due to the run time overhead of enforcement. In the context of sound gradual typing, both anecdotal and systematic evidence has suggested ...