Project status
Champollion is a learning project, developed in the open at dorian-zhao/champollion. This page is a snapshot; the repository’s design brief is the source of truth, including the baseline every performance change is reported against.
What works
Section titled “What works”- M5, done. Multithreaded C and Go programs run under Direct mode. Alpine’s busybox (pipelines, job control, subshells) and CPython 3.14 (subprocess, asyncio, multiprocessing) run unmodified against an Alpine riscv64 sysroot and match native output in the test suite.
- M6 — VM mode (route A), done criterion met, not yet declared. riscv64 container
images run on the Mac through
rvcontainer, and Alpine and Debian roots runbusybox,bash,coreutils,dpkg,apt,perl, and CPython;apt-get updateand package installation work as well.
Performance (October 2026)
Section titled “Performance (October 2026)”Measured on Apple silicon against native arm64, as the factor of the native runtime (lower is better):
| Program | Factor of native |
|---|---|
| C | 1.5× |
| n-body | 1.37× |
| Lua | ~2.0× |
| SQLite | 1.87× |
Against qemu-riscv64 in the same OrbStack VM: Lua 4.8× and SQLite 4.2×
faster.
Known gaps
Section titled “Known gaps”Direct mode (route B), in the order a program is likely to notice: dynamically
linked programs get no persistent code cache; realtime signals do not queue; of the
interval timers, only ITIMER_REAL works; startup costs about 0.5 ms more than
a static hello did before the host signal thread (3.4 ms against native
1.9 ms).
VM mode (route A): every run unpacks the image again; the Kata kernel is
6.12 while Containerization tests from 6.14.9; Linux builds linked by GNU ld run SQLite
about 12% slower than zig-linked ones, cause unknown.
License
Section titled “License”MIT or Apache-2.0, at your option.
