Skip to content

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.

  • 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 run busybox, bash, coreutils, dpkg, apt, perl, and CPython; apt-get update and package installation work as well.

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.

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.

MIT or Apache-2.0, at your option.