Programming languages, compilers, runtimes
10 papers, 1960 to 2009.
- Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I
programs as data, and eval written in itself
- An Axiomatic Basis for Computer Programming
preconditions, postconditions, and a proof rule per statement
- Scheme: An Interpreter for Extended Lambda Calculus
lexical scope, first-class procedures, and tail calls
- A Theory of Type Polymorphism in Programming
principal types, inferred without annotation
- Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs
the assignment statement as the bottleneck, and programs combined algebraically
- Efficient Implementation of the Smalltalk-80 System
dynamic translation and inline caches, the ancestor of every JIT
- Constant Propagation with Conditional Branches
constants and unreachable branches found in one lattice walk
- Efficiently Computing Static Single Assignment Form and the Control Dependence Graph
dominance frontiers, and one definition per name
- LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
a typed SSA intermediate representation as a durable artefact
- Trace-based Just-in-Time Type Specialization for Dynamic Languages
compile hot loop traces, not methods