Introduction
Architecture at a Glance
How the Formualizer crates and bindings fit together.
Formualizer is a layered Rust workspace with language bindings built on top.
Workspace layers
| Layer | Crates | Purpose |
|---|---|---|
| Parse | formualizer-parse | Tokenize formula text and build ASTs |
| Evaluate | formualizer-eval | Execute formulas, built-ins, and dependency-aware evaluation |
| Shared types | formualizer-common | Values, errors, references, and shared enums |
| Workbook API | formualizer-workbook | High-level sheet/cell API, recalc, custom functions, plugin seams |
| Meta crate | formualizer | Re-exports core surfaces for easier app integration |
Bindings
- Python (
bindings/python): PyO3 binding over workbook + parser/eval surfaces. - WASM/JS (
bindings/wasm):wasm-bindgenwrapper with TypeScript API.
Both bindings map to the same underlying engine semantics, so workbook behavior should stay aligned across runtimes.
Typical request flow
- Write literals/formulas to workbook cells.
- Parser converts formula text into AST.
- Evaluator resolves references/functions and computes results.
- Workbook graph tracks dependencies for incremental recalculation.
Where to inspect implementation details
- Built-ins and evaluator internals:
crates/formualizer-eval/src/ - Workbook API:
crates/formualizer-workbook/src/workbook.rs - Python binding:
bindings/python/src/ - WASM binding:
bindings/wasm/src/