The course grade breakdown is: 30% projects, 30% presentation, 30% final, 10% quizzes.
In January we will cover the state of the art through lectures and discussion, and in February and March we will explore future research through student-led presentations. The schedule of presentations and discussions will be posted here as it is developed.
|Feb 2||Typed Lua: An Optional Type System for Lua. Andre Murbach Maidl, Fabio Mascarenhas and Roberto Ierusalimschy. Dyla 2014.|
|Feb 9||List-based Monadic Computations for Dynamically Typed Languages. Wim Vanderbauwhede. Dyla 2014.|
|Feb 11||Self-Optimizing AST Interpreters. Thomas Wuerthinger et al. DLS 2012.|
|Feb 23||Surgical Precision JIT Compilers. Tiark Rompf et al. PLDI 2014.|
|Feb 25||Abstracting Abstract Control. J. Ian Johnson and David Van Horn. DLS 2014 (SPLASH 2014).|
|Mar 4||The Impact of Optional Type Information on JIT Compilation of Dynamically Typed Languages. Mason Chang et al. DLS 2011 (SPLASH 2011).|
|Mar 9||Printing Floating-Point Numbers Quickly and Accurately with Integers. Florian Loitsch. PLDI 2010.|
|Mar 11||An overview of LuaJIT (no paper).|
|Mar 16||Trace-based Just-in-Time Type Specialization for Dynamic Languages. Andreas Gal et al. PLDI 2009.|
|Mar 18||An Intermediate Representation for Speculative Optimizations in a Dynamic Compiler. Gilles Duboscq et al. VMIL 2013.|
|Mar 23||Static vs. Dynamic Type Systems: An Empirical Study About the Relationship Between Type Casts and Development Time. Andreas Stuchlik and Stefan Hanenberg. DLS 2011 (SPLASH 2011).|
|Mar 25||Race Detection for Web Applications. Boris Petrov et al. PLDI 2012.|
|Mar 30||Call Sequence Prediction through Probabilistic Calling Automata. Zhijia Zhao et al. OOPSLA 2014 (SPLASH 2014).|
|Apr 1||Tracing the Meta-Level: PyPy's Tracing JIT Compiler. Carl Friedrich Bolz et al. ICOOOLPS 2009 (ECOOP 2009).|
This course has two software implementation projects, accounting collectively for 30% of the grade.Project 1: Inline caching
The first project is to implement inline caching, as discussed in class, in SDyn. A patch, sdyn-1.1-inline-cache-scaffolding.diff.gz, which adds the scaffolding to implement inline caching. Alternatively you may download sdyn-1.1-w-inline-cache-scaffolding.tar.gz, which is sdyn 1.1 with the patch preapplied.
For each cacheable access site, the JIT creates a SDyn_InlineCache object. An SDyn_InlineCache* is passed to each function which accesses members of objects. You must define SDyn_InlineCache in h/sdyn/value.h , and use it in the relevant functions in value.c to implement caching of object shapes. Submit completed projects as tarballs to the instructor by email by 23 February, 11:59PM.
This list of suggested papers is here.
To explore “the gritty details”, this course will use a simple dynamic language implementation called SDyn. As a JIT, SDyn is not intrinsically portable: At present, it works on x86_64 Unix only. Slightly specialized versions of SDyn will be provided for the projects. SDyn is available here.