15-417 HOT CompilationSpring 2013

Karl Crary
TR Noon -- 1:30
Gates-Hillman 4101

Course Information

The course covers the implementation of compilers for higher-order typed languages such as ML. Topics include type checking, type directed compilation, elaboration, phase splitting, CPS conversion, closure conversion, allocation, and garbage collection. The course is disjoint from the standard compilers course (15-411); thus, topics such as parsing and code generation are not covered. Students will implement an ML compiler and runtime system as a term project.

Prerequisite: 15-312 Principles of Programming Languages (or equivalent)

There is no textbook for the course. Attendance in lectures is essential.

Announcements


Topics

Jan 15 Binding F-omega Typechecking for F-omega Singleton kinds Typechecking for singleton kinds Type-directed translation CPS conversion Closure conversion Allocation Module type theory Phase splitting Garbage collection Elaboration

Projects

Students will complete several projects through which they will implement an ML compiler and runtime system.

Form of projects

For each project, students will be given a Standard ML signature to implement. The intended meaning of that signature will be made clear in class. Attendance in lectures is essential.

This signature to implement will be included in a collection of resource code that we will supply. Students should not modify any resource code. (Since projects will be graded using the original resource code, any modifications will likely result in project failure.)

On some occasions, we may supply some resource code in executable form, without supplying source code. We will do so by supplying an SML of New Jersey image extended with the relevant code.

Project submission

Students should submit their projects by concatenating their source code into a single file entitled project-<i>.sml, where <i> is the project number, and copying that file into /afs/andrew/course/15/501/submit/<userid>. (Exception: For Project 6, the file should be named gc.c.)

This file should not include the resource code that we supply. Also, this file should not contain diagnostic code; submissions should not print anything to console.

Commenced projects

SML/NJ runtime binaries
Windows runtime
Linux runtime