Development setup¶
You can develop any one surface independently, but a contribution that adds an algorithm or changes the format usually touches all three. Set all of them up once.
Clone with submodules¶
C / CLI¶
See CLI build from source for toolchain prereqs.
Python¶
For debugging / Valgrind:
See Build modes.
Node.js¶
Pre-commit / formatting¶
The C code uses clang-format; Python uses ruff; TypeScript uses
prettier + eslint. Run formatters before opening a PR — the CI
checks them.
Conventional commits¶
Commit messages should follow Conventional Commits (feat:, fix:,
chore:, etc.). cz commit interactively builds a valid message: