Zig 0.16.0 veröffentlicht
(ziglang.org)Es wurde am 14. April 2026 veröffentlicht. An diesem Release haben 244 Mitwirkende über 8 Monate hinweg mit insgesamt 1.183 Commits gearbeitet.
I/O als Interface — der Kern dieses Releases
Das ist die größte Änderung in diesem Release. Fast alles, was blockieren kann — etwa Dateisystem, Netzwerk, Timer oder Synchronisierung — wurde unter dem neuen std.Io-Interface zusammengefasst. So wie man bei der Speicherallokation einen Allocator benötigt, muss nun sämtlicher Code, der I/O verwendet, eine Io-Instanz entgegennehmen. Dadurch lassen sich unabhängig vom Nebenläufigkeitsmodell wiederverwendbare Pakete bauen, und Event Loops können auch auf Sprachebene sauber behandelt werden.
Es gibt drei Implementierungen:
Io.Threaded— eine vollständige threadbasierte Implementierung. Sie unterstützt auch Cancellation, und beim Umstieg von 0.15.x bleibt das Verhalten unverändertIo.Evented— eine experimentelle Implementierung auf Basis von Userspace-Stack-Switching (Green Threads)Io.Uring— eine PoC-Implementierung auf Basis von Linux-io_uring
Compiler
- Incremental Compilation funktioniert jetzt auch mit dem LLVM-Backend — bei Compilerfehlern wird der LLVM-Emit-Object-Schritt übersprungen, sodass sich Fehler deutlich schneller prüfen lassen
- Die Type Resolution wurde grundlegend überarbeitet — der interne Abhängigkeitsgraph wurde von einer zyklischen Struktur in einen DAG umgewandelt. Typen, die nur als Namespace verwendet werden, müssen nicht mehr unnötig analysiert werden, was auch die Binärgröße reduziert. Auch Fehlermeldungen zu Abhängigkeitszyklen zeigen nun viel klarer, wo sich etwas verhakt hat
- aarch64-Backend — wird aktiv mit dem Ziel entwickelt, als Standard im Debug-Modus zu dienen
- Der eingebaute Fuzzer ist leistungsfähiger geworden — AST-Smith-basiertes Multiprozess-Fuzzing, Infinite Mode und Crash-Dumps wurden ergänzt
Sprachänderungen (Breaking Changes)
Dies sind Änderungen, für die eine Migration erforderlich ist:
@cImportwurde in das Build-System verschoben- Das Builtin
@Typewurde entfernt — ersetzt durch separate typspezifische Builtins - Lazy Field Analysis wurde eingeführt — Typen, die nur als Namespace verwendet werden, werden nicht auf ihre Felder analysiert
- Pointer in packed union/struct sind nicht mehr erlaubt
- Viele APIs rund um
posixundos.windowswurden entfernt
Standardbibliothek
heap.ArenaAllocatorist jetzt thread-sicher und lock-free, und derheap.ThreadSafeAllocator wurde entfernt- Deflate-Kompression wurde hinzugefügt, und auch die API zur Dekompression wurde vereinfacht
std.cryptowurde um AES-SIV, AES-GCM-SIV, Ascon-AEAD und Ascon-Hash erweitertThread.Pool,GenericReader/AnyReader/FixedBufferStreamwurden entfernt- Windows-Netzwerkfunktionen arbeiten jetzt auch ohne
ws2_32.dll, und die Migration zu NtDll ist abgeschlossen
Toolchain-Updates
Aktualisiert wurde auf LLVM 21, musl 1.2.5, glibc 2.43, Linux-6.19-Header, macOS-26.4-Header und FreeBSD-15.0-libc.
Ausrichtung des nächsten Releases (0.17.0)
Die wichtigsten Ziele sind die Stabilisierung von async I/O, die Umstellung des aarch64-Backends auf den Standard im Debug-Modus, das Entfernen der LLD-Abhängigkeit und die Implementierung eines Linkers mit Unterstützung für Incremental Compilation.
2 Kommentare
Letzte Nacht wurde auch der Zig Language Server in Version 0.16 veröffentlicht.
Da der Language Server oft erst einige Monate nach der Sprachversion erschien, habe ich gezögert, die neueste Version zu verwenden. Diesmal kam die passende Version aber wirklich schnell heraus. Dadurch lässt sich diese neue Version jetzt schneller und einfacher nutzen.
Ups, der Link...
https://github.com/zigtools/zls/releases