BPF Capsule - DOOM im Linux-Kernel mit eBPF-Fibers

Show HN: DOOM in the kernel, or fibers in eBPF

BPF Capsule ist ein Compiler und eine Laufzeitumgebung, die große C-, C++- oder no_std Rust-Programme in gewöhnliches eBPF übersetzt, ohne Kernel-Patches oder separate VMs. Es überwindet die strengen Grenzen des Linux-Verifiers – winziger Stack, begrenzte Aufruftiefe, verbotene Rekursion – durch clevere Transformationen wie Pointer-Laundering, Regionen und Fibers. Als Härtetest läuft sogar DOOM vollständig im Kernel-JIT: Initialisierung, Spiellogik und Rendering in einem einzigen BPF-Aufruf. Auch Lua, QuickJS, SQLite, zlib, wasm3 und CPython 3.14 laufen bereits. Einfach ausprobieren mit: sudo nix run github:ayles/bpf-capsule#doom -- /path/to/doom1.wad tty

Niemand braucht Spiele im Kernel, natürlich. Aber komplexe Anwendungslogik ist dort nützlich: Pakete parsen zum Beispiel oder Statistiken über sie führen.
  1. tptacek

    Es steckt so viel guter Inhalt drin, es ist eine Schande, dass du deinen Writeup mit KI sandgestrahlt hast. "Für den Verifier ist es eine Zahl mit einer Biografie" – da bin ich von der Straße abgekommen und in einen Graben gefahren.

  2. markrwilliams

    Überspringe die erste Hälfte des Artikels, um zu erfahren, wie das Projekt die eingeschränkte Laufzeitumgebung von eBPF-Programmen überwunden hat:

    "Unter Linux 6.9 und neuer (6.10 auf arm64, wo die JIT-Unterstützung für die Arena später kam), wird das Fenster von bpf_arena gestützt ... Auf Kernen ohne nutzbare Arena werden dieselben vier Gigabyte aus 4-MiB-Stücken zusammengesetzt ... [in] separaten global-data maps."

    Diese Maps sind vom Typ BPF_MAP_TYPE_ARRAY.

    Siehe https://lwn.net/Articles/961941/ für eine Diskussion über `bpf_arena`.

  3. phishin

    Ich schätze die Einhaltung der Großbuchstaben-Anforderung.

Mehr von diesem Tag

2026-09-10