Gibbon is an experimental compiler that transforms high-level functional programs to operate on serialized data. See the README on GitHub to get started with Gibbon.

Typically, programs that process tree-like data represent trees using pointer-based data structures in memory (one heap object per-leaf and per-node) because such a layout is convenient to manipulate in a high-level programming language. This is also generally distinct from the representation of the data in serialized form on disk, which means that a program must perform some sort or marshaling when working with serialized data. Gibbon unifies the in-memory and serialized formats, transforming recursive functions to operate directly on serialized data.

Additionally, while the pointer-based structure is efficient for random access and shape-changing modifications, it can be inefficient for traversals that process most or all of a tree in bulk. The Gibbon project aims to explore optimizations of recursive tree transforms by changing how trees are stored in memory.

Currently, the Gibbon compiler has multiple front-ends: an S-expression syntax similar to Typed Racket, and a small subset of Haskell.

Publications

   
ECOOP’17 Compiling Tree Transforms to Operate on Packed Representations:
Michael Vollmer, Sarah Spall, Buddhika Chamith, Laith Sakka, Chaitanya Koparkar, Milind Kulkarni, Sam Tobin-Hochstadt, Ryan Newton [PDF]
PLDI’19 LoCal: A Language for Programs Operating on Serialized Data:
Michael Vollmer, Chaitanya Koparkar, Mike Rainey, Laith Sakka, Milind Kulkarni, Ryan R. Newton [PDF] [extended version]
ICFP’21 Efficient Tree-Traversals: Reconciling Parallelism and Dense Data Representations:
Chaitanya Koparkar, Mike Rainey, Michael Vollmer, Milind Kulkarni, Ryan R. Newton [PDF]
ISMM’24 Garbage Collection for Mostly Serialized Heaps:
Chaitanya Koparkar, Vidush Singhal, Aditya Gupta, Mike Rainey, Michael Vollmer, Artem Pelenitsyn, Sam Tobin-Hochstadt, Milind Kulkarni, Ryan R. Newton [PDF]
ECOOP’24 Optimizing Layout of Recursive Datatypes with Marmoset:
Vidush Singhal, Chaitanya Koparkar, Joseph Zullo, Artem Pelenitsyn, Michael Vollmer, Mike Rainey, Ryan Newton, Milind Kulkarni [PDF]