Zig 0.17 Yenilikleri: Yeni Derleme Sistemi, Kendi ELF Bağlayıcısı ve Artımlı Derleme (2026)

Alesta WEB

Zig 0.17 Yenilikleri: Yeni Derleme Sistemi, Kendi ELF Bağlayıcısı ve Artımlı Derleme (2026)

Kısa cevap: Zig programlama dilinin 0.17.0 sürümü 2 Ekim 2026'da yayımlandı. Beş aylık çalışmanın ürünü olan sürümde 206 katkıcıdan 925 commit var. Öne çıkanlar: yeniden tasarlanan derleme sistemi (yapılandırma ve çalıştırma ayrı süreçlerde, IDE'ler için Build Server Protocol), x86_64 Linux'ta varsayılan olarak açılan kendi ELF bağlayıcısı ve çoğu projede kullanılabilen artımlı derleme (-fincremental --watch). @cImport, a ** b dizi çarpımı ve i0 gibi özellikler kaldırıldığı için yükseltme kod değişikliği gerektiriyor (Zig 0.17 release notes, build system, incremental compilation).

Zig nedir, neden takip ediliyor? (What is Zig?)

Zig, C'nin yerini almayı hedefleyen, çöp toplayıcısı olmayan, sistem seviyesinde bir programlama dili. Gizli bellek ayırma yok, gizli kontrol akışı yok; derleme zamanında kod çalıştırma (comptime) ise dilin merkezinde. Zig'i asıl popüler yapan şeylerden biri de derleyicisinin aynı zamanda bir C/C++ derleyicisi ve çapraz derleme aracı olarak kullanılabilmesi: zig cc ile tek bir makineden Linux, Windows ve macOS için ikili dosya üretmek mümkün.

Dil hâlâ 1.0 öncesinde ve her sürümde kırıcı değişiklikler geliyor. Buna rağmen JavaScript çalışma ortamı Bun, terminal emülatörü Ghostty ve finans veritabanı TigerBeetle gibi üretimde kullanılan projeler Zig ile yazılıyor. Bu yüzden her ara sürüm, yalnızca Zig yazanları değil, bu araçları kullananları da ilgilendiriyor.

Derleme sistemi baştan tasarlandı

0.17'nin en büyük değişikliği derleme sisteminde. Önceden build.zig dosyasını çalıştıran süreç, derleme grafiğini kuran ve adımları yürüten süreçle aynıydı. Artık ikisi ayrıldı:

  • Yapılandırıcı süreç (configurer) build.zig'i çalıştırıp derleme grafiğini çıkarıyor.
  • Yapıcı süreç (maker) bu grafiği çalıştırıyor.

Yapılandırma ikili bir biçimde saklanıyor ve dosya boyutu yaklaşık %25 küçüldü. Pratik sonucu daha hızlı yeniden derleme: build.zig değişmediyse yapılandırma adımı baştan çalışmıyor.

Bu ayrımın ikinci önemli sonucu Build Server Protocol desteği. IDE'ler ve dil sunucuları artık projenin hangi modüllerden oluştuğunu, hangi bayraklarla derlendiğini doğrudan derleme sisteminden sorabiliyor. Bu, editörde otomatik tamamlama ve hata göstermenin daha isabetli olması demek.

Paket yönetimi de derleyiciden tamamen derleme sistemine taşındı. zig fetch, zig build ve zig init tek çatı altında toplandı; yerel paket dizini için --pkg-path bayrağı ve ZIG_LOCAL_PKG_DIR ortam değişkeni geldi.

Dizüstü bilgisayarda kod yazan geliştirici (Developer writing code on a laptop)
Artımlı derleme, büyük projelerde kaydet-çalıştır döngüsünü neredeyse anlık hale getiriyor. Fotoğraf: Christina @ wocintechchat.com M / Unsplash

Kendi ELF bağlayıcısı ve artımlı derleme

Zig ekibi uzun süredir LLVM'e ve dış bağlayıcılara bağımlılığı azaltmaya çalışıyor. 0.17'de kendi ELF bağlayıcısı önemli bir eşiği geçti: x86_64 ve SPARC64 için tam destek, statik ve paylaşımlı kütüphane üretimi, DWARF hata ayıklama bilgisi, GOT üretimi ve copy relocation desteği geldi.

Bu bağlayıcı x86_64 Linux'ta artımlı derleme için varsayılan olarak açık. Diğer durumlarda eski bağlayıcıyla özellik eşitliği sağlanana kadar kapalı kalıyor. Sürüm notlarına göre x86_64 Linux'u hedefleyen projelerin çoğu artık artımlı derlemeyi kullanabiliyor:

Metin
zig build -fincremental --watch

Bu komut dosya değişikliklerini izliyor ve yalnızca değişen fonksiyonları yeniden derleyip ikili dosyaya yamalıyor. Büyük projelerde kaydet-çalıştır döngüsü saniyelerden neredeyse anlık seviyeye iniyor.

Diğer arka uç gelişmeleri:

  • LLVM 22.1.8'e geçildi (döngü vektörleştirmesi bir hata nedeniyle hâlâ kapalı).
  • COFF bağlayıcısı (Windows) nesne/arşiv çıktısı, import kütüphaneleri, TLS ve kurucu/yıkıcı desteği kazandı.
  • SPIR-V bağlayıcısı artımlı derleme desteğiyle yeniden yazıldı.
  • WebAssembly arka ucu davranış testlerinin tamamını geçiyor.
  • loongarch64 için deneysel kendi arka ucu eklendi.

Dilde kaldırılan ve eklenenler

Kaldırılanlar yükseltmede en çok iş çıkaracak kısım:

KaldırılanYerine
@cImportAyrı translate-c paketi (derleme sistemi üzerinden)
void{}{}
errdefer |err| yakalamasıKaldırıldı; hata değerini başka yolla taşıyın
Dizi çarpımı a ** b@splat
i0 tipiKaldırıldı
@enumFromInt / @intFromEnum@fromBackingInt / @backingInt

Eklenenler arasında tavana yuvarlayan bölme için @divCeil, SPIR-V görüntü ve örnekleyici tipleri için @SpirvType var. @bitCast artık bayt sırasından bağımsız mantıksal bit gösterimine göre tanımlı; @hasDecl ise yalnızca pub bildirimlere bakıyor. Dilin dilbilgisi de resmî olarak tanımlandı ve tutarlılık için fuzz testinden geçirildi.

Standart kütüphane değişiklikleri

  • StackFallbackAllocator yerine tamponu argüman olarak alan BufferFirstAllocator geldi.
  • DebugAllocator yerini iş parçacığı güvenliği garantili SafeAllocator'a bıraktı.
  • std.fmt.allocPrint artık mem.Allocator.print() olarak çağrılıyor.
  • std.builtin kullanımdan kalkıyor, yerine std.lang. OptimizeMode → Optimize (küçük harfli etiketlerle).
  • ArrayList.getLastOrNull() → last(); bit set tipleri kısaldı (IntegerBitSet → Integer).

Geçiş rehberi

Sürüm notlarındaki örnekler, en sık karşılaşılacak üç değişikliği özetliyor:

TypeScript
// Enum dönüşümü
// Eski: @enumFromInt(index)
@fromBackingInt(@intCast(index))

// Dizi başlatma
// Eski: var sonuc = [1]u8{0} ** boyut;
var sonuc: [boyut]u8 = @splat(0);

// Biçimli metin
// Eski: std.fmt.allocPrint(arena, "{s}", .{x})
arena.print("{s}", .{x})

Önerilen sıra: önce bağımlılıklarınızın 0.17 uyumlu sürümlerini bekleyin ya da çatallayın, ardından derleyicinin hata mesajlarını izleyerek ilerleyin. @cImport kullanan projelerde C başlıklarını build.zig'de translate-c adımıyla çevirmek gerekiyor; bu, en çok zaman alan değişiklik olabilir. Zig ekibi sürüm notlarında bilinen sorunları da listeliyor (x86'da soft float derleme, zayıf libc sembolleri, Run adımlarında yanıt dosyaları). Üretim projelerinde geçişi bir yama sürümüne (0.17.1) bırakmak makul.

Alesta WEB olarak web projelerimizde Zig kullanmıyoruz, ama Zig ile yazılan araçların (özellikle Bun) web ekosistemine etkisini yakından izliyoruz. Diğer dil güncellemeleri için Go 1.27 ve Swift 6.4 yazılarımıza bakabilirsiniz.

Sık sorulan sorular

Zig 0.17 ne zaman çıktı?

2 Ekim 2026'da. Sürümde 206 katkıcıdan 925 commit var.

Artımlı derlemeyi nasıl açarım?

zig build -fincremental --watch ile. Şu an en olgun hali x86_64 Linux hedefinde.

@cImport neden kaldırıldı?

C başlık çevirisi derleyiciden çıkarılıp ayrı bir pakete taşındı. C başlıkları artık derleme sistemi üzerinden translate-c adımıyla çevriliyor.

Zig üretimde kullanılabilir mi?

Bun, Ghostty ve TigerBeetle gibi projeler kullanıyor. Ama dil 1.0 öncesinde; her sürümde kırıcı değişiklik bekleyin ve sürümü sabitleyin.

0.16'dan yükseltmek ne kadar sürer?

Projenin büyüklüğüne ve @cImport kullanımına bağlı. Küçük projeler birkaç saatte, C bağımlılığı yoğun projeler daha uzun sürede geçer.

İlgili yazılar: Bun 1.2 rehberi · Web yazılım hizmetlerimiz · İletişim

Kapak fotoğrafı: Chris Ried / Unsplash

Hazır mısınız?

Projenizi birlikte planlayalım

Haber sitesi, adisyon, QR menü ya da kurumsal web sitesi — ihtiyacınızı dinleyelim, demo hesabı açalım ve yazılı teklifimizi iletelim. Görüşme ücretsizdir.

WhatsApp