Kevin Bierhoff

dblp:28/337 · DBLP profile ↗
← Back
8ranked-venue papers
5as first author
1since 2021 · last 2022
0000-0002-6563-5360ORCID · corroborated

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

Software engineering, systems software and programming languages · 7 · 5 first-author · 1 since 2021Artificial intelligence and machine learning · 1Theory of computation · 1

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 · 86% Program analysis · 8% Concurrent programming · 5%
Databases, data mining, and information retrieval
1 paper
Information retrieval · 50% Data mining · 50%

Topics — the 12 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.732022
Wildcards need witness protection · Proc. ACM Program. Lang. 2022
A type system for borrowing permissions · POPL 2012
Verifying correct usage of atomic blocks and typestate · OOPSLA 2008
Programming languages and type systems › type theory
existential types
0.612022
Wildcards need witness protection · Proc. ACM Program. Lang. 2022
Programming languages and type systems › type systems
type soundness
0.612022
Wildcards need witness protection · Proc. ACM Program. Lang. 2022
Programming languages and type systems › type systems
subtyping
0.212022
Wildcards need witness protection · Proc. ACM Program. Lang. 2022
Programming languages and type systems › language-based security
fractional permissions
0.112012
A type system for borrowing permissions · POPL 2012
Information retrieval
e-commerce search
0.112007
Red Opal: product-feature scoring from reviews · EC 2007
Data mining › text mining
sentiment analysis
0.112007
Red Opal: product-feature scoring from reviews · EC 2007
Program analysis › static analysis › pointer analysis
aliasing analysis
0.112007
Modular typestate checking of aliased objects · OOPSLA 2007
Program analysis › type-based analysis
typestate analysis
0.112007
Modular typestate checking of aliased objects · OOPSLA 2007
Program analysis
dynamic analysis
0.112005
Lightweight object specification with typestates · ESEC/SIGSOFT FSE 2005
Software testing › protocol testing
protocol conformance checking
0.112005
Lightweight object specification with typestates · ESEC/SIGSOFT FSE 2005
Concurrent programming
concurrency correctness
0.012012
A type system for borrowing permissions · POPL 2012

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

static analysis · 0.7core calculus · 0.6unique permissions · 0.1shared permissions · 0.1local permissions · 0.1immutable permissions · 0.1change permissions · 0.1type system · 0.1access permissions · 0.1review mining · 0.1modular verification · 0.1
YearPublicationVenuePosition
2022 Wildcards need witness protection
abstract
In this paper, we show that the unsoundness discovered by Amin and Tate (2016) in Java’s wildcards is avoidable, even in the absence of a nullness-aware type system. The key insight of this paper is that soundness in type systems that implicitly introduce existential types through subtyping hinges on still making sure there are suitable witness types when introducing existentially quantified type variables. To show that this approach is viable, this paper formalizes a core calculus and proves it sound. We used a static analysis based on our approach to look for potential issues in a vast corpus of Java code and found none (with 1 false positive). This confirms both that Java's unsoundness has minimal practical consequence, and that our approach can avoid it entirely with minimal false positives.
Kevin Bierhoff
Proc. ACM Program. Lang.1
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
POPL4
2009 Practical API Protocol Checking with Access Permissions
Kevin Bierhoff, Nels E. Beckman, Jonathan Aldrich
ECOOP1
2008 Verifying correct usage of atomic blocks and typestate
abstract
The atomic block, a synchronization primitive provided to programmers in transactional memory systems, has the potential to greatly ease the development of concurrent software. However, atomic blocks can still be used incorrectly, and race conditions can still occur at the level of application logic. In this paper, we present a intraprocedural static analysis, formalized as a type system and proven sound, that helps programmers use atomic blocks correctly. Using access permissions, which describe how objects are aliased and modified, our system statically prevents race conditions and enforces typestate properties in concurrent programs. We have implemented a prototype static analysis for the Java language based on our system and have used it to verify several realistic examples.
Nels E. Beckman, Kevin Bierhoff, Jonathan Aldrich
OOPSLA2
2007 Modular typestate checking of aliased objects
abstract
Objects often define usage protocols that clients must follow inorder for these objects to work properly. Aliasing makes itnotoriously difficult to check whether clients and implementations are compliant with such protocols. Accordingly, existing approaches either operate globally or severely restrict aliasing.
Kevin Bierhoff, Jonathan Aldrich
OOPSLA1
2007 Red Opal: product-feature scoring from reviews
abstract
Online shoppers are generally highly task-driven: they have a certain goal in mind, and they are looking for a product with features that are consistent with that goal. Unfortunately, finding a product with specific features is extremely time-consuming using the search functionality provided by existing web sites.In this paper, we present a new search system called Red Opal that enables users to locate products rapidly based on features. Our fully automatic system examines prior customer reviews, identifies product features, and scores each product on each feature. Red Opal uses these scores to determine which products to show when a user specifies a desired product feature. We evaluate our system on four dimensions: precision of feature extraction, efficiency of feature extraction, precision of product scores, and estimated time savings to customers. On each dimension, Red Opal performs better than a comparison system.
Christopher Scaffidi, Kevin Bierhoff, Eric Chang, Mikhael Felker, Herman Ng, Chun Jin
EC2
2007 Checking the hardware-software interface in spec#
abstract
Research operating systems are often written in type-safe, highlevel languages. These languages perform automatic static and dynamic checks to give basic assurances about run-time behavior. Yet such operating systems still rely on unsafe, low-level code to communicate with hardware, with little or no automated checking of the correctness of the hardware-software interaction. This paper describes experience using the Spec # language and Boogie verifier to statically specify and statically verify the safety of a driver's interaction with a network interface, including the safety of DMA. 1.
Kevin Bierhoff, Chris Hawblitzel
PLOS@SOSP1
2005 Lightweight object specification with typestates
abstract
Previous work has proven typestates to be useful for modeling protocols in object-oriented languages. We build on this work by addressing substitutability of subtypes as well as improving precision and conciseness of specifications. We propose a specification technique for objects based on abstract states that incorporates state refinement, method refinement, and orthogonal state dimensions. Union and intersection types form the underlying semantics of method specifications. The approach guarantees substitutability and behavioral subtyping. We designed a dynamic analysis to check existing object-oriented software for protocol conformance and validated our approach by specifying two standard Java libraries. We provide preliminary evidence for the usefulness of our approach.
Kevin Bierhoff, Jonathan Aldrich
ESEC/SIGSOFT FSE1