Wie Hilde entsteht
Hilde entsteht mit KI-Unterstützung: KI als Werkzeug, nicht als Quelle für KI-Slop. Heiko Zimmermann entwirft die Sprache, entscheidet und prüft. Jede Änderung, ob von Hand oder mit KI-Hilfe geschrieben, muss dieselben Hürden nehmen: die Regeln des Compilers, die Verträge, die Tests und die Prüfläufe.
Eine Sprache, die viele Fehler früh abfängt
Der Compiler fängt viele Fehler ab, bevor ein Programm läuft, gleich ob ein Mensch sie macht oder ein Assistent:
- Lineare Typen. Ein Wert, der eine Ressource hält, wird genau einmal verwendet. Ist er vergessen oder doppelt verwendet, kompiliert das Programm nicht (lineare Typen).
- Verträge. Eine öffentliche Funktion nennt ihren Vertrag mit requires und ensures oder begründet, warum sie keinen hat. Verträge lassen sich nicht abschalten (warum).
- Vollständiges case. Fehlt einem case eine Alternative, lehnt der Compiler es ab.
- Feste Fehlercodes. Derselbe Fehler trägt immer denselben Code, zu jedem gibt es ein falsches und ein richtiges Beispiel, und der Compiler meldet Fehler auch als JSON (Fehlercodes).
- Werkzeuge.
hilde fmtgibt jeder Quelldatei dieselbe Form,hilde lspist ein Language Server für Editoren, llms.txt beschreibt die Website für Sprachmodelle.
Ein Assistent kann Hilde gut schreiben, ein Mensch kann es lesen und verantworten.
KI-Assistenten gehören zu den Nutzern von Hilde. Wo sie beim Schreiben stolpern, etwa über eine unklare Fehlermeldung oder eine mehrdeutige Stelle der Syntax, wird das gesammelt wie Rückmeldungen aus einem Nutzertest. Was davon in die Sprache eingeht, entscheidet der Entwickler.
LUCIO
LUCIO (LLM Unified Control, Integration & Orchestration) ist ein eigenes Werkzeug, das den Entwickler unterstützt. Es verwaltet die Arbeitsaufträge, hält Entscheidungen, Läufe und Befunde mit ihrem Ergebnis fest und führt die Tests automatisch aus. Der Entwickler entscheidet; LUCIO unterstützt, dokumentiert und prüft.
In der Praxis fängt LUCIO viele Fehler ab, bevor sie übernommen werden. Für Audits setzt es mehrere Modelle ein, darunter Claude Opus, Claude Fable und GLM: Sie prüfen denselben Code aus verschiedenen Blickwinkeln, die Ergebnisse werden zusammengeführt. Das ist sehr wirkungsvoll und für ein Projekt ohne ein Team aus mehreren 10x-Entwicklern eine echte Hilfe.
Craft, über das derzeit viel gesprochen wird, erledigt alles automatisch. LUCIO dagegen arbeitet mit dem Entwickler zusammen, und die Entscheidungen bleiben bei ihm.
Prüfläufe
Jede Änderung durchläuft den schnellen Prüflauf: Build, Unit-Tests, End-to-End-Tests, die Beispiele mit Zählung der Compiler-Warnungen, die Tests der Standardbibliothek und die Prüfung der Dokumentation. Vor einem Release kommt der vollständige Prüflauf hinzu, mit einem zweiten C-Compiler, dem Clang Static Analyzer, cppcheck und den langen Testläufen: AddressSanitizer, UndefinedBehaviorSanitizer und valgrind finden Speicherfehler und undefiniertes Verhalten zur Laufzeit, AFL++ sucht mit veränderten Eingaben nach Abstürzen. Der vollständige Prüflauf für Hilde 1.0.0 dauerte knapp zwei Stunden und bestand alle 22 Abschnitte.
Ein Beispiel aus den Prüfläufen vor Hilde 1.0.0 (Oktober 2026):
- 1132 End-to-End-Tests des Compilers, keiner fehlgeschlagen.
- 645 Tests der Standardbibliothek in 102 Testdateien, keiner fehlgeschlagen.
- 41 Beispiele, gebaut und ausgeführt.
- 0 Warnungen von cc unter drei Maßstäben (-Wall -Wextra, dazu -Wpedantic, dazu -O1) und von zig cc über 722 Dateien.
- Fuzz-Tests für 36 Leser von Formaten wie JSON, TOML und XML, für den Compiler und für den Template-Compiler.
- Mutationstests. Dabei werden absichtlich Fehler in den Code eingebaut, und die Tests sollen sie finden. Von 96 eingebauten Fehlern in den Verträgen der Standardbibliothek fanden sie alle 96. Bei einer Änderung am Compiler blieben in der ersten Runde 5 von 20 Fehlern unentdeckt; für jeden kam ein Test hinzu, danach fanden die Tests alle 20.
- Verträge. Keine der 2044 geprüften Deklarationen ist ohne Vertrag oder Begründung.
Geprüft wird unter OpenBSD 8.0, FreeBSD 15.1, Linux und macOS.
Fehlerfreie Software gibt es nicht. Trotz aller Tests und Protokolle schleicht sich immer etwas ein, das erst im Betrieb auffällt. Das gilt für jedes Projekt, ob ein 10x-Entwickler daran arbeitet oder ob es KI-gestützt entsteht.
Entscheidungen
Entwurfsentscheidungen werden mit Begründung und verworfenen Alternativen festgehalten. Die wichtigsten fasst die Seite Entwurfsentscheidungen zusammen.