Safe Explicitly Staged Programming

The Fox Project at Carnegie Mellon

Threads of Research

Unifying Themes

Talk Outline

Modularity vs. Efficiency

Configuration in the Foxnet

What is Staged Computation?

Staging in Algorithm Design

Example: Just-in-Time Compilation

Partial Evaluation

Run-Time Code Generation

Example: Run-Time Code Generation

Example: Run-Time Code Generation

Why is Staged Programming Difficult?

Our Thesis

Explicit Staging

Transparency

Static Verification

Talk Outline

Types to Guide Language Design

Intensional Expressions

Manipulating Expressions

Intensional Typing

Expression Types

Expression Types Continued

Some Simple Programs

Some Other Examples

Example from Foxnet

A Logical Analysis

Requirements Revisited

Run-Time Code Generation

Reflective Programming

Partial Evaluation

Talk Outline

Programming

Modularity

Implementation

Matrix Multiplication in Fabius

Reasoning about Staged Programs

Talk Outline

Summary

Future Work

Conclusion