Program Repository

Hi all,

TL;DR: I’ve previously talked about the idea of a “program repository” which replaces object files with a database and then uses its capabilities to improve turn-around times and add new workflow possibilities. The project has now reached the stage where it’s starting to work and is producing some decent compile-time speed-ups, so we’d like to hear the thoughts of the wider community.

I gave a talk at the 2016 US LLVM Developers’ Meeting titled “A repository for statically compiled programs” (2016 LLVM Developers' Meeting: P. Bowen-Hugett "Toy programming demo of a repository ..." - YouTube) which was about reducing turnaround times (the time between a developer starting a build and having that code running). It did this by introducing a database as the intermediate format used for communication between the tools and then taking advantage it to enable coarsely incremental compilation, faster links, and reduced debug-info load times.

My sense was that the reception to this idea has been “cautiously positive” so we been working on fleshing out a real implementation. This is now beginning to bear fruit with a somewhat working toolchain.

Project background