kestrel/README.md
2026-02-02 12:26:24 -03:00

42 lines
1.1 KiB
Markdown

# 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.