
Zig 0.17.0 build sistemini yeniden tasarlıyor, platform ve dil desteğini genişletiyor
Zig 0.17.0, beş aylık çalışmanın ardından 206 katılımcının 925 commit ile katkıda bulunduğu sürümle yeniden tasarlanan build sistemini, geliştirilmiş ELF bağlayıcısını, daha geniş platform desteğini ve dil güncellemelerini sunuyor.
Sürümün Temel Değişiklikleri
Zig 0.17.0, 206 katılımcının 925 commit'te tamamladığı beş aylık çalışmayı kapsıyor. Sürüm build sistemini önemli ölçüde değiştiriyor: maker işlemini configurer işleminden ayırıyor, önbellek sistemini yeniden tasarlıyor, configure cache poisoning'ini ortadan kaldırıyor ve Build Server Protocol ekliyor. Ayrıca lazy bağımlılıkların ve biçimlendirme parametrelerinin kapsamını genişletiyor.
ELF bağlayıcısı o kadar gelişti ki x86_64-linux'ta artımlı derleme herkes için çalışmalı. Paket yönetimine yerel yol geçersiz kılmaları eklenirken, Windows resource derlemesi harici bir pakete taşınıyor.
Hedeflerin Daha Geniş Kapsamı
Platform çalışmalarına aarch64-openbsd için yerel CI testleri ve aarch64-freebsd ile aarch64-netbsd için pull request CI dahil edildi. Zig, aarch64-openbsd'de zorunlu kod hardening kullanıyor, aarch64-windows ikili dosyalarının çoğunu etkileyen LLVM sorununu atlatıyor ve 32-bit ARM ile SPARC'ta çökme ve başarısız assertion durumları için stack trace sağlıyor. Pointer authentication opcode'leri artık AArch64 stack unwinding sırasında işleniyor.
loongarch32-linux-gnu hedefleri için destek eklendi; 64-bit SPARC ise genel kullanıma uygun düzeye ulaştı. Hedef bilgileri aarch64-switch, arm-gba, mipsel-psx ve powerpc-wiiu için eklendi. xtensa-linux desteği, C veya deneysel LLVM backend kullanılarak erken aşamada erişilebilir. Standart kütüphane ayrıca çok sayıda niş Linux, OpenBSD ve no-libc hedefi için destek kazandı.
Dil ve Kütüphane Değişiklikleri
Zig'in biçimsel grameri ve implementasyonu, iki aşamada kullanılan üretilmiş özyinelemeli iniş ayrıştırıcıyla uzlaştı. @bitCast builtin'ı artık değerin mantıksal bit gösterimini yeniden yorumlar ve hedef endianness'ten bağımsız olarak aynı davranışı gösterir. Semantiği diziler ve vektörler için değişti; extern struct veya union'lardan cast'lere artık izin verilmiyor. Sürüm notları, bazı kodların derleme hatası olmadan bozulabileceğini belirterek dizi veya vektör kullanımını kontrol etmeyi öneriyor.
@cImport builtin'ı kaldırıldı; std.Build.Step.TranslateC ise resmi ZSF translate-c paketine açık bağımlılık kazandırmak için kullanımdan kaldırılmış olarak işaretlendi. Yeni @backingInt ve @fromBackingInt builtin'ları, eski @intFromEnum ve @enumFromInt builtin'larını değiştiriyor. Zig 0.17.0 ayrıca @SpirvType ekliyor, SafeAllocator'ı ortadan kaldırıyor ve StackFallbackAllocator'ı yeniden tasarlıyor.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.