Jeremy Condit

dblp:32/474 · DBLP profile ↗
← Back
13ranked-venue papers
5as first author
0since 2021 · last 2010
—ORCID · none

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

Software engineering, systems software and programming languages · 13 · 5 first-authorSystems, architecture and hardware · 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
6 papers
Programming languages and type systems · 46% Program verification · 24% Operating systems · 18%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Memory systems · 65% Hardware reliability and fault tolerance · 13% Storage systems · 11%
Network and information security
2 papers
Systems and software security · 100%

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

TopicWeightPapersLastEvidence papers
Memory systems
non-volatile memory
0.222010
Dynamically replicated memory: building reliable systems from nanoscale resistive memories · ASPLOS 2010
Better I/O through byte-addressable, persistent memory · SOSP 2009
Hardware reliability and fault tolerance
memory reliability
0.112010
Dynamically replicated memory: building reliable systems from nanoscale resistive memories · ASPLOS 2010
Memory systems › non-volatile memory
phase change memory
0.112010
Dynamically replicated memory: building reliable systems from nanoscale resistive memories · ASPLOS 2010
Memory systems › non-volatile memory
resistive memory
0.112010
Dynamically replicated memory: building reliable systems from nanoscale resistive memories · ASPLOS 2010
Systems and software security
memory safety
0.122005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
CCured in the real world · PLDI 2003
Program verification
code-level verification
0.112009
Unifying type checking and property checking for low-level code · POPL 2009
Program verification
property checking
0.112009
Unifying type checking and property checking for low-level code · POPL 2009
Programming languages and type systems
type checking
0.112009
Unifying type checking and property checking for low-level code · POPL 2009
Memory systems › non-volatile memory
persistent memory
0.112009
Better I/O through byte-addressable, persistent memory · SOSP 2009
Storage systems › non-volatile memory storage
persistent memory systems
0.112009
Better I/O through byte-addressable, persistent memory · SOSP 2009
Compilers and program optimization
optimizing compiler
0.112008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Programming languages and type systems › type systems › static typing
typed assembly language
0.112008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Programming languages and type systems › language implementation
type-preserving compilation
0.112008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Operating systems
extensible operating systems
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Programming languages and type systems
language-based safety
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Operating systems › extensible operating systems › kernel extensibility › kernel extensions
safe kernel extensions
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Programming languages and type systems › type systems
type soundness
0.112005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
Programming languages and type systems
type inference
0.012003
CCured in the real world · PLDI 2003
Operating systems › resource management › process management
user-level threads
0.012003
Capriccio: scalable threads for internet services · SOSP 2003
Parallel and multicore computing › parallel scheduling
resource-aware scheduling
0.012003
Capriccio: scalable threads for internet services · SOSP 2003
Parallel and multicore computing › parallel scheduling
thread scheduling
0.012003
Capriccio: scalable threads for internet services · SOSP 2003
Memory systems › DRAM
DRAM scaling
0.012010
Dynamically replicated memory: building reliable systems from nanoscale resistive memories · ASPLOS 2010
Compilers and program optimization
program transformation
0.022005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
CCured in the real world · PLDI 2003
Program verification
proof-carrying code
0.012008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008

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

run-time type information · 0.2instrumentation · 0.2write management · 0.1dynamic replication · 0.1physical subtyping · 0.1refinement types · 0.1type-preserving compilation · 0.1linked stack management · 0.1cooperative threading · 0.1blocking graph · 0.1asynchronous i/o · 0.1
YearPublicationVenuePosition
2010 Dynamically replicated memory: building reliable systems from nanoscale resistive memories
abstract
DRAM is facing severe scalability challenges in sub-45nm tech- nology nodes due to precise charge placement and sensing hur- dles in deep-submicron geometries. Resistive memories, such as phase-change memory (PCM), already scale well beyond DRAM and are a promising DRAM replacement. Unfortunately, PCM is write-limited, and current approaches to managing writes must de- commission pages of PCM when the first bit fails.
Engin Ipek, Jeremy Condit, Ed Nightingale, Doug Burger, Thomas Moscibroda
ASPLOS2
2009 Unifying type checking and property checking for low-level code
abstract
We present a unified approach to type checking and property checking for low-level code. Type checking for low-level code is challenging because type safety often depends on complex, program-specific invariants that are difficult for traditional type checkers to express. Conversely, property checking for low-level code is challenging because it is difficult to write concise specifications that distinguish between locations in an untyped program's heap. We address both problems simultaneously by implementing a type checker for low-level code as part of our property checker.
Jeremy Condit, Brian Hackett, Shuvendu K. Lahiri, Shaz Qadeer
POPL1
2009 Better I/O through byte-addressable, persistent memory
abstract
Modern computer systems have been built around the assumption that persistent storage is accessed via a slow, block-based interface. However, new byte-addressable, persistent memory technologies such as phase change memory (PCM) offer fast, fine-grained access to persistent storage.
Jeremy Condit, Ed Nightingale, Christopher Frost 0001, Engin Ipek, Benjamin C. Lee, Doug Burger, Derrick Coetzee
SOSP1
2008 Type-preserving compilation for large-scale optimizing object-oriented compilers
abstract
Type-preserving compilers translate well-typed source code, such as Java or C#, into verifiable target code, such as typed assembly language or proof-carrying code. This paper presents the implementation of type-preserving compilation in a complex, large-scale optimizing compiler. Compared to prior work, this implementation supports extensive optimizations, and it verifies a large portion of the interface between the compiler and the runtime system. This paper demonstrates the practicality of type-preserving compilation in complex optimizing compilers: the generated typed assembly language is only 2.3% slower than the base compiler's generated untyped assembly language, and the type-preserving compiler is 82.8% slower than the base compiler.
Chris Hawblitzel, Frances Perry, Michael Emmi, Jeremy Condit, Derrick Coetzee, Polyvios Pratikakis
PLDI5
2007 Dependent Types for Low-Level Programming
Jeremy Condit, Matthew Harren, Zachary R. Anderson, David Gay, George C. Necula
ESOP1
2007 Beyond Bug-Finding: Sound Program Analysis for Linux
Zachary R. Anderson, Eric A. Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George C. Necula
HotOS3
2006 SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques
Jeremy Condit, Zachary R. Anderson, Ilya Bagrak, Robert Ennals, Matthew Harren, George C. Necula, Eric A. Brewer
OSDI2
2005 Data Slicing: Separating the Heap into Independent Regions
Jeremy Condit, George C. Necula
CC1
2005 Thirty Years Is Long Enough: Getting Beyond C
Eric A. Brewer, Jeremy Condit, Bill McCloskey
HotOS2
2005 CCured: type-safe retrofitting of legacy software
abstract
This article describes CCured, a program transformation system that adds type safety guarantees to existing C programs. CCured attempts to verify statically that memory errors cannot occur, and it inserts run-time checks where static verification is insufficient.CCured extends C's type system by separating pointer types according to their usage, and it uses a surprisingly simple type inference algorithm that is able to infer the appropriate pointer kinds for existing C programs. CCured uses physical subtyping to recognize and verify a large number of type casts at compile time. Additional type casts are verified using run-time type information. CCured uses two instrumentation schemes, one that is optimized for performance and one in which metadata is stored in a separate data structure whose shape mirrors that of the original user data. This latter scheme allows instrumented programs to invoke external functions directly on the program's data without the use of a wrapper function.We have used CCured on real-world security-critical network daemons to produce instrumented versions without memory-safety vulnerabilities, and we have found several bugs in these programs. The instrumented code is efficient enough to be used in day-to-day operations.
George C. Necula, Jeremy Condit, Matthew Harren, Scott McPeak, Westley Weimer
ACM Trans. Program. Lang. Syst.2
2003 Why Events Are a Bad Idea (for High-Concurrency Servers)
J. Robert von Behren, Jeremy Condit, Eric A. Brewer
HotOS2
2003 CCured in the real world
abstract
CCured is a program transformation system that adds memory safety guarantees to C programs by verifying statically that memory errors cannot occur and by inserting run-time checks where static verification is insufficient.This paper addresses major usability issues in a previous version of CCured, in which many type casts required the use of pointers whose representation was expensive and incompatible with precompiled libraries. We have extended the CCured type inference algorithm to recognize and verify statically a large number of type casts; this goal is achieved by using physical subtyping and pointers with run-time type information to allow parametric and subtype polymorphism. In addition, we present a new instrumentation scheme that splits CCured's metadata into a separate data structure whose shape mirrors that of the original user data. This scheme allows instrumented programs to invoke external functions directly on the program's data without the use of a wrapper function.With these extensions we were able to use CCured on real-world security-critical network daemons and to produce instrumented versions without memory-safety vulnerabilities.
Jeremy Condit, Matthew Harren, Scott McPeak, George C. Necula, Westley Weimer
PLDI1
2003 Capriccio: scalable threads for internet services
abstract
This paper presents Capriccio, a scalable thread package for use with high-concurrency servers. While recent work has advocated event-based systems, we believe that thread-based systems can provide a simpler programming model that achieves equivalent or superior performance.By implementing Capriccio as a user-level thread package, we have decoupled the thread package implementation from the underlying operating system. As a result, we can take advantage of cooperative threading, new asynchronous I/O mechanisms, and compiler support. Using this approach, we are able to provide three key features: (1) scalability to 100,000 threads, (2) efficient stack management, and (3) resource-aware scheduling.We introduce linked stack management, which minimizes the amount of wasted stack space by providing safe, small, and non-contiguous stacks that can grow or shrink at run time. A compiler analysis makes our stack implementation efficient and sound. We also present resource-aware scheduling, which allows thread scheduling and admission control to adapt to the system's current resource usage. This technique uses a blocking graph that is automatically derived from the application to describe the flow of control between blocking points in a cooperative thread package. We have applied our techniques to the Apache 2.0.44 web server, demonstrating that we can achieve high performance and scalability despite using a simple threaded programming model.
J. Robert von Behren, Jeremy Condit, George C. Necula, Eric A. Brewer
SOSP2