- OCaml 84.1%
- Dune 9.8%
- Makefile 5%
- Common Lisp 1.1%
| bin | ||
| lib | ||
| test | ||
| .gitignore | ||
| .ocamlformat | ||
| demo.nikki.cl | ||
| dune-project | ||
| Makefile | ||
| nikki.opam | ||
| nikki.png | ||
| README.md | ||
| TODO.md | ||
Nikki
A Lisp that targets the NaraVM.
Setup
Load the active opam environment and install the project dependencies:
eval "$(opam env)"
opam install . --deps-only --with-test
Common commands
dune build # Build the project
dune exec nikki # Run the compiler
dune exec nikki -- <arguments> # Run it with arguments
dune runtest # Run all tests
dune utop lib # Open a REPL with the Nikki library loaded
dune build --watch # Rebuild when files change
dune clean # Remove build artifacts
The same commands are available through make:
make build
make run ARGS="<arguments>"
make test
make repl
make watch
make clean
make deps
Keeping nikki.opam in sync
The project enables (generate_opam_files true) in dune-project. This makes
dune-project the source of truth for package metadata and dependencies, while
nikki.opam is the generated package description consumed by opam.
Edit fields such as authors, source, synopsis, and depends in
dune-project, not directly in nikki.opam. Then regenerate the opam file:
dune build @opam
dune promotion apply nikki.opam
The first command generates a candidate and reports a diff when the checked-in
file is stale. The second accepts that candidate and replaces nikki.opam.
Review the result, then commit both files together.
dune runtest also checks opam generation. If the files are out of sync, tests
stop with a diff even when the OCaml test code itself passes.
