#spreadsheet #excel-formula #excel #engine #arrow

formualizer-eval

Arrow-backed spreadsheet evaluation engine used by Formualizer

1 unstable release

Uses new Rust 2024

0.1.0 Sep 20, 2025

#986 in Math

33 downloads per month
Used in formualizer-workbook

MIT/Apache

2.5MB
59K SLoC

formualizer-eval

formualizer-eval hosts the Formualizer spreadsheet calculation engine. It turns ASTs produced by formualizer-parse into dependency graphs backed by Arrow storage, executes built-in functions, and produces Excel-compatible results with incremental recomputation.

Features

  • Arrow-backed storage – columnar sheet backing with spill overlays for fast analytical workloads.
  • Dependency graph engine – incremental graph with cycle detection, parallel evaluation, and warm-up planning.
  • Extensible functions – built-in registry plus traits for plugging in custom functions and resolvers.
  • Dialect aware – respects the parser's Excel/OpenFormula dialect choices for reference interpretation.

Usage

use formualizer_common::LiteralValue;
use formualizer_eval::engine::{Engine, EvalConfig};
use formualizer_eval::test_workbook::TestWorkbook;

let resolver = TestWorkbook::new()
    .with_cell_a1("Sheet1", "A1", LiteralValue::Number(2.0))
    .with_cell_a1("Sheet1", "A2", LiteralValue::Number(3.0));

let mut engine = Engine::new(resolver, EvalConfig::default());
// Insert sheets/formulas using the engine graph editors, then trigger evaluation:
// engine.graph.ingest_formula("Sheet1", 1, 3, "=A1+A2");
// let result = engine.evaluate().unwrap();

License

Dual-licensed under MIT or Apache-2.0, at your option.

Dependencies

~19MB
~344K SLoC