Roadmap
Veröffentlicht
- Hilde 1.0.1, 16. Oktober 2026: kleine Verbesserungen.
- Hilde 1.0, 15. Oktober 2026: erstes Release.
Wie Sie eine Version herunterladen und prüfen, steht unter Installation.
Was Hilde zu Austral hinzufügt
Hilde ist ein Fork von Austral. Lineare Typen, Borrowing mit Regionen, Typklassen und Generics hatte schon Austral. Neu in Hilde:
Sprache
- Verträge: requires, ensures und invariant; jede öffentliche Funktion nennt ihren Vertrag, er wird geprüft und mit erzeugten Eingaben getestet.
- Fehlerarten: Eine Funktion nennt mit
raises, mit welchen Fehlern sie enden kann. - Never: der Typ einer Funktion, die nicht zurückkehrt.
- Slots: Funktionen, die ein anderes Modul implementiert, direkt aufgerufen, ohne Funktionszeiger.
- Operator
?: gibt den Fehler einesOptionoderEitherweiter. casemit Mustern: Alternativen, Bereiche und Platzhalter; der Compiler lehnt fehlende Fälle ab.caseüber ganze Zahlen: die Form für eine Verzweigung nach Zahlen und Zeichen.- SQL beim Übersetzen geprüft: Abfragen gegen das Schema der Migrationen.
- Templates beim Übersetzen geprüft: Jinja2-Templates, zu Code übersetzt.
- Dateien einbetten: die Bytes einer Datei, beim Übersetzen gelesen.
- Stabile Fehlercodes: jede Meldung des Compilers mit festem Code und Text auf Deutsch und Englisch.
Werkzeuge
- Paketmanager: Pakete anlegen, Abhängigkeiten holen und prüfen, Releases mit signify signiert; jeder Befehl gibt auch JSON aus.
- hilde test: Tests neben dem Modul, jeder auch unter AddressSanitizer, UBSan, valgrind und cppcheck.
- hilde fmt: formatiert den Code.
- hilde lsp: ein Sprachserver für Editoren.
- hilde guard: prüft die C-Bibliotheken eines Programms gegen bekannte Schwachstellen.
- WebAssembly: Programme und Bibliotheken für wasm32-wasi.
- llms.txt: für jedes Paket, das veröffentlicht wird.
Bibliothek
- Reguläre Ausdrücke: in linearer Zeit, dazu PCRE2.
- Arena: Speicher für eine Arbeitseinheit wie eine Anfrage, auch je Task.
- Nebenläufigkeit: strukturierte Tasks und Kanäle mit zwei linearen Enden.
- Datenbanken: SQLite, SQLCipher, PostgreSQL, MariaDB und DuckDB hinter einer Schnittstelle, Volltextsuche mit FTS5.
- Raft: Konsens, und SQLite darüber repliziert.
- SPERLI: verteilte Jobs, deren Ränge Nachrichten über TLS 1.3 tauschen.
- Web: FastCGI-Server, HTTP-Client, Sessions, Cookies, CSRF-Schutz und htmx.
- Formate: JSON, TOML, YAML, XML, CSV, CBOR und INI.
- Übersetzungen: Texte aus einem Katalog, der Teil des Programms ist.
- Unicode: Graphem-Cluster und Normalisierung.
- Netz: TLS, SSH und SFTP, SMTP, ACME.
- Bilder und Archive: PNG, QR-Codes, gzip, tar und zip.
- Dateien: atomar schreiben, Änderungen beobachten.
Sicherheit
- Sandbox je Plattform: pledge und unveil auf OpenBSD, Landlock und seccomp auf Linux, Capsicum auf FreeBSD, Seatbelt auf macOS.
- Post-Quanten-Signaturen: ML-DSA, auch zusammen mit Ed25519.
- Vault: verschlüsselte Geheimnisse.
- Anmeldung: Passwörter als Argon2id-Hashes, Einmalpasswörter (TOTP).
- Signaturen und Zertifikate: signify, JWS, COSE und X.509.
- C nur über Bindings: C wird in eigenen Modulen gebunden, und nur die Standardbibliothek importiert sie.
Plattformen
OpenBSD ist die Referenzplattform; dazu Linux, FreeBSD, macOS und WebAssembly.
Alles Weitere beschreibt die Dokumentation.
Ziele
- Lexer in Hilde: Der Lexer wird in Hilde selbst neu geschrieben.
- ML-DSA über LibreSSL: ML-DSA wechselt vom C-Code von libcrux zu LibreSSL, sobald LibreSSL es anbietet.
- hilde guard mit aktuellen Meldungen:
hilde guardruft aktuelle Schwachstellenmeldungen für die C-Bibliotheken eines Programms ab; der Offline-Betrieb bleibt.