Cardinal is a fork of Raven an independent re-implementation of the Uxn CPU and Varvara Ordinator.
The Uxn/Varvara ecosystem is a personal computing stack.
Cardinal is my personal stack for the Uxn/Varvara ecosystem.
For details on project origins, see Raven's project writeup.
The cardinal-uxn crate includes two implementations of the Uxn CPU:
- The safe interpreter is a
#[no_std]crate written in 100% safe Rust, with a single dependency (zerocopy). It is 10-20% faster than the reference implementation for CPU-heavy workloads (e.g.fib.tal, andmandelbrot.tal - The unsafe ("native") interpreter is written in
aarch64assembly (with Rust shims on either side), and runs 40-50% faster than the reference implementation
The native interpreter can be checked against the safe interpreter with fuzz testing:
cargo install cargo-fuzz # this only needs to be run once
cargo +nightly fuzz run --release fuzz-nativeThe Varvara implementation (cardinal-varvara) includes all peripherals, and has
been tested on many of the
flagship applications
(Left, Orca, Noodle, Potato).
The repository includes two applications built on these libraries:
cardinal-cliis a command-line application to run console-based ROMscardinal-guiis a full-fledged GUI, which runs both as a native application and Raven on the web
The web demo is built with trunk, e.g.
cargo install --locked trunk # this only needs to be run once
cd cardinal-gui
cargo make serve-wasmUse cargo make to build so that getrandom has the proper RUSTFLAGS.
technology from the past come to save the future from itself
July 2025 Changes
- stdout and stderr callbacks
- feat(audio): support dynamic sample rate selection between 48000 and 44100 Hz
- refactor(deps): update to the latest and greatest 7/25 for all dependencies!
- feat(cardinal-gui): add cardinal-demo binary with hot reload, inject, and rom cycling; cardinal-orcas binary added, wip.
- wasm notice: cardinal-gui supports wasm. the others do not. PRs welcome.
- /notes/01.debug basic debug start.
- /notes/02.duplicate_mouse_device demonstrate custom Tracker Mouse device.
- resolved 100+ clippy lints. wasm, ubuntu, windows, and macos all show green.
- /notes/03.hidusb_controllers
- /notes/04.sym_file_vector_labeling
- /notes/05.cardinal-orcas
- /notes/06.hardware_verification
- /notes/07.xbox_controller_gilrs
- /notes/08.e_midi
October 2025 Changes
- cardinal-gui ctrl+c exits, f2 debugs, ctrl+alt+drag moves the window.
- uxn-tal now supports protocol variables
emu,debug,ontop,widget - linkedin redirect support
uxntal uxntal:widget://https://lnkd.in/ec8ySaDVcatclock and a +1 impression on linkedin. +1 impressions and likes appreciated.
uxntal:widget://https://wiki.xxiivv.com/etc/catclock.tal.txt
© 2024-2025 Matthew Keeter, David Horner Released under the Mozilla Public License 2.0
The repository includes ROMs compiled from the uxnemu reference
implementation, which are © Devine Lu Linvega and released under the MIT
license; see the roms/ subfolder for details.
we do not know what exactly will come of it