Karl Naden

dblp:40/9656 · DBLP profile ↗
← Back
5ranked-venue papers
1as first author
0since 2021 · last 2014
—ORCID · none

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

Software engineering, systems software and programming languages · 5 · 1 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
5 papers
Programming languages and type systems · 81% Concurrent programming · 16% Runtime systems and virtual machines · 3%

Topics — the 8 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.532014
Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach · ACM Trans. Program. Lang. Syst. 2014
A type system for borrowing permissions · POPL 2012
Permission-based programming languages · ICSE 2011
Programming languages and type systems › language-based security
fractional permissions
0.112012
A type system for borrowing permissions · POPL 2012
Programming languages and type systems
language design
0.112011
First-class state change in plaid · OOPSLA 2011
Programming languages and type systems
language semantics
0.112011
First-class state change in plaid · OOPSLA 2011
Programming languages and type systems › language semantics › formal semantics › operational semantics
state transition semantics
0.112011
First-class state change in plaid · OOPSLA 2011
Runtime systems and virtual machines
concurrent runtime systems
0.112014
Æminium: a permission based concurrent-by-default programming language approach · PLDI 2014
Concurrent programming
concurrency correctness
0.012012
A type system for borrowing permissions · POPL 2012
Concurrent programming
synchronization
0.012011
Permission-based programming languages · ICSE 2011

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

unique permissions · 0.1shared permissions · 0.1local permissions · 0.1immutable permissions · 0.1change permissions · 0.1
YearPublicationVenuePosition
2014 Æminium: a permission based concurrent-by-default programming language approach
abstract
The aim of ÆMINIUM is to study the implications of having a concurrent-by-default programming language. This includes language design, runtime system, performance and software engineering considerations.
Sven Stork, Karl Naden, Joshua Sunshine, Manuel Mohr, Alcides Fonseca, Jonathan Aldrich
PLDI2
2014 Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach
abstract
Writing concurrent applications is extremely challenging, not only in terms of producing bug-free and maintainable software, but also for enabling developer productivity. In this article we present the Æminium concurrent-by-default programming language. Using Æminium programmers express data dependencies rather than control flow between instructions. Dependencies are expressed using permissions, which are used by the type system to automatically parallelize the application. The Æminium approach provides a modular and composable mechanism for writing concurrent applications, preventing data races in a provable way. This allows programmers to shift their attention from low-level, error-prone reasoning about thread interleaving and synchronization to focus on the core functionality of their applications. We study the semantics of Æminium through μ Æminium, a sound core calculus that leverages permission flow to enable concurrent-by-default execution. After discussing our prototype implementation we present several case studies of our system. Our case studies show up to 6.5X speedup on an eight-core machine when leveraging data group permissions to manage access to shared state, and more than 70% higher throughput in a Web server application.
Sven Stork, Karl Naden, Joshua Sunshine, Manuel Mohr, Alcides Fonseca, Jonathan Aldrich
ACM Trans. Program. Lang. Syst.2
2012 A type system for borrowing permissions
abstract
In object-oriented programming, unique permissions to object references are useful for checking correctness properties such as consistency of typestate and noninterference of concurrency. To be usable, unique permissions must be borrowed --- for example, one must be able to read a unique reference out of a field, use it for something, and put it back. While one can null out the field and later reassign it, this paradigm is ungainly and requires unnecessary writes, potentially hurting cache performance. Therefore, in practice borrowing must occur in the type system, without requiring memory updates. Previous systems support borrowing with external alias analysis and/or explicit programmer management of fractional permissions. While these approaches are powerful, they are also awkward and difficult for programmers to understand. We present an integrated language and type system with unique, immutable, and shared permissions, together with new local permissions that say that a reference may not be stored to the heap. Our system also includes change permissions such as unique>>unique and unique>>none that describe how permissions flow in and out of method formal parameters. Together, these features support common patterns of borrowing, including borrowing multiple local permissions from a unique reference and recovering the unique reference when the local permissions go out of scope, without any explicit management of fractions in the source language. All accounting of fractional permissions is done by the type system "under the hood." We present the syntax and static and dynamic semantics of a formal core language and state soundness results. We also illustrate the utility and practicality of our design by using it to express several realistic examples.
Karl Naden, Robert Bocchino, Jonathan Aldrich, Kevin Bierhoff
POPL1
2011 Permission-based programming languages
abstract
Linear permissions have been proposed as a lightweight way to specify how an object may be aliased, and whether those aliases allow mutation. Prior work has demonstrated the value of permissions for addressing many software engineering concerns, including information hiding, protocol checking, concurrency, security, and memory management.
Jonathan Aldrich, Ronald Garcia, Mark Hahnenberg, Manuel Mohr, Karl Naden, Darpan Saini, Sven Stork, Joshua Sunshine, Éric Tanter, Roger Wolff
ICSE5
2011 First-class state change in plaid
abstract
Objects model the world, and state is fundamental to a faithful modeling. Engineers use state machines to understand and reason about state transitions, but programming languages provide little support for building software based on state abstractions. We propose Plaid, a language in which objects are modeled not just in terms of classes, but in terms of changing abstract states. Each state may have its own representation, as well as methods that may transition the object into a new state. A formal model precisely defines the semantics of core Plaid constructs such as state transition and trait-like state composition. We evaluate Plaid through a series of examples taken from the Plaid compiler and the standard libraries of Smalltalk and Java. These examples show how Plaid can more closely model state-based designs, enhancing understandability, enhancing dynamic error checking, and providing reuse benefits.
Joshua Sunshine, Karl Naden, Sven Stork, Jonathan Aldrich, Éric Tanter
OOPSLA2