Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Aaron Turon

dblp:79/9034 · also Aaron Joseph Turon · DBLP profile ↗
← Back
14ranked-venue papers
7as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 14 · 7 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
8 papers
Concurrent programming · 45% Program verification · 28% Programming languages and type systems · 24%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 100%

Topics — the 22 heaviest of 24, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Parallel and multicore computing
parallel programming models
0.322014
Freeze after writing: quasi-deterministic parallel programming with LVars · POPL 2014
Scalable join patterns · OOPSLA 2011
Concurrent programming › concurrency control
fine-grained concurrency
0.322013
Logical relations for fine-grained concurrency · POPL 2013
Reagents: expressing and composing fine-grained concurrency · PLDI 2012
Programming languages and type systems › type systems
ownership types
0.312017
Rust: from POPL to practice (keynote) · POPL 2017
Programming languages and type systems › type systems
substructural type systems
0.312017
Rust: from POPL to practice (keynote) · POPL 2017
Program verification › program logic › separation logic
concurrent separation logic
0.212015
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning · POPL 2015
Program verification
program logic
0.212015
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning · POPL 2015
Concurrent programming › deterministic execution
deterministic parallelism
0.212014
Freeze after writing: quasi-deterministic parallel programming with LVars · POPL 2014
Concurrent programming
memory models
0.212014
GPS: navigating weak memory with ghosts, protocols, and separation · OOPSLA 2014
Concurrent programming › memory models
weak memory models
0.212014
GPS: navigating weak memory with ghosts, protocols, and separation · OOPSLA 2014
Concurrent programming
concurrent data structures
0.212013
Logical relations for fine-grained concurrency · POPL 2013
Program verification › refinement
contextual refinement
0.212013
Logical relations for fine-grained concurrency · POPL 2013
Programming languages and type systems
logical relations
0.212013
Logical relations for fine-grained concurrency · POPL 2013
Concurrent programming
synchronization
0.112012
Reagents: expressing and composing fine-grained concurrency · PLDI 2012
Compilers and program optimization › parallel program optimization › synchronization optimization
atomicity refinement
0.112011
A separation logic for refining concurrent objects · POPL 2011
Concurrent programming › concurrent data structures
concurrent objects
0.112011
A separation logic for refining concurrent objects · POPL 2011
Programming languages and type systems › concurrent programming languages
coordination languages
0.112011
Scalable join patterns · OOPSLA 2011
Concurrent programming › concurrency theory › process calculi
join calculus
0.112011
Scalable join patterns · OOPSLA 2011
Program verification › modular reasoning
rely-guarantee reasoning
0.112011
A separation logic for refining concurrent objects · POPL 2011
Program verification › program logic
separation logic
0.112011
A separation logic for refining concurrent objects · POPL 2011
Concurrent programming › synchronization
synchronization primitives
0.112011
Scalable join patterns · OOPSLA 2011
Programming languages and type systems
language design
0.112017
Rust: from POPL to practice (keynote) · POPL 2017
Program verification › program logic
hoare logic
0.112015
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning · POPL 2015

Methods — techniques the papers use, named apart from their topics

least upper bound · 0.4lattice-based shared memory · 0.4separation logic · 0.3join calculus · 0.2view shift · 0.2partial commutative monoids · 0.2protocols · 0.2ghost state · 0.2logical relations · 0.2combinator library · 0.1
YearPublicationVenuePosition
2017 Rust: from POPL to practice (keynote)
abstract
In 2015, a language based fundamentally on substructural typing–Rust–hit its 1.0 release, and less than a year later it has been put into production use in a number of tech companies, including some household names. The language has started a trend, with several other mainstream languages, including C++ and Swift, in the early stages of incorporating ideas about ownership. How did this come about?
Aaron Turon
POPL1
2015 Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning
abstract
We present Iris, a concurrent separation logic with a simple premise: monoids and invariants are all you need. Partial commutative monoids enable us to express---and invariants enable us to enforce---user-defined *protocols* on shared state, which are at the conceptual core of most recent program logics for concurrency. Furthermore, through a novel extension of the concept of a *view shift*, Iris supports the encoding of *logically atomic specifications*, i.e., Hoare-style specs that permit the client of an operation to treat the operation essentially as if it were atomic, even if it is not.
Ralf Jung 0002, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, Derek Dreyer
POPL5
2014 GPS: navigating weak memory with ghosts, protocols, and separation
abstract
Weak memory models formalize the inconsistent behaviors that one can expect to observe in multithreaded programs running on modern hardware. In so doing, however, they complicate the already-difficult task of reasoning about correctness of concurrent code. Worse, they render impotent the sophisticated formal methods that have been developed to tame concurrency, which almost universally assume a strong (i.e. sequentially consistent) memory model.
Aaron Turon, Viktor Vafeiadis, Derek Dreyer
OOPSLA1
2014 Freeze after writing: quasi-deterministic parallel programming with LVars
abstract
Deterministic-by-construction parallel programming models offer the advantages of parallel speedup while avoiding the nondeterministic, hard-to-reproduce bugs that plague fully concurrent code. A principled approach to deterministic-by-construction parallel programming with shared state is offered by LVars: shared memory locations whose semantics are defined in terms of an application-specific lattice. Writes to an LVar take the least upper bound of the old and new values with respect to the lattice, while reads from an LVar can observe only that its contents have crossed a specified threshold in the lattice. Although it guarantees determinism, this interface is quite limited.
Lindsey Kuper, Aaron Turon, Neelakantan R. Krishnaswami, Ryan Newton
POPL2
2013 Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
abstract
Modular programming and modular verification go hand in hand, but most existing logics for concurrency ignore two crucial forms of modularity: *higher-order functions*, which are essential for building reusable components, and *granularity abstraction*, a key technique for hiding the intricacies of fine-grained concurrent data structures from the clients of those data structures. In this paper, we present CaReSL, the first logic to support the use of granularity abstraction for modular verification of higher-order concurrent programs. After motivating the features of CaReSL through a variety of illustrative examples, we demonstrate its effectiveness by using it to tackle a significant case study: the first formal proof of (partial) correctness for Hendler et al.'s "flat combining" algorithm.
Aaron Turon, Derek Dreyer, Lars Birkedal
ICFP1
2013 Logical relations for fine-grained concurrency
abstract
Fine-grained concurrent data structures (or FCDs) reduce the granularity of critical sections in both time and space, thus making it possible for clients to access different parts of a mutable data structure in parallel. However, the tradeoff is that the implementations of FCDs are very subtle and tricky to reason about directly. Consequently, they are carefully designed to be contextual refinements of their coarse-grained counterparts, meaning that their clients can reason about them as if all access to them were sequentialized.
Aaron Turon, Jacob Thamsborg, Amal Ahmed 0001, Lars Birkedal, Derek Dreyer
POPL1
2012 Superficially substructural types
abstract
Many substructural type systems have been proposed for controlling access to shared state in higher-order languages. Central to these systems is the notion of a *resource*, which may be split into disjoint pieces that different parts of a program can manipulate independently without worrying about interfering with one another. Some systems support a *logical* notion of resource (such as permissions), under which two resources may be considered disjoint even if they govern the *same* piece of state. However, in nearly all existing systems, the notions of resource and disjointness are fixed at the outset, baked into the model of the language, and fairly coarse-grained in the kinds of sharing they enable.
Neelakantan R. Krishnaswami, Aaron Turon, Derek Dreyer, Deepak Garg 0001
ICFP2
2012 Reagents: expressing and composing fine-grained concurrency
abstract
Efficient communication and synchronization is crucial for fine grained parallelism. Libraries providing such features, while indispensable, are difficult to write, and often cannot be tailored or composed to meet the needs of specific users. We introduce reagents, a set of combinators for concisely expressing concurrency algorithms. Reagents scale as well as their hand-coded counterparts, while providing the composability existing libraries lack.
Aaron Turon
PLDI1
2011 Modular rollback through control logging: a pair of twin functional pearls
abstract
We present a technique, based on the use of first-class control operators, enabling programs to maintain and invoke rollback logs for sequences of reversible effects. Our technique is modular, in that it provides complete separation between some library of effectful operations, and a client, "driver" program which invokes and rolls back sequences of these operations. In particular, the checkpoint mechanism, which is entirely encapsulated within the effect library, logs not only the library's effects, but also the client's control state. Thus, logging and rollback can be almost completely transparent to the client code.
Olin Shivers, Aaron Turon
ICFP2
2011 Scalable join patterns
abstract
Coordination can destroy scalability in parallel programming. A comprehensive library of scalable synchronization primitives is therefore an essential tool for exploiting parallelism. Unfortunately, such primitives do not easily combine to yield solutions to more complex problems. We demonstrate that a concurrency library based on Fournet and Gonthier's join calculus can provide declarative and scalable coordination. By declarative, we mean that the programmer needs only to write down the constraints of a coordination problem, and the library will automatically derive a correct solution. By scalable, we mean that the derived solutions deliver robust performance both as the number of processors increases, and as the complexity of the coordination problem grows. We validate our claims empirically on seven coordination problems, comparing our generic solution to specialized algorithms from the literature.
Aaron Turon, Claudio V. Russo
OOPSLA1
2011 A separation logic for refining concurrent objects
abstract
Fine-grained concurrent data structures are crucial for gaining performance from multiprocessing, but their design is a subtle art. Recent literature has made large strides in verifying these data structures, using either atomicity refinement or separation logic with rely-guarantee reasoning. In this paper we show how the ownership discipline of separation logic can be used to enable atomicity refinement, and we develop a new rely-guarantee method that is localized to the definition of a data structure. We present the first semantics of separation logic that is sensitive to atomicity, and show how to control this sensitivity through ownership. The result is a logic that enables compositional reasoning about atomicity and interference, even for programs that use fine-grained synchronization and dynamic memory allocation.
Aaron Turon, Mitchell Wand
POPL1
2009 All-Termination(T)
Panagiotis Manolios, Aaron Turon
TACAS2
2009 Regular-expression derivatives re-examined
abstract
Abstract Regular-expression derivatives are an old, but elegant, technique for compiling regular expressions to deterministic finite-state machines. It easily supports extending the regular-expression operators with boolean operations, such as intersection and complement. Unfortunately, this technique has been lost in the sands of time and few computer scientists are aware of it. In this paper, we reexamine regular-expression derivatives and report on our experiences in the context of two different functional-language implementations. The basic implementation is simple and we show how to extend it to handle large character sets (e.g., Unicode). We also show that the derivatives approach leads to smaller state machines than the traditional algorithm given by McNaughton and Yamada.
Scott Owens, John H. Reppy, Aaron Turon
J. Funct. Program.3
2007 Metaprogramming with Traits
John H. Reppy, Aaron Turon
ECOOP2