#compiler #spreadsheet

inc-complete

A library for writing incremental computations that re-execute the minimum number of steps when an input is changed

16 releases (5 breaking)

Uses new Rust 2024

new 0.6.0 Jul 16, 2025
0.5.4 Jul 16, 2025
0.5.2 Jun 30, 2025
0.4.2 Jun 20, 2025
0.1.1 Jun 2, 2025

#15 in #spreadsheet

Download history 208/week @ 2025-05-28 17/week @ 2025-06-04 687/week @ 2025-06-11 300/week @ 2025-06-18 324/week @ 2025-06-25 48/week @ 2025-07-02 160/week @ 2025-07-09

969 downloads per month

Custom license

74KB
1.5K SLoC

Inc-Complete

Inc-Complete is a library for writing incremental computations that re-execute the minimum number of steps when an input is changed. Example uses:

  • Compilers: re-compile only the portion of a program which has changed
  • Spreadsheets: re-compute only formulas which rely on changed cells

Status

This library is in an early but working state. Expect the API to change over time, and expect certain patterns to be somewhat obtuse. Additionally, while serialization is working, the format is not currently stable across releases of inc-complete.

Current Features

  • Load from disk
    • Manual save and load to disk to restart from where the previous program run left off.
    • Just serialize and deserialize the central Db object.
  • Thread-safe

Planned Features & Roadmap

  • Accumulator abstraction for collecting lists of items across computations (useful for compiler errors)
  • Support for interning arbitrary data
  • Cyclical dependency check for debugging
  • Manually invoked garbage collection for old cached computation results

Quick Start

See the docs for a quick start explanation on how to use this library.

Also see https://github.com/jfecher/modern-compiler-architecture for a full example of an incremental and concurrent compiler using inc-complete.

Dependencies

~2.5–8.5MB
~65K SLoC