Hypothetica Research · 2026

VirtIO OBERON
Unikernel Platform

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.

What is VirtIO OBERON?

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.

🇨🇭

Swiss Heritage

Oberon-07 traces its roots to ETH Zürich. Pascal clarity, formal semantics, garbage-collected heap, and module system — all preserved.

Unikernel Model

Single address space. No syscall overhead. The application is the kernel. Compile once, seal the image, ship to any VirtIO hypervisor.

🔌

VirtIO Native

Implements virtio-blk, virtio-net, virtio-console and virtio-entropy as first-class Oberon modules — no POSIX translation layer required.

Stack Layers

The full software stack from user application to hardware abstraction.

Application
Oberon-07 Program Module
🗂️
Language Runtime
Switzerlang Pascal Compiler (LLVM IR)
🧬
Unikernel Core
OBERON LibOS — GC · Scheduler · MM
🔌
Device Abstraction
VirtIO 1.2 Drivers (Split-ring / Packed)
🖥️
Hypervisor Host
Synrc VE OS.1
Memory

Single Address Space

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.

Security

Capability-Based I/O

Each VirtIO device is represented as a typed Oberon RECORD capability. Unforgeable references prevent out-of-bounds device access at the language level.

Oberon-07 — The Switzerland Connection

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.

  VirtIONet.Mod — Oberon-07 + 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.
Oberon-07

Language Guarantees

  • Strong static typing — no implicit coercions
  • Module system with explicit export markers (*)
  • Automatic garbage collection
  • No pointer arithmetic outside SYSTEM pseudo-module
  • Type-safe variant records (POINTER TO)
Switzerlang

Low-Level Extensions

  • ADDRESS / CARDINAL machine-word types
  • Inline assembly via SYSTEM.CODE
  • Pinned DMA buffer annotations
  • Volatile memory-mapped I/O reads
  • LLVM IR emission target (--emit=ll)

Supported VirtIO Interfaces

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
  Building & Launching the Unikernel
# 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

The Host Execution Environment

Synrc VE OS.1 is the virtual-execution layer that hosts VirtIO OBERON unikernels. It provides hardware abstraction, device emulation, and a management API.

Boot

Fast Cold-Boot

The Synrc VMM loads the flat unikernel binary, maps VirtIO config space, and signals VCPU reset — the Oberon runtime begins in under 200 ms.

Isolation

VM-level Security

Each unikernel runs in a dedicated VM guest. SEV-SNP memory encryption is supported on AMD platforms. No shared kernel memory with host.

Networking

Zero-copy Networking

VirtIO-net uses vhost in-kernel acceleration. Guest TX descriptors are DMA-mapped directly into the host tap device — zero extra copies.

Management

REST Control Plane

Synrc VE OS.1 exposes a JSON REST API for VM lifecycle, device hotplug, metrics, and snapshot/restore — compatible with the Synrc N2O toolchain.

Development Timeline

Milestones for the Hypothetica VirtIO OBERON research project.

Q1 2026 — Completed

Switzerlang Compiler Bootstrap

Self-hosting Oberon-07 compiler targeting LLVM IR. Switzerlang extensions for ADDRESS and SYSTEM pseudo-module finalized.

Q2 2026 — Completed

VirtIO Core Drivers

VirtIONet, VirtIOBlk, VirtIOConsole, VirtIORNG reach stable status. Full packed virtqueue support added.

Q3 2026 — In Progress

Synrc VE OS.1 Integration

REST management API, SEV-SNP guest attestation, vhost-net acceleration and snapshot/restore support.

Q4 2026 — Planned

VirtIOGPU & VirtIOFS

Graphical frame-buffer support and shared host filesystem for development workflows. Oberon Display Server module prototype.

Q1 2027 — Planned

ETH Zürich Open-Source Release

Full Switzerlang compiler, OBERON LibOS, and Synrc VE OS.1 integration released under BSD-2-Clause licence.