Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
Dependency-Aware Code Naturalness
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA2Article No.: 354, Pages 2355–2377https://doi.org/10.1145/3689794Code naturalness, which captures repetitiveness and predictability in programming languages, has proven valuable for various code-related tasks in software engineering. However, precisely measuring code naturalness remains a fundamental challenge. ...
- research-articleOctober 2024
Plume: Efficient and Complete Black-Box Checking of Weak Isolation Levels
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA2Article No.: 302, Pages 876–904https://doi.org/10.1145/3689742Modern databases embrace weak isolation levels to cater for highly available transactions. However, weak isolation bugs have recently manifested in many production databases. This raises the concern of whether database implementations actually deliver ...
Numerical Fuzz: A Type System for Rounding Error Analysis
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 226, Pages 1954–1978https://doi.org/10.1145/3656456Algorithms operating on real numbers are implemented as floating-point computations in practice, but floating-point operations introduce roundoff errors that can degrade the accuracy of the result. We propose Λnum, a functional programming language with ...
- research-articleApril 2024
Understanding and Finding Java Decompiler Bugs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 143, Pages 1380–1406https://doi.org/10.1145/3649860Java decompilers are programs that perform the reverse process of Java compilers, i.e., they translate Java bytecode to Java source code. They are essential for reverse engineering purposes and have become more sophisticated and reliable over the years. ...
- research-articleJanuary 2024
Guided Equality Saturation
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 58, Pages 1727–1758https://doi.org/10.1145/3632900Rewriting is a principled term transformation technique with uses across theorem proving and compilation. In theorem proving, each rewrite is a proof step; in compilation, rewrites optimize a program term. While developing rewrite sequences manually is ...
-
An Infinite Needle in a Finite Haystack: Finding Infinite Counter-Models in Deductive Verification
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 33, Pages 970–1000https://doi.org/10.1145/3632875First-order logic, and quantifiers in particular, are widely used in deductive verification of programs and systems. Quantifiers are essential for describing systems with unbounded domains, but prove difficult for automated solvers. Significant effort ...
CryptOpt: Verified Compilation with Randomized Program Search for Cryptographic Primitives
- Joel Kuepper,
- Andres Erbsen,
- Jason Gross,
- Owen Conoly,
- Chuyue Sun,
- Samuel Tian,
- David Wu,
- Adam Chlipala,
- Chitchanok Chuengsatiansup,
- Daniel Genkin,
- Markus Wagner,
- Yuval Yarom
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue PLDIArticle No.: 158, Pages 1268–1292https://doi.org/10.1145/3591272Most software domains rely on compilers to translate high-level code to multiple different machine languages, with performance not too much worse than what developers would have the patience to write directly in assembly language. However, ...
- research-articleJanuary 2023
The Path to Durable Linearizability
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue POPLArticle No.: 26, Pages 748–774https://doi.org/10.1145/3571219There is an increasing body of literature proposing new and efficient persistent versions of concurrent data structures ensuring that a consistent state can be recovered after a power failure or a crash. Their correctness is typically stated in terms of ...
A study of inline assembly in solidity smart contracts
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue OOPSLA2Article No.: 165, Pages 1123–1149https://doi.org/10.1145/3563328The Solidity programming language is the most widely used language for smart contract development. Improving smart contracts’ correctness, security, and performance has been the driving force for research in vulnerability detection, program analysis, and ...
- research-articleOctober 2022
Proving hypersafety compositionally
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue OOPSLA2Article No.: 135, Pages 289–314https://doi.org/10.1145/3563298Hypersafety properties of arity n are program properties that relate n traces of a program (or, more generally, traces of n programs). Classic examples include determinism, idempotence, and associativity. A number of relational program logics have been ...
Bugs in Quantum computing platforms: an empirical study
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue OOPSLA1Article No.: 86, Pages 1–27https://doi.org/10.1145/3527330The interest in quantum computing is growing, and with it, the importance of software platforms to develop quantum programs. Ensuring the correctness of such platforms is important, and it requires a thorough understanding of the bugs they typically ...
FPL: fast Presburger arithmetic through transprecision
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 162, Pages 1–26https://doi.org/10.1145/3485539Presburger arithmetic provides the mathematical core for the polyhedral compilation techniques that drive analytical cache models, loop optimization for ML and HPC, formal verification, and even hardware design. Polyhedral compilation is widely regarded ...
- research-articleOctober 2021
Rich specifications for Ethereum smart contract verification
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 146, Pages 1–30https://doi.org/10.1145/3485523Smart contracts are programs that execute in blockchains such as Ethereum to manipulate digital assets. Since bugs in smart contracts may lead to substantial financial losses, there is considerable interest in formally proving their correctness. However, ...
Modular specification and verification of closures in Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 145, Pages 1–29https://doi.org/10.1145/3485522Closures are a language feature supported by many mainstream languages, combining the ability to package up references to code blocks with the possibility of capturing state from the environment of the closure's declaration. Closures are powerful, but ...
Transitioning from structural to nominal code with efficient gradual typing
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 127, Pages 1–29https://doi.org/10.1145/3485504Gradual typing is a principled means for mixing typed and untyped code. But typed and untyped code often exhibit different programming patterns. There is already substantial research investigating gradually giving types to code exhibiting typical untyped ...
- research-articleOctober 2021
What we eval in the shadows: a large-scale study of eval in R programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 125, Pages 1–23https://doi.org/10.1145/3485502Most dynamic languages allow users to turn text into code using various functions, often named <tt>eval</tt>, with language-dependent semantics. The widespread use of these reflective functions hinders static analysis and prevents compilers from ...
- research-articleOctober 2021
Safer at any speed: automatic context-aware safety enhancement for Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 103, Pages 1–23https://doi.org/10.1145/3485480Type-safe languages improve application safety by eliminating whole classes of vulnerabilities–such as buffer overflows–by construction. However, this safety sometimes comes with a performance cost. As a result, many modern type-safe languages provide ...
- research-articleOctober 2021
Promises are made to be broken: migrating R to strict semantics
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 101, Pages 1–20https://doi.org/10.1145/3485478Function calls in the R language do not evaluate their arguments, these are passed to the callee as suspended computations and evaluated if needed. After 25 years of experience with the language, there are very few cases where programmers leverage ...
- research-articleNovember 2020
Actor concurrency bugs: a comprehensive study on symptoms, root causes, API usages, and differences
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 214, Pages 1–32https://doi.org/10.1145/3428282Actor concurrency is becoming increasingly important in the development of real-world software systems. Although actor concurrency may be less susceptible to some multithreaded concurrency bugs, such as low-level data races and deadlocks, it comes with ...
- research-articleNovember 2020
Fast linear programming through transprecision computing on small and sparse data
- Tobias Grosser,
- Theodoros Theodoridis,
- Maximilian Falkenstein,
- Arjun Pitchanathan,
- Michael Kruse,
- Manuel Rigger,
- Zhendong Su,
- Torsten Hoefler
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 195, Pages 1–28https://doi.org/10.1145/3428263A plethora of program analysis and optimization techniques rely on linear programming at their heart. However, such techniques are often considered too slow for production use. While today’s best solvers are optimized for complex problems with thousands ...