Hi all,
I want to share a language experiment, and the one question it keeps
raising: what if ownership were a runtime diagnostic instead of a
compile-time gate?
The context in one sentence: HolyRust lives inside a tiny TempleOS-inspired
kernel (repo below) that boots in ~2 seconds and drops you straight into a
REPL. But this post is about the language, not the OS.
The language
-
Everything is JIT-compiled. A line at the prompt becomes native code the
moment you press Enter. There is no separate compiler binary, no build
step, no AOT pass — the compiler, the shell and the build system are the
same process. That's the TempleOS idea, transplanted onto Rust-flavored
syntax. -
Ownership as runtime diagnostics — the flagship experiment. In Rust,
borrowck stops you before the program exists. In HolyRust, the check runs
when the line executes: a violation prints an explanation, and the system
keeps running. On a REPL-first system this feels natural — you find out
the instant you press Enter, with the offending values right in front of
you. To be crystal clear about the tradeoff: it is a diagnostic, not a
guarantee. Guest code can still reach for raw pointers (Str *p) and take
the kernel down. -
Self-hosting end-to-end. The system's own source is .HR files that the
kernel compiles at boot; the running system can open, edit, and re-include
them. The language's first real user is the OS itself. -
Zero crates, no LLVM. Parser, codegen and diagnostics are plain Rust — no
syn, no inkwell, no external toolchain. This wasn't a stunt: the same
compiler must also build for a no_std kernel target, so the host compiler
and the in-kernel compiler are one body of code.
Where it's proven
- 110 host tests on the compiler and the language
- CI boots the real kernel in QEMU and asserts on screendump pixels
- ~250 lines of guest code fly a wireframe flight sim over pyramids —
floats, drawing and input, all through the language
The question for this community
Treating ownership as a runtime reporter rather than a compile-time gate:
from a language-design view, is that an interesting tradeoff for REPL-first
systems, or heresy? Both answers welcome — and if you see a hole in the
idea bigger than Str *p, I'd genuinely like to hear it before v0.2.
Repo: GitHub - salehdev-ux/holyrust: os using holyrust · GitHub
Honest limitations: HolyRust is a dialect inspired by Rust, not Rust; the
JIT uses RWX memory (a TempleOS-style choice); QEMU only, no real hardware
tested.
1 post - 1 participant