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:


Paper Drafts

Fungi: Typed incremental computation with names
Matthew A. Hammer, Joshua Dunfield, Kyle Headley, Monal Narasimhamurthy, Dimitrios J. Economou

(under submission, Oct 2018)
(Extends and improves an earlier TR: Refinement types for precisely named cache locations)


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.


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.


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: