3 poin oleh bus710 3 hari lalu | 2 komentar | Bagikan ke WhatsApp

Diumumkan pada 14 April 2026. Ini adalah rilis yang dibuat oleh 244 kontributor dengan 1.183 commit selama 8 bulan.

I/O as an Interface — inti dari rilis ini

Ini adalah perubahan terbesar di rilis kali ini. Hampir semua hal yang bisa menyebabkan blocking, seperti filesystem, networking, timer, dan sinkronisasi, kini disatukan dalam antarmuka baru std.Io. Seperti Allocator dibutuhkan saat melakukan alokasi memori, sekarang semua kode yang menggunakan I/O harus menerima instance Io. Berkat ini, paket yang dapat digunakan ulang bisa dibuat tanpa bergantung pada model konkurensi tertentu, dan event loop juga kini bisa ditangani dengan benar di level bahasa.

Ada tiga implementasi:

  • Io.Threaded — implementasi lengkap berbasis thread. Mendukung cancellation, dan perilakunya tetap sama saat berpindah dari 0.15.x
  • Io.Evented — implementasi eksperimental dengan pendekatan user-space stack switching (green thread)
  • Io.Uring — implementasi PoC berbasis Linux io_uring

Kompiler

  • Incremental Compilation kini juga tersedia di backend LLVM — jika ada error kompilasi, tahap LLVM Emit Object dilewati sehingga error bisa diperiksa jauh lebih cepat
  • Type Resolution dirombak total — graf dependensi internal berubah dari struktur siklik menjadi DAG. Tipe yang hanya dipakai sebagai namespace tidak lagi dianalisis secara tidak perlu, sehingga ukuran biner juga berkurang. Pesan error untuk loop dependensi juga kini jauh lebih jelas menunjukkan sumber masalahnya
  • Backend aarch64 — sedang dikembangkan intensif dengan target menjadi default untuk mode Debug
  • Fuzzer bawaan menjadi lebih kuat — ditambahkan fuzzing multiproses berbasis AST Smith, Infinite Mode, dan fitur crash dump

Perubahan bahasa (Breaking Changes)

Ini adalah perubahan yang memerlukan migrasi:

  • @cImport dipindahkan ke build system
  • Builtin @Type telah dihapus — digantikan oleh builtin individual untuk tiap tipe
  • Lazy Field Analysis ditambahkan — tipe yang hanya dipakai sebagai namespace tidak akan dianalisis field-nya
  • Pointer tidak lagi bisa dimasukkan ke dalam packed union/struct
  • Banyak API terkait posix dan os.windows telah dihapus

Standard library

  • heap.ArenaAllocator kini menjadi thread-safe + lock-free, dan allocator heap.ThreadSafe telah dihapus
  • Kompresi Deflate telah ditambahkan, dan API dekompresinya juga dibuat lebih sederhana
  • std.crypto kini menambahkan AES-SIV, AES-GCM-SIV, Ascon-AEAD, dan Ascon-Hash
  • Thread.Pool, GenericReader / AnyReader / FixedBufferStream telah dihapus
  • Networking Windows kini dapat berjalan tanpa ws2_32.dll, dan migrasi NtDll juga telah selesai

Pembaruan toolchain

Naik ke LLVM 21, musl 1.2.5, glibc 2.43, header Linux 6.19, header macOS 26.4, dan libc FreeBSD 15.0.


Arah rilis berikutnya (0.17.0)

Target utamanya adalah stabilisasi async I/O, menjadikan backend aarch64 sebagai default untuk mode Debug, menghapus dependensi pada LLD, dan mengimplementasikan linker yang mendukung Incremental Compilation.

2 komentar

 
bus710 3 hari lalu

Tadi malam Zig Language Server juga merilis versi 0.16.

Sering kali language server baru muncul beberapa bulan setelah bahasanya dirilis, jadi saya kerap ragu untuk memakai versi terbaru, tetapi kali ini versi yang cocok benar-benar keluar dengan sangat cepat. Berkat itu, versi baru ini jadi bisa digunakan dengan lebih cepat dan mudah.