A Switzerland-origin Oberon-07 / Pascal unikernel running natively inside Synrc VE OS.1. Zero-copy VirtIO I/O, single-address-space security model, sub-200 ms cold-boot.
VirtIO OBERON is a hypothetical research unikernel specification that marries the clean, provably-safe Pascal tradition—born in Switzerland with Niklaus Wirth's Oberon system—with a modern hypervisor-neutral VirtIO device model to power the Synrc VE OS.1 virtual execution environment.
Oberon-07 traces its roots to ETH Zürich. Pascal clarity, formal semantics, garbage-collected heap, and module system — all preserved.
Single address space. No syscall overhead. The application is the kernel. Compile once, seal the image, ship to any VirtIO hypervisor.
Implements virtio-blk, virtio-net, virtio-console and virtio-entropy as first-class Oberon modules — no POSIX translation layer required.
The full software stack from user application to hardware abstraction.
No ring transitions. The unikernel shares a single 64-bit virtual address space. The Oberon GC manages the heap; VirtIO DMA buffers are pinned outside GC reach.
Each VirtIO device is represented as a typed Oberon RECORD capability.
Unforgeable references prevent out-of-bounds device access at the language level.
Oberon was designed by Niklaus Wirth at ETH Zürich (Switzerland) as the culmination of a Pascal → Modula → Oberon lineage. VirtIO OBERON adopts Oberon-07 with a low-level extension layer called Switzerlang.
(** VirtIO Network Device — Oberon-07 module Switzerlang Extension: SYSTEM, UNSAFE POINTER, DMA *) MODULE VirtIONet; IMPORT SYSTEM, VirtQ, Out, Heap; CONST VENDOR_ID* = 1AF4H; NET_DEVICE* = 1000H; MAC_LEN = 6; RX_DESCS = 256; TYPE MAC* = ARRAY MAC_LEN OF BYTE; Config* = RECORD mac* : MAC; status* : SET; (* link flags *) mtu* : CARDINAL; speed* : CARDINAL; END; Device* = RECORD cfg* : Config; rxq : VirtQ.Queue; txq : VirtQ.Queue; ready : BOOLEAN; END; (** Initialise the VirtIO network device at PCI BAR0 base. *) PROCEDURE Init*(VAR dev : Device; bar0 : ADDRESS); BEGIN VirtQ.Init(dev.rxq, bar0, 0, RX_DESCS); VirtQ.Init(dev.txq, bar0, 1, RX_DESCS); SYSTEM.COPY(bar0 + 20H, SYSTEM.ADR(dev.cfg.mac), MAC_LEN); dev.cfg.mtu := SYSTEM.VAL(CARDINAL, SYSTEM.LDWORD(bar0 + 28H)); dev.ready := TRUE; Out.String("VirtIO-Net: initialised"); Out.Ln; END Init; (** Send a raw Ethernet frame. *) PROCEDURE Send*(VAR dev : Device; buf : ADDRESS; len : CARDINAL); BEGIN ASSERT(dev.ready); VirtQ.Enqueue(dev.txq, buf, len, FALSE); VirtQ.Notify(dev.txq); END Send; END VirtIONet.
*)SYSTEM pseudo-modulePOINTER TO)ADDRESS / CARDINAL machine-word typesSYSTEM.CODE--emit=ll)All devices target the VirtIO 1.2 specification over PCI transport.
| Device ID | Module | Function | Queue Mode | Status |
|---|---|---|---|---|
0x1000 |
VirtIONet |
Ethernet networking | Split-ring | Stable |
0x1001 |
VirtIOBlk |
Block storage | Packed | Stable |
0x1003 |
VirtIOConsole |
Serial console | Split-ring | Stable |
0x1005 |
VirtIORNG |
Entropy / TRNG | Split-ring | Stable |
0x1050 |
VirtIOGPU |
2D/3D GPU | Packed | In Progress |
0x105A |
VirtIOFS |
Shared filesystem | Packed | In Progress |
# Build with Switzerlang compiler swz build --target aarch64-virtio-oberon \ --no-runtime \ --opt 3 \ -o oberon.bin src/Main.Mod # Run inside Synrc VE OS.1 veos launch \ --image oberon.bin \ --memory 64M \ --cpus 2 \ --device virtio-net,bridge=br0 \ --device virtio-blk,path=disk.img \ --serial stdio
Synrc VE OS.1 is the virtual-execution layer that hosts VirtIO OBERON unikernels. It provides hardware abstraction, device emulation, and a management API.
The Synrc VMM loads the flat unikernel binary, maps VirtIO config space, and signals VCPU reset — the Oberon runtime begins in under 200 ms.
Each unikernel runs in a dedicated VM guest. SEV-SNP memory encryption is supported on AMD platforms. No shared kernel memory with host.
VirtIO-net uses vhost in-kernel acceleration. Guest TX descriptors are DMA-mapped directly into the host tap device — zero extra copies.
Synrc VE OS.1 exposes a JSON REST API for VM lifecycle, device hotplug, metrics, and snapshot/restore — compatible with the Synrc N2O toolchain.
Milestones for the Hypothetica VirtIO OBERON research project.
Self-hosting Oberon-07 compiler targeting LLVM IR. Switzerlang extensions for ADDRESS and SYSTEM pseudo-module finalized.
VirtIONet, VirtIOBlk, VirtIOConsole, VirtIORNG reach stable status. Full packed virtqueue support added.
REST management API, SEV-SNP guest attestation, vhost-net acceleration and snapshot/restore support.
Graphical frame-buffer support and shared host filesystem for development workflows. Oberon Display Server module prototype.
Full Switzerlang compiler, OBERON LibOS, and Synrc VE OS.1 integration released under BSD-2-Clause licence.