# Kestrel **Kestrel** is: - an implementation of the [Uxn](https://wiki.xxiivv.com/site/uxn.html) virtual machine as a library in OCaml - an implementation of the [Varvara](https://wiki.xxiivv.com/site/varvara.html) ecosystem using said library, supporting the devices needed for command-line programs. ## Building **Kestrel** requires OCaml 5.3 or upper, as it uses the newly introduced effects syntax. There are no requirements aside from the OCaml standard library, so it can be built simply using `dune`. ```shell-session $ dune build ``` It then can be run using `dune exec -- kestrel`. ```shell-session $ dune exec -- kestrel file.rom ``` The `uxnmin` program, which is similar to upstream's in functionality, can be built without `dune`: ```shell-session $ ocamlopt exe/uxnmin.ml -o uxnmin ``` ## Bootstrapping Since **Kestrel** supports the needed Varvara devices for running the Drifblim assembler, it can be used to bootstrap the ecosystem. Bundled in the repository are copies of the Drifloon hex dump, the source code for Drifblim, and `dzoe`'s `xh.rom`. A bootstrap script is provided that builds the assembler and some test ROMs.