Julia'ya UnifiedIR: Derleyici Boru Hattı İçin Tek IR
Julia derleyicisi, ayrıştırma, lowering ve optimizasyonu tek IR yapısı UnifiedIR altında birleştiriyor; paylaşımlı kind kaydı ve kaynak izleme dahil.
Julia derleyici ekibi, ayrıştırma (JuliaSyntax), lowering (JuliaLowering) ve optimizasyon aşamalarını tek bir ara temsil biçiminde birleştiren UnifiedIR'ı tanıttı. Sıfır bağımlılığa sahip bu yapı, paylaşımlı bir AttrGraph depolama çekirdeği, düz bir ifade tablosu, doğrulayıcı, yazdırıcı/ayrıştırıcı ve referans yorumlayıcı içeriyor; ayrıca compact_graph!/collect_syntax! ile GC benzeri bir sıkıştırma mekanizması sunuyor.
JuliaSyntax'ın SyntaxGraph'ı artık doğrudan UnifiedIR.AttrGraph üzerine kuruluyor ve tüm bileşenler tek bir isim uzayına ayrılmış 'dialect' kayıt sistemini paylaşıyor (JuliaSyntax, JuliaLowering, formatter, core gibi statik olarak ayrılmış kimliklerle). JuliaLowering tarafında eklenen UnifiedBackend, geleneksel goto tabanlı doğrusal IR yerine if/loop/try bölgelerinden oluşan yapısal bir IR üretiyor ve her ifadeye kaynak koduna geri izlenebilen provenance bilgisi ekliyor.
Derleyici tarafında ise yalnızca paket modunda çalışan bir tip çıkarımı ve optimizasyon portu, mevcut standart boru hattıyla eşit veya daha iyi sonuçlar verecek şekilde doğrulanmış; SROA, inlining, ADCE, yapısallaştırma ve cell-promotion geçişlerini içeriyor. Mühendisler için bu değişiklik, Julia'nın iç derleyici mimarisinde birbirinden kopuk IR temsilleri yerine tek, izlenebilir ve test edilmiş bir substrate anlamına geliyor; @code_unified gibi yeni REPL araçlarıyla da doğrudan gözlemlenebiliyor.