Zig 0.16.0 เปิดตัว
(ziglang.org)เผยแพร่เมื่อวันที่ 14 เมษายน 2026 เป็นรีลีสที่สร้างขึ้นจาก 1,183 คอมมิตตลอด 8 เดือนโดยผู้มีส่วนร่วม 244 คน
I/O as an Interface — หัวใจสำคัญของรีลีสนี้
นี่คือการเปลี่ยนแปลงที่ใหญ่ที่สุดในรีลีสนี้ สิ่งเกือบทั้งหมดที่อาจเกิดการบล็อกได้ เช่น ไฟล์ซิสเต็ม เครือข่าย ตัวจับเวลา และการซิงโครไนซ์ ถูกนำมารวมไว้ภายใต้อินเทอร์เฟซ std.Io ใหม่ เช่นเดียวกับที่การจัดสรรหน่วยความจำต้องใช้ Allocator ตอนนี้โค้ดทั้งหมดที่ใช้ I/O ก็ต้องรับอินสแตนซ์ Io ด้วยเช่นกัน ทำให้สามารถสร้างแพ็กเกจที่นำกลับมาใช้ซ้ำได้โดยไม่ขึ้นกับโมเดล concurrency และยังทำให้ event loop ถูกจัดการได้อย่างเหมาะสมในระดับภาษา
มี implementation อยู่ 3 แบบ:
Io.Threaded— implementation ที่สมบูรณ์บนพื้นฐานของเธรด รองรับ cancellation และเมื่อย้ายมาจาก 0.15.x ก็จะยังคงพฤติกรรมเดิมไว้Io.Evented— implementation เชิงทดลองที่ใช้วิธี user-space stack switching (green thread)Io.Uring— implementation แบบ PoC ที่อิงกับ Linuxio_uring
คอมไพเลอร์
- รองรับ Incremental Compilation บน LLVM backend ด้วย — หากมี compile error จะข้ามขั้นตอน LLVM Emit Object จึงตรวจพบข้อผิดพลาดได้เร็วขึ้นมาก
- ยกเครื่อง Type Resolution ใหม่ทั้งหมด — กราฟ dependency ภายในเปลี่ยนจากโครงสร้างแบบวนกลับเป็น DAG ประเภทที่ใช้เป็นเพียง namespace จะไม่ถูกวิเคราะห์โดยไม่จำเป็น ทำให้ขนาดไบนารีลดลงด้วย ข้อความ error ของ dependency loop ก็จะแสดงได้ชัดขึ้นมากว่าปัญหาเริ่มพันกันจากตรงไหน
- aarch64 backend — กำลังพัฒนาอย่างหนักโดยมีเป้าหมายให้เป็นค่าเริ่มต้นในโหมด Debug
- Fuzzer ในตัวแข็งแกร่งขึ้น — เพิ่มการ fuzzing แบบหลายโปรเซสบนพื้นฐาน AST Smith, Infinite Mode และความสามารถในการสร้าง crash dump
การเปลี่ยนแปลงของภาษา (Breaking Changes)
ต่อไปนี้คือการเปลี่ยนแปลงที่ต้องมีการย้ายโค้ด:
@cImportถูกย้ายไปอยู่ในระบบ build- built-in
@Typeถูกถอดออก — แทนที่ด้วย built-in แยกตามแต่ละประเภท - มี Lazy Field Analysis เพิ่มเข้ามา — ประเภทที่ใช้เป็นเพียง namespace จะไม่วิเคราะห์ฟิลด์
- ไม่สามารถใส่พอยน์เตอร์ไว้ใน packed union/struct ได้อีกต่อไป
- API ที่เกี่ยวข้องกับ
posixและos.windowsจำนวนมากถูกนำออก
ไลบรารีมาตรฐาน
heap.ArenaAllocatorเปลี่ยนเป็น thread-safe + lock-free และheap.ThreadSafeAllocator ถูกถอดออก- เพิ่มการบีบอัด Deflate และ API สำหรับคลายบีบอัดก็เรียบง่ายขึ้น
- เพิ่ม AES-SIV, AES-GCM-SIV, Ascon-AEAD, Ascon-Hash ใน
std.crypto Thread.Pool,GenericReader/AnyReader/FixedBufferStreamถูกถอดออก- Windows networking ทำงานได้โดยไม่ต้องพึ่ง
ws2_32.dllและการย้ายไป NtDll ก็เสร็จสมบูรณ์แล้ว
อัปเดตทูลเชน
อัปเกรดเป็น LLVM 21, musl 1.2.5, glibc 2.43, Linux 6.19 headers, macOS 26.4 headers และ FreeBSD 15.0 libc
ทิศทางของรีลีสถัดไป (0.17.0)
เป้าหมายหลักคือทำให้ async I/O เสถียร เปลี่ยน aarch64 backend ให้เป็นค่าเริ่มต้นในโหมด Debug เอาการพึ่งพา LLD ออก และทำลิงเกอร์ที่รองรับ Incremental Compilation
2 ความคิดเห็น
เมื่อคืนนี้ Zig Language Server ก็ได้ออกเวอร์ชัน 0.16 เช่นกัน
ก่อนหน้านี้มักมีหลายครั้งที่ language server ออกตามหลังตัวภาษาไปหลายเดือน จนทำให้ไม่ค่อยอยากใช้เวอร์ชันล่าสุด แต่ครั้งนี้มีเวอร์ชันที่เข้าคู่กันออกมาเร็วมากจริง ๆ ครับ ทำให้สามารถใช้งานเวอร์ชันใหม่นี้ได้เร็วและง่ายขึ้นมาก
อ๊ะ ลิงก์...
https://github.com/zigtools/zls/releases