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

Robert Grimm 0001

dblp:g/RobertGrimm · DBLP profile ↗
← Back
21ranked-venue papers
7as first author
0since 2021 · last 2016
0000-0002-8300-2153ORCID · verified

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

Software engineering, systems software and programming languages · 14 · 2 first-authorSystems, architecture and hardware · 3 · 3 first-authorComputer networks · 3 · 1 first-authorSecurity and privacy · 1 · 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
9 papers
Compilers and program optimization · 29% Program analysis · 22% Programming languages and type systems · 15%
Computer networks
2 papers
Content delivery and video streaming · 47% Edge and fog computing · 41% Internet of things and sensor networks · 12%
Computer architecture, parallel and distributed computing, and storage systems
4 papers
Storage systems · 72% Distributed systems · 18% Cloud and datacenter computing · 5%
Network and information security
2 papers
Authentication and access control · 61% Systems and software security · 39%
Human-computer interaction and pervasive computing
1 paper
Ubiquitous computing and smart environments · 100%

Topics — the 20 heaviest of 31, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization
parsing
0.222012
SuperC: parsing all of C by taming the preprocessor · PLDI 2012
Better extensibility through modular syntax · PLDI 2006
Program analysis
source code analysis
0.112012
SuperC: parsing all of C by taming the preprocessor · PLDI 2012
Program analysis
dynamic analysis
0.112010
Jinn: synthesizing dynamic bug detectors for foreign language interfaces · PLDI 2010
Storage systems
distributed storage
0.112009
PADS: A Policy Architecture for Distributed Storage Systems · NSDI 2009
Content delivery and video streaming
peer-to-peer content distribution
0.112007
Ensuring Content Integrity for Untrusted Peer-to-Peer Content Distribution Networks · NSDI 2007
Programming languages and type systems › interoperability
language interoperability
0.112007
Jeannie: granting java native interface developers their wishes · OOPSLA 2007
Edge and fog computing › edge computing systems
edge-assisted computing
0.112006
Na Kika: Secure Service Execution and Composition in an Open Edge-Side Computing Network · NSDI 2006
Compilers and program optimization › parsing
parser generation
0.112006
Better extensibility through modular syntax · PLDI 2006
Operating systems
extensible operating systems
0.022001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Access Control for the SPIN Extensible Operating System · S&P 1997
Authentication and access control
access control
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Systems and software security › operating system security
extensible security architecture
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Operating systems › system security › operating system security › protection mechanism
protection domains
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Programming languages and type systems
language design
0.012007
Jeannie: granting java native interface developers their wishes · OOPSLA 2007
Internet of things and sensor networks
service composition
0.012006
Na Kika: Secure Service Execution and Composition in an Open Edge-Side Computing Network · NSDI 2006
Authentication and access control › access control models
domain and type enforcement
0.011997
Access Control for the SPIN Extensible Operating System · S&P 1997
Operating systems › system security › operating system security
access control
0.011997
Access Control for the SPIN Extensible Operating System · S&P 1997
Operating systems › resource management
application-level resource management
0.011997
Application Performance and Flexibility on Exokernel Systems · SOSP 1997
Operating systems › extensible operating systems
exokernel
0.011997
Application Performance and Flexibility on Exokernel Systems · SOSP 1997
Programming languages and type systems › type systems
type soundness
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Cloud and datacenter computing › cluster resource management and scheduling
cluster resource management
0.011999
Design and implementation of a distributed virtual machine for networked computers · SOSP 1999

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

table-driven parsing · 0.1Fork-Merge LR parsing · 0.1specification inference · 0.1dynamic analysis · 0.1portable debugging · 0.1migration service · 0.1discovery service · 0.1static error detection · 0.1secure computation · 0.1packrat parsing · 0.1module system · 0.1memoization · 0.1access control enforcement · 0.1auditing · 0.0java virtual machine · 0.0distributed service architecture · 0.0domain and type enforcement · 0.0
YearPublicationVenuePosition
2016 River: an intermediate language for stream processing
abstract
This paper presents both a calculus for stream processing, named Brooklet, and its realization as an intermediate language, named River. Because River is based on Brooklet, it has a formal semantics that enables reasoning about the correctness of source translations and optimizations. River builds on Brooklet by addressing the real-world details that the calculus elides. We evaluated our system by implementing front-ends for three streaming languages, and three important optimizations, and a back-end for the System S distributed streaming runtime. Overall, we significantly lower the barrier to entry for new stream-processing languages and thus grow the ecosystem of this crucial style of programming. Copyright © 2015 John Wiley & Sons, Ltd.
Robert Soulé, Martin Hirzel, Bugra Gedik, Robert Grimm 0001
Softw. Pract. Exp.4
2015 Debugging mixed-environment programs with Blink
abstract
Programmers build large-scale systems with multiple languages to leverage legacy code and languages best suited to their problems. For instance, the same program may use Java for ease of programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which often execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment. This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (i) simple: it requires modest amounts of new code; (ii) portable: it supports multiple Java virtual machines, C compilers, operating systems, and component debuggers; and (iii) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java native interface bug diagnostics. To demonstrate the generality of interposition, we build prototypes and demonstrate debugger language transitions with C for five of six other languages (Caml, Common Lisp, C#, Perl 5, Python, and Ruby) without modifications to their debuggers. Using real-world case studies, we show that diagnosing language interface errors require prior single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. Copyright © 2014 John Wiley & Sons, Ltd.
Byeongcheol Lee, Martin Hirzel, Robert Grimm 0001, Kathryn S. McKinley
Softw. Pract. Exp.3
2012 Marco: Safe, Expressive Macros for Any Language
Byeongcheol Lee, Robert Grimm 0001, Martin Hirzel, Kathryn S. McKinley
ECOOP2
2012 SuperC: parsing all of C by taming the preprocessor
abstract
C tools, such as source browsers, bug finders, and automated refactorings, need to process two languages: C itself and the preprocessor. The latter improves expressivity through file includes, macros, and static conditionals. But it operates only on tokens, making it hard to even parse both languages. This paper presents a complete, performant solution to this problem. First, a configuration-preserving preprocessor resolves includes and macros yet leaves static conditionals intact, thus preserving a program's variability. To ensure completeness, we analyze all interactions between preprocessor features and identify techniques for correctly handling them. Second, a configuration-preserving parser generates a well-formed AST with static choice nodes for conditionals. It forks new subparsers when encountering static conditionals and merges them again after the conditionals. To ensure performance, we present a simple algorithm for table-driven Fork-Merge LR parsing and four novel optimizations. We demonstrate the effectiveness of our approach on the x86 Linux kernel.
Paul Gazzillo, Robert Grimm 0001
PLDI2
2010 A Universal Calculus for Stream Processing Languages
Robert Soulé, Martin Hirzel, Robert Grimm 0001, Bugra Gedik, Henrique Andrade, Vibhore Kumar, Kun-Lung Wu
ESOP3
2010 Jinn: synthesizing dynamic bug detectors for foreign language interfaces
abstract
Programming language specifications mandate static and dynamic analyses to preclude syntactic and semantic errors. Although individual languages are usually well-specified, composing languages is not, and this poor specification is a source of many errors in multilingual programs. For example, virtually all Java programs compose Java and C using the Java Native Interface (JNI). Since JNI is informally specified, developers have difficulty using it correctly, and current Java compilers and virtual machines (VMs) inconsistently check only a subset of JNI constraints.
Byeongcheol Lee, Ben Wiedermann, Martin Hirzel, Robert Grimm 0001, Kathryn S. McKinley
PLDI4
2009 PADS: A Policy Architecture for Distributed Storage Systems
Nalini Moti Belaramani, Jiandan Zheng, Amol Nayate, Robert Soulé, Michael Dahlin, Robert Grimm 0001
NSDI6
2009 Debug all your code: portable mixed-environment debugging
abstract
Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment.
Byeongcheol Lee, Martin Hirzel, Robert Grimm 0001, Kathryn S. McKinley
OOPSLA3
2007 Ensuring Content Integrity for Untrusted Peer-to-Peer Content Distribution Networks
Nikolaos Michalakis, Robert Soulé, Robert Grimm 0001
NSDI3
2007 Jeannie: granting java native interface developers their wishes
abstract
Higher-level languages interface with lower-level languages such as C to access platform functionality, reuse legacy libraries, or improve performance. This raises the issue of how to best integrate different languages while also reconciling productivity, safety, portability, and efficiency. This paper presents Jeannie, a new language design for integrating Java with C. In Jeannie, both Javaand C code are nested within each other in the same file and compile down to JNI, the Java platform's standard foreign function interface. By combining the two languages' syntax and semantics, Jeannie eliminates verbose boiler-plate code, enables static error detection across the language boundary, and simplifies dynamic resource management. We describe the Jeannie language and its compiler, while also highlighting lessons from composing two mature programming languages.
Martin Hirzel, Robert Grimm 0001
OOPSLA2
2006 Linguistic support for modern operating systems workshop on programming languages and operating systems 2006 (PLOS 2006)
abstract
This report gives an overview over the Workshop on Programming Languages and Operating Systems (PLOS 2006), which was colocated with ASPLOS XII. It introduces the motivation for the work-shop and gives a summary of the workshop contributions.
Christian W. Probst, Andreas Gal, Robert Grimm 0001, Olaf Spinczyk
PLOS3
2006 Na Kika: Secure Service Execution and Composition in an Open Edge-Side Computing Network
Robert Grimm 0001, Guy Lichtman, Nikolaos Michalakis, Amos Elliston, Adam Kravetz, Sajid Raza
NSDI1
2006 Better extensibility through modular syntax
abstract
We explore how to make the benefits of modularity available for syntactic specifications and present Rats!, a parser generator for Java that supports easily extensible syntax. Our parser generator builds on recent research on parsing expression grammars (PEGs), which, by being closed under composition, prioritizing choices, supporting unlimited lookahead, and integrating lexing and parsing, offer an attractive alternative to context-free grammars. PEGs are implemented by so-called packrat parsers, which are recursive descent parsers that memoize all intermediate results (hence their name). Memoization ensures linear-time performance in the presence of unlimited lookahead, but also results in an essentially lazy, functional parsing technique. In this paper, we explore how to leverage PEGs and packrat parsers as the foundation for extensible syntax. In particular, we show how make packrat parsing more widely applicable by implementing this lazy, functional technique in a strict, imperative language, while also generating better performing parsers through aggressive optimizations. Next, we develop a module system for organizing, modifying, and composing large-scale syntactic specifications. Finally, we describe a new technique for managing (global) parsing state in functional parsers. Our experimental evaluation demonstrates that the resulting parser generator succeeds at providing extensible syntax. In particular, Rats! enables other grammar writers to realize real-world language extensions in little time and code, and it generates parsers that consistently out-perform parsers created by two GLR parser generators.
Robert Grimm 0001
PLDI1
2005 Patch (1) Considered Harmful
Marc E. Fiuczynski, Robert Grimm 0001, Yvonne Coady
HotOS2
2004 System support for pervasive applications
abstract
Pervasive computing provides an attractive vision for the future of computing. Computational power will be available everywhere. Mobile and stationary devices will dynamically connect and coordinate to seamlessly help people in accomplishing their tasks. For this vision to become a reality, developers must build applications that constantly adapt to a highly dynamic computing environment. To make the developers' task feasible, we present a system architecture for pervasive computing, called one.world. Our architecture provides an integrated and comprehensive framework for building pervasive applications. It includes services, such as discovery and migration, that help to build applications and directly simplify the task of coping with constant change. We describe our architecture and its programming model and reflect on our own and others' experiences with using it.
Robert Grimm 0001, Janet Davis, Eric Lemar, Adam MacBeth, Steven Swanson, Thomas E. Anderson, Brian N. Bershad, Gaetano Borriello, Steve D. Gribble, David Wetherall
ACM Trans. Comput. Syst.1
2001 Systems Directions for Pervasive Computing
abstract
Pervasive computing, with its focus on users and their tasks rather than on computing devices and technology, provides an attractive vision for the future of computing. But, while hardware and networking infrastructure to realize this vision are becoming a reality, precious few applications run in this infrastructure. We believe that this lack of applications stems largely from the fact that it is currently too hard to design, build, and deploy applications in the pervasive computing space. In this paper, we argue that existing approaches to distributed computing are flawed along three axes when applied to pervasive computing; we sketch out alternatives that are better suited for this space. First, application data and functionality need to be kept separate, so that they can evolve gracefully, in a global computing infrastructure. Second, applications need to be able to acquire any resource they need at any time, so that they can continuously provide their services in a highly dynamic environment. Third, pervasive computing requires a common system platform, allowing applications to be run across the range of devices and to be automatically distributed and installed.
Robert Grimm 0001, Janet Davis, Ben Hendrickson, Eric Lemar, Adam MacBeth, Steven Swanson, Thomas E. Anderson, Brian N. Bershad, Gaetano Borriello, Steve D. Gribble, David Wetherall
HotOS1
2001 Separating access control policy, enforcement, and functionality in extensible systems
abstract
Extensible systems, such as Java or the SPIN extensible operating system, allow for units of code, or extensions, to be added to a running system in almost arbitrary fashion. Extensions closely interact through low-latency but type-safe interfaces to form a tightly integrated system. As extensions can come from arbitrary sources, not all of whom can be trusted to conform to an organization's security policy, such structuring raises the question of how security constraints are enforced in an extensible system. In this paper, we present an access control mechanism for extensible systems to address this problem. Our access control mechanism decomposes access control into a policy-neutral enforcement manager and a security policy manager, and it is transparent to extensions in the absence of security violations. It structures the system into protection domains, enforces protection domains through access control checks, and performs auditing of system operations. The access control mechanism works by inspecting extensions for their types and operations to determine which abstractions require protection and by redirecting procedure or method invocations to inject access control operations into the system. We describe the design of this access control mechanism, present an implementation within the SPIN extensible operating systems, and provide a qualitative as well as quantitative evaluation of the mechanism.
Robert Grimm 0001, Brian N. Bershad
ACM Trans. Comput. Syst.1
1999 Design and implementation of a distributed virtual machine for networked computers
abstract
This paper describes the motivation, architecture and performance of a distributed virtual machine (DVM) for networked computers. DVMs rely on a distributed service architecture to meet the manageability, security and uniformity requirements of large, heterogeneous clusters of networked computers. In a DVM, system services, such as verification, security enforcement, compilation and optimization, are factored out of clients and located on powerful network servers. This partitioning of system functionality reduces resource requirements on network clients, improves site security through physical isolation and increases the manageability of a large and heterogeneous network without sacrificing performance. Our DVM implements the Java virtual machine, runs on x86 and DEC Alpha processors and supports existing Java-enabled clients.
Emin Gün Sirer, Robert Grimm 0001, Arthur J. Gregory, Brian N. Bershad
SOSP2
1997 Application Performance and Flexibility on Exokernel Systems
abstract
The exokernel operating system architecture safely gives untrusted software efficient control over hardware and software resources by separating management from protection. This paper describes an exokernel system that allows specialized applications to achieve high performance without sacrificing the performance of unmod-ified UNIX programs. It evaluates the exokernel architecture by measuring end-to-end application performance on Xok, an exo-kernel for Intel x86-based computers, and by comparing Xok’s performance to the performance of two widely-used 4.4BSD UNIX systems (FreeBSD and OpenBSD). The results show that common unmodified UNIX applications can enjoy the benefits of exoker-nels: applications either perform comparably on Xok/ExOS and the BSD UNIXes, or perform significantly better. In addition, the results show that customized applications can benefit substantially from control over their resources (e.g., a factor of eight for a Web server). This paper also describes insights about the exokernel ap-proach gained through building three different exokernel systems, and presents novel approaches to resource multiplexing. 1
M. Frans Kaashoek, Dawson R. Engler, Gregory R. Ganger, Héctor M. Briceño, Russell Hunt, David Mazières, Thomas Pinckney, Robert Grimm 0001, John Jannotti, Kenneth Mackenzie
SOSP8
1997 Access Control for the SPIN Extensible Operating System
abstract
Summary form only given. In the SPIN operating system (B.N. Bershad et al., 1995; Przemyslaw Pardyak and B.N. Bershad, 1996) built at the University of Washington, we are experimenting with a version of domain and type enforcement (DTE) (L. Badger et al., 1995) that has been extended to address the security concerns of extensible systems. The SPIN operating system defines an extension infrastructure, together with a core set of extensible services, that allows for the fine grained and safe composition of extensions within the operating system kernel. Extensions are written in Modula-3, a type-safe programming language, and execute within the same address space. They interact by calling other parts of the system and by extending existing interfaces to provide new services. A central event dispatcher supports both mechanisms: to call on a service, an extension raises an event, and, to extend an existing interface, an extension registers a handler for that event. The invocation mechanism for events is simply a procedure call, and no context switches are required for the interaction between subsystems (since all extensions are co-located in the same address space).
Robert Grimm 0001, Brian N. Bershad
S&P1
1996 Atomic Recovery Units: Failure Atomicity for Logical Disks
abstract
Atomic recovery units (ARUs) are a mechanism that allows several logical disk operations to be executed as a single atomic unit with respect to failures. For example, ARUs can be used during file creation to update several pieces of file meta-data atomically. ARUs simplify systems, as they isolate issues of atomicity within the logical disk system, ARUs are designed as part of the Logical Disk (LD), which provides an interface to disk storage that separates file and disk management by using logical block numbers and block lists. This paper discusses the semantics of concurrent ARUs, as well as the concurrency control they require. A prototype implementation in a log-structured logical disk system is presented and evaluated. The performance evaluation shows that the run-time overhead to support concurrent ARUs is negligible for Read and Write operations, and small but pronounced for file creation (4.0%-7.2%) and deletion (17.9%-20.5%) which mainly manipulate meta-data. The low overhead (when averaged over file creation, writing, reading, and deletion) for concurrent ARUs shows that issues of atomicity can be successfully isolated within the disk system.
Robert Grimm 0001, Wilson C. Hsieh, Wiebren de Jonge, M. Frans Kaashoek
ICDCS1