Phát hành Zig 0.16.0
(ziglang.org)Được công bố vào ngày 14 tháng 4 năm 2026. Đây là bản phát hành được tạo nên từ 1.183 commit trong 8 tháng bởi 244 người đóng góp.
I/O as an Interface — trọng tâm của bản phát hành lần này
Đây là thay đổi lớn nhất trong bản phát hành này. Hầu như mọi thứ có thể gây blocking như hệ thống tệp, mạng, timer và đồng bộ hóa đều được gom vào giao diện std.Io mới. Tương tự như khi cấp phát bộ nhớ cần Allocator, giờ đây mọi đoạn mã dùng I/O đều phải nhận một instance Io. Nhờ vậy có thể tạo ra các package có thể tái sử dụng bất kể mô hình đồng thời nào, đồng thời event loop cũng có thể được xử lý đúng đắn ở cấp độ ngôn ngữ.
Có ba implementation:
Io.Threaded— implementation hoàn chỉnh dựa trên thread. Cũng hỗ trợ cancellation, và khi chuyển từ 0.15.x sang thì hành vi vẫn được giữ nguyênIo.Evented— implementation thử nghiệm theo kiểu chuyển stack ở userspace (green thread)Io.Uring— implementation PoC dựa trên Linuxio_uring
Trình biên dịch
- Incremental Compilation giờ cũng hoạt động trên backend LLVM — nếu có lỗi biên dịch thì bước LLVM Emit Object sẽ bị bỏ qua, vì vậy có thể kiểm tra lỗi nhanh hơn nhiều
- Type Resolution đã được làm lại hoàn toàn — đồ thị phụ thuộc nội bộ đã chuyển từ cấu trúc tuần hoàn sang DAG. Các kiểu chỉ được dùng làm namespace sẽ không còn bị phân tích không cần thiết nên kích thước binary cũng giảm. Thông báo lỗi vòng lặp phụ thuộc cũng cho thấy rõ hơn chỗ bị rối bắt đầu từ đâu
- Backend aarch64 — đang được phát triển tích cực với mục tiêu dùng làm mặc định cho chế độ Debug
- Fuzzer tích hợp đã mạnh hơn — được bổ sung fuzzing đa tiến trình dựa trên AST Smith, Infinite Mode và tính năng crash dump
Thay đổi ngôn ngữ (Breaking Changes)
Đây là các thay đổi cần migration:
@cImportđã được chuyển sang hệ thống build- Builtin
@Typeđã bị loại bỏ — được thay thế bằng các builtin riêng cho từng loại kiểu - Đã có Lazy Field Analysis — các kiểu chỉ được dùng làm namespace sẽ không phân tích field
- Không còn có thể đặt con trỏ bên trong packed union/struct
- Nhiều API liên quan đến
posixvàos.windowsđã bị loại bỏ
Thư viện chuẩn
heap.ArenaAllocatorđã trở thành thread-safe + lock-free, và allocatorheap.ThreadSafeđã bị loại bỏ- Đã bổ sung nén Deflate, và API giải nén cũng được đơn giản hóa hơn
std.cryptođược bổ sung AES-SIV, AES-GCM-SIV, Ascon-AEAD, Ascon-HashThread.Pool,GenericReader/AnyReader/FixedBufferStreamđã bị loại bỏ- Mạng trên Windows hoạt động cả khi không có
ws2_32.dll, và việc migration sang NtDll cũng đã hoàn tất
Cập nhật toolchain
Đã nâng lên LLVM 21, musl 1.2.5, glibc 2.43, header Linux 6.19, header macOS 26.4, và libc FreeBSD 15.0.
Định hướng bản phát hành tiếp theo (0.17.0)
Các mục tiêu chính là ổn định async I/O, chuyển backend aarch64 thành mặc định cho chế độ Debug, loại bỏ phụ thuộc vào LLD, và triển khai linker hỗ trợ Incremental Compilation.
2 bình luận
Đêm qua, Zig Language Server cũng đã phát hành bản 0.16.0.
Trước đây thường phải vài tháng sau khi ngôn ngữ ra mắt thì language server mới xuất hiện, nên đôi khi tôi ngại dùng phiên bản mới nhất. Nhưng lần này bản tương thích đã ra rất nhanh. Nhờ vậy, giờ có thể dùng phiên bản mới này nhanh hơn và dễ dàng hơn.
À, nhầm link...
https://github.com/zigtools/zls/releases