lisp targeting the nara vm
  • OCaml 84.1%
  • Dune 9.8%
  • Makefile 5%
  • Common Lisp 1.1%
Find a file
2026-07-24 17:27:48 -05:00
bin parse: basic (non working) parse 2026-07-24 17:27:48 -05:00
lib all: init project 2026-07-20 17:15:49 -05:00
test all: init project 2026-07-20 17:15:49 -05:00
.gitignore all: init project 2026-07-20 17:15:49 -05:00
.ocamlformat main: read file 2026-07-20 19:42:24 -05:00
demo.nikki.cl lex: parens 2026-07-24 16:33:08 -05:00
dune-project all: hello world 2026-07-20 17:21:53 -05:00
Makefile main: read file 2026-07-20 19:42:24 -05:00
nikki.opam build: update refs 2026-07-20 18:11:55 -05:00
nikki.png img: nikki 2026-07-20 19:47:23 -05:00
README.md Update README.md 2026-07-21 00:48:04 +00:00
TODO.md lex: parens 2026-07-24 16:33:08 -05:00

Nikki

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.