• Previous conferences
  • Contact Us
 
  • spacer
  • spacer
  • spacer
  • spacer
Hilton Portland & Executive Tower · Portland Oregon, USA
spacer
top

Keynote Speakers

spacer
Ivan Sutherland

spacer
Markus Püschel

spacer
Brendan Eich
bottom
top

Co-located Events

PLoP
GPCE
bottom

OOPSLA 4: Award Papers

Program - OOPSLA Research Papers

Wed 10:30-12:00 pm - Pavilion East & West
Hybrid Partial Evaluation
Amin Shali, Department of Computer Science, University of Texas at Austin, United States
William R. Cook, Department of Computer Science, University of Texas at Austin, United States

Hybrid partial evaluation (HPE) is a pragmatic approach to partial evaluation that borrows ideas from both online and offline partial evaluation. HPE performs offline-style specialization using an online approach without static binding time analysis. The goal of HPE is to provide a practical and predictable level of optimization for programmers, with an implementation strategy that fits well within existing compilers or interpreters. HPE requires the programmer to specify where partial evaluation should be applied. It provides no termination guarantee and reports errors in situations that violate simple binding time rules, or have incorrect use of side effects in compile-time code. We formalize HPE for a small imperative object-oriented language and describe Civet, a straightforward implementation of HPE as a relatively simple extension of a Java compiler. Code optimized by Civet performs as well as and in some cases better than the output of a state-of-the-art offline partial evaluator.

SugarJ: Library-based Syntactic Language Extensibility
Sebastian Erdweg, University of Marburg, Germany
Tillmann Rendel, University of Marburg, Germany
Christian Kästner, University of Marburg, Germany
Klaus Ostermann, University of Marburg, Germany

Existing approaches to extend a programming language with syntactic sugar often leave a bitter taste, because they cannot be used with the same ease as the main extension mechanism of the programming language—-libraries. Sugar libraries are a novel approach for syntactically extending a programming language within the language. A sugar library is like an ordinary library, but can, in addition, export syntactic sugar for using the library. Sugar libraries maintain the composability and scoping properties of ordinary libraries and are hence particularly well-suited for embedding a multitude of domain-specific languages into a host language. They also inherit self-applicability from libraries, which means that sugar libraries can provide syntactic extensions for the definition of other sugar libraries. To demonstrate the expressiveness and applicability of sugar libraries, we have developed SugarJ, a language on top of Java, SDF and Stratego, which supports syntactic extensibility. SugarJ employs a novel incremental parsing technique, which allows changing the syntax within a source file. We demonstrate SugarJ by five language extensions, including embeddings of XML and closures in Java, all available as sugar libraries. We illustrate the utility of self-applicability by embedding XML Schema, a metalanguage to define XML languages.

Reactive Imperative Programming with Dataflow Constraints
Camil Demetrescu, Sapienza University of Rome, Italy
Irene Finocchi, Sapienza University of Rome, Italy
Andrea Ribichini, Sapienza University of Rome, Italy

Dataflow languages provide natural support for specifying constraints between objects in dynamic applications, where programs need to react efficiently to changes of their environment. Researchers have long investigated how to take advantage of dataflow constraints by embedding them into procedural languages. Previous mixed imperative/dataflow systems, however, require syntactic extensions or libraries of ad hoc data types for binding the imperative program to the dataflow solver. In this paper we propose a novel approach that smoothly combines the two paradigms without placing undue burden on the programmer.

In our framework, programmers can define ordinary statements of the imperative host language that enforce constraints between objects stored in special memory locations designated as ``reactive''. Differently from previous approaches, reactive objects can be of any legal type in the host language, including primitive data types, pointers, arrays, and structures. Statements defining constraints are automatically re-executed every time their input memory locations change, letting a program behave like a spreadsheet where the values of some variables depend upon the values of other variables. The constraint solving mechanism is handled transparently by altering the semantics of elementary operations of the host language for reading and modifying objects. We provide a formal semantics and describe a concrete embodiment of our technique into C/C++, showing how to implement it efficiently in conventional platforms using off-the-shelf compilers. We discuss common coding idioms and relevant applications to reactive scenarios, including incremental computation, observer design pattern, and data structure repair. The performance of our implementation is compared to ad hoc problem-specific change propagation algorithms, as well as to language-centric approaches such as self-adjusting computation and subject/observer communication mechanisms, showing that the proposed approach is efficient in practice.

Two for the Price of One: A Model for Parallel and Incremental Computation
Sebastian Burckhardt, Microsoft Research, United States
Daan Leijen, Microsoft Research, United States
Caitlin Sadowski, University of California at Santa Cruz, United States
Jaeheon Yi, University of California at Santa Cruz, United States
Thomas Ball, Microsoft Research, United States

Parallel or incremental versions of an algorithm can significantly outperform their counterparts, but are often difficult to develop. Programming models that provide appropriate abstractions to decompose data and tasks can simplify parallelization. We show in this work that the same abstractions can enable both parallel and incremental execution.

We present the first known algorithm for parallel self-adjusting computation. This algorithm extends a deterministic parallel programming model (concurrent revisions) with support for recording and repeating computations. On record, we construct a dynamic dependence graph of the parallel computation. On repeat, we reexecute only parts whose dependencies have changed.

We implement and evaluate our idea by studying five example programs, including a realistic multi-pass CSS layout algorithm. We describe programming techniques that proved particularly useful to improve the performance of self-adjustment in practice. Our final results show significant speedups on all examples (up to 37x on an 8-core machine). These speedups are well beyond what can be achieved by parallelization alone, while requiring a comparable effort by the programmer.

 
 
 
 
 

SPLASH GENERAL CHAIR

Cristina V. Lopes
UC Irvine
chair@splashcon.org

OOPSLA PROG. CHAIR

Kathleen Fisher
Tufts University
oopsla@splashcon.org

ONWARD! PROG. CHAIR

Eelco Visser
Delft University
onward@splashcon.org

WAVEFRONT PROG. CHAIR

Allen Wirfs-Brock
Mozilla
wavefront@splashcon.org

spacer

Sponsored by ACM SIGPLAN

 
 
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.