NJPLS

Princeton -- Friday, October 1, 2004 -- Schedule

Stephanie Weirich put together the schedule.


Agenda

Arrival and Coffee: 9:30 - 10:00

Session 1: 10:00 - 10:45
Stephen Tse (University of Pennsylvania)
Lattice and Information-flow

Break: 10:45 - 11:00

Session 2: 11:00 - 12:30
Robert Grimm (New York University)
Towards Extensible C - Step 1: The Parser

Michael Hicks (University of Maryland)
Dynamic update system

Lunch: 12:30 - 1:50

Business meeting: 1:50 - 2:00

Session 3: 2:00 - 3:30
David Naumann (Stevens Institute of Technology)
Towards imperative modules

Mike Plusch (Clear Methods, Inc)
Understanding complex Web services requirements through rapid prototyping with Water


Abstracts


Stephen Tse (University of Pennsylvania)

Lattice and Information-flow

Abstract: This talk presents the design of a programming language that supports information-flow security policies and certificate-based declassification. Singleton types, combined with bounded universal and existential quantifications, connect the type system with public-key infrastructures whose digital certificates provide authorization for privileged operations such as declassification.


Robert Grimm (New York University)

Towards Extensible C - Step 1: The Parser

Abstract: Operating and distributed systems can significantly benefit from language and compiler support, even if they are written in C or C++ and not in a fully type-safe or functional programming language. Examples include libasync for building event-driven distributed services, Capriccio for building scalable multi-threaded servers, and MACEDON for building overlay networks. Unfortunately, existing solutions for extending C-like languages are either not expressive enough or targeted at compiler experts, thus preventing other system builders from reaping similar benefits. To address this problem, we are exploring a new macro facility for C, called xtc for eXTensible C, which will allow system builders to easily realize their application-specific extensions.

Our first step towards realizing xtc is a parser generator that supports easily modifiable grammars and avoids the complexities associated with extending bottom-up (LR) grammars or top-down (LL) grammars with lookahead. Our work builds on recent research on packrat parsers, which are top-down parsers that backtrack but also memoize each intermediate result (hence their name), thus ensuring linear-time performance. Our work makes this parsing technique, which has been developed in the context of functional languages, practical for C-like languages (currently, Java). Furthermore, our parser generator supports simpler grammar specifications and more convenient error reporting, while also producing better performing parsers through aggressive optimizations. In this talk, I motivate our overall research, describe our parser generator in detail, and reflect on how to structure extensible source-to-source transformers.


Michael Hicks (University of Maryland)

Dynamic update system

Abstract: Dynamic software updates can be used to fix bugs or add features to a running program without downtime. Essential for some applications and convenient for others, low-level dynamic updating support has been used for many years. However, there is little high-level understanding that would support programmers in writing dynamic updates effectively.

In an effort to bridge this gap, we present a formal calculus called Proteus for modeling dynamic software updating in C-like languages that is flexible, safe, and predictable. Proteus supports dynamic updates to functions (even those that are active) and types, allowing on-line evolution to match source-code evolution as we have observed it in practice. All updates are provably type-safe and *representation-consistent*, meaning that only one version of a given type may exist in the program at any time, simplifying reasoning and avoiding unintuitive copy-based semantics. Finally, Proteus's novel and efficient static _updateability analysis_ allows a programmer to automatically prove that an update is independent of the on-line program state, and thus predict it will not fail dynamically. Proteus admits a straightforward implementation, and we sketch how it could be extended to more advanced language features including threads.

Joint work with Gareth Stoyle, Peter Sewell, Gavin Bierman, and Iulian Neamtiu.


David Naumann (Stevens Institute of Technology)

Towards imperative modules

Abstract: Imperative and object-oriented programs make ubiquitous use of shared mutable objects. Updating a shared object can and often does transgress a boundary that was intended to be established using static constructs such as a class with private fields. We show how auxiliary fields can be used to express two state-dependent encapsulation disciplines: ownership, a kind of separation, and local co-dependence, a kind of sharing. The use of auxiliary state offers considerably more flexibility than type-based alias control. The disciplines support modular specification and verification of encapsulated object invariants and also simulations for proving program equivalence.

Based on joint work with Mike Barnett and with Anindya Banerjee.


Mike Plusch (Clear Methods, Inc)

Understanding complex Web services requirements through rapid prototyping with Water

Abstract: Designing and testing XML Web services pose special challenges to organizations and enterprises; challenges that can be uniquely addressed by rapid prototyping. Typically, Web services involve multiple evolving standards and APIs, a variety of XML encoding styles, and numerous languages and technologies. Web services can be especially hard to completely test and understand before they are fully deployed. Yet, because Web services are extremely difficult and expensive to modify after they are deployed, it is particularly important to resolve conceptual flaws early in the process. The concept of rapid prototyping with the Water language is the solution to these challenges.