Roadmap
Released
- Hilde 1.0.1, 16 October 2026: small improvements.
- Hilde 1.0, 15 October 2026: first release.
How to get and check a release: Install.
What Hilde adds to Austral
Hilde is a fork of Austral. Linear types, borrowing with regions, type classes and generics were already in Austral. New in Hilde:
Language
- Contracts: requires, ensures and invariant; every public function states its contract, which is checked and tested with generated inputs.
- Error kinds: a function names with
raisesthe errors it can end with. - Never: the type of a function that does not return.
- Slots: functions another module implements, called directly, through no function pointer.
- The
?operator: passes on the error of anOptionorEither. casewith patterns: alternatives, ranges and wildcards; the compiler refuses a missing case.caseover integers: the form for a dispatch on numbers and characters.- SQL checked at compile time: queries against the schema of the migrations.
- Templates checked at compile time: Jinja2 templates, compiled to code.
- Embedded files: the bytes of a file, read when the programme is compiled.
- Stable error codes: every compiler message with a fixed code and a text in English and German.
Tools
- Package manager: making packages, getting and checking dependencies, releases signed with signify; every command also prints JSON.
- hilde test: tests beside the module, each also under AddressSanitizer, UBSan, valgrind and cppcheck.
- hilde fmt: formats the code.
- hilde lsp: a language server for editors.
- hilde guard: checks a programme's C libraries against known vulnerabilities.
- WebAssembly: programmes and libraries for wasm32-wasi.
- llms.txt: for every package that is released.
Library
- Regular expressions: in linear time, and PCRE2.
- Arena: memory for one unit of work such as a request, also per task.
- Concurrency: structured tasks, and channels with two linear ends.
- Databases: SQLite, SQLCipher, PostgreSQL, MariaDB and DuckDB behind one interface, full-text search with FTS5.
- Raft: consensus, and SQLite replicated through it.
- SPERLI: distributed jobs whose ranks exchange messages over TLS 1.3.
- Web: FastCGI server, HTTP client, sessions, cookies, CSRF protection and htmx.
- Formats: JSON, TOML, YAML, XML, CSV, CBOR and INI.
- Translations: texts from a catalog that is part of the programme.
- Unicode: grapheme clusters and normalization.
- Network: TLS, SSH and SFTP, SMTP, ACME.
- Images and archives: PNG, QR codes, gzip, tar and zip.
- Files: written atomically, watched for changes.
Security
- Sandbox per platform: pledge and unveil on OpenBSD, Landlock and seccomp on Linux, Capsicum on FreeBSD, Seatbelt on macOS.
- Post-quantum signatures: ML-DSA, also together with Ed25519.
- Vault: encrypted secrets.
- Sign-in: passwords as Argon2id hashes, one-time passwords (TOTP).
- Signatures and certificates: signify, JWS, COSE and X.509.
- C only through bindings: C is bound in modules of their own, and only the standard library imports them.
Platforms
OpenBSD is the reference platform; Linux, FreeBSD, macOS and WebAssembly as well.
Everything else is in the documentation.
Goals
- Lexer in Hilde: the lexer is rewritten in Hilde itself.
- ML-DSA through LibreSSL: ML-DSA moves from the C code of libcrux to LibreSSL as soon as LibreSSL offers it.
- hilde guard with current reports:
hilde guardfetches current vulnerability reports for the C libraries of a program; the offline mode stays.