Zig'in Artımlı Derleme Mimarisi: Milisaniyelik Yeniden Derlemeler
Zig derleyicisinin ZIR, analiz birimleri ve bağımlılık grafiğiyle milisaniyelik artımlı derleme mimarisini inceliyoruz.
Zig çekirdek ekibi, derleyiciye artımlı (incremental) derleme desteğini olgunlaştırdı; artık gerçek dünya projelerinde günlük olarak kullanılabiliyor. Sistem, değişen fonksiyon ve bildirimleri tespit ederek yalnızca onları yeniden derliyor ve üretilen baytları doğrudan çıktı ikili dosyasına yamalıyor. Fizzy adlı bir piksel editörü üzerinde yapılan demoda ilk derleme yaklaşık 5 saniye sürerken, sonraki her değişiklik 50-70 milisaniyede tamamlanıyor.
Mimari iki ana aşamadan oluşuyor: kaynak dosyalarının AST'ye ve ardından ZIR (tipsiz SSA ara temsili) formuna dönüştürüldüğü dosya işleme aşaması ile tip kontrolü ve comptime değerlendirmesini kapsayan semantik analiz aşaması. Dosya işleme saf fonksiyon niteliğinde olduğundan hem kolayca paralelleştirilebiliyor hem de ZIR diske önbelleklenerek artımlı hale getiriliyor; bu optimizasyon yıllardır varsayılan olarak etkin.
Asıl zorluk semantik analizde ortaya çıkıyor. Ekip, struct/union düzeni, bildirim tipi, sabit değeri ve fonksiyon gövdesi gibi 'analiz birimleri' arasında ince taneli bir bağımlılık grafiği kurarak yalnızca etkilenen birimlerin yeniden analiz edilmesini sağlıyor. Bu, Zig'in dil tasarımının yıllar içinde artımlı derlemeyi kolaylaştıracak şekilde bilinçli olarak şekillendirildiğini gösteriyor. Özellik şu an master dalında mevcut; 0.16.0'da eksik olan bağlayıcı desteği 0.17.0 ile tamamlanacak.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz