Programming Language Abstractions for Incremental Computation

Incremental computing provides a means of computing a new input/output pair (I2,O2), 
			based on an old input output pair (I1,O1).  
			The key technique is represented by a function ΔP, 
			which relates changes in the input to changes to the output. A program P is incremental if repeating P with a changed input is faster than from-scratch recomputation.

Incremental computations are ubiquitous in everyday computer systems.

Adapton offers programming language abstractions
for incremental computation.


Latest: This is the latest implementation of Adapton:

Legacy: These were the first implementations of Adapton and Nominal Adapton:



Incremental Computation with Adapton (May 2017)

Matthew A Hammer
Facebook (PLEMM), Redwood City, CA. May 2017.

Sparse Adapton (Sept 2015)

Kyle Headley
ICFP Student Research Contest. September 2015.

Incremental Computation with Adapton (March 2015)

Matthew A Hammer
University of Colorado, Boulder. March 2015.

Paper Drafts

Refinement types for precisely named cache locations
(under submission, Oct 2017)
Matthew A. Hammer, Joshua Dunfield, Dimitrios J. Economou, Monal Narasimhamurthy


Incremental Computation with Names (OOPSLA 2015)

Matthew A. Hammer, Joshua Dunfield, Kyle Headley, Nicholas Labich, Jeffrey S. Foster, Michael Hicks, David Van Horn
Object-oriented Programming, Systems, Languages, and Applications (OOPSLA 2015)
Pittsburgh, USA. October 2015.

Adapton: Composable, Demand-Driven Incremental Computation (PLDI 2014)

Matthew A. Hammer, Yit Phang Khoo, Michael Hicks and Jeffrey S. Foster
Programming Language Design and Implementation (PLDI 2014).
Edinburgh, Scotland. June 2014.


CU Programming Languages and Verification Programming Languages at University of Maryland




Funding Acknowledgments

Our academic research on Adapton has been funded through various sources, both past and present: