Build From Source
Most contributors only need make build and make test. The other targets exist for surface-specific work (WASM, Python, Native Node) and release-time staging.
Glossary: staging
Copying built artifacts into the package layout each surface expects — packages/npm/dist/, packages/python/formulon/_wasm/, the Native Node addon directory. Staging is what makes npm test / pytest / node -e '…' reach the freshly built core.
Clone the repository:
git clone https://github.com/libraz/formulon.git
cd formulonNative debug build
make build
make testThis configures build/ with CMake and runs the fast CTest suite, excluding SLOW / LOAD labels. Use this loop for almost all core changes.
Release build
make releaseUse the release build before measuring performance or shipping artifacts. Debug builds carry extra assertions that distort timings.
WASM package
Requires Emscripten:
make wasm
make test-wasm
make npm-package
make npm-test
make npm-pack
make size-checkmake npm-package stages formulon.js, formulon.wasm, and formulon.d.ts into packages/npm/dist/. make size-check is what enforces the Size budgets — run it before any change that could pull in new code.
Python package
Requires CMake, Python 3.9+, setuptools, and wheel:
make python-package
make python-test
make python-wheelThe wheel stages formulon_capi.wasm into packages/python/formulon/_wasm/ and builds a py3-none-any package; wasmtime supplies the platform-specific runtime wheel at install time. No native compiler is needed at install time.
Native Node package
make node-native
make node-package
make node-testThis builds and stages the N-API addon. Prebuilt binaries are published per (os, arch) from CI; the local target is mostly for development.
Oracle tooling
Oracle generation requires Excel and host-specific setup:
make oracle-setup
make oracle-gen
make oracle-verifyCI verification reads committed goldens and does not start Excel. See Oracle contribution for the contributor flow.
Pick a minimal working set
A contributor who only changes the formula evaluator usually needs make build && make test. A contributor who changes the WASM packaging usually needs make wasm && make npm-test && make size-check. Few changes need every target.
Read next
- Test matrix — which test target catches which category.
- Size budgets — the WASM ceiling enforced by
size-check. - Release checklist — what runs before a release.