Geri Dön
Roc'un Rust'tan Zig'e derleyici yeniden yazımı 487 günde özellik eşitliğine ulaştı
SiTech AI Team2 წთ. საკითხავი

Roc'un Rust'tan Zig'e derleyici yeniden yazımı 487 günde özellik eşitliğine ulaştı

Roc programlama dilinin ekibi 300.000 satırlık derleyiciyi Rust'tan Zig'e taşıdı ve 487 günde özgün derleyiciyle özellik eşitliğine ulaştı. Yazı; derleme sürelerini, bellek güvenliğini ve ekosistem uyumunu karşılaştırıyor.

Roc programlama dili üzerinde çalışan ekip, son bir buçuk yılda yaklaşık 300.000 satır Rust kodunu Zig'e taşıdı ve artık özgün derleyiciyle özellik eşitliğine ulaştı. Bu resmî bir sürüm değil — Roc'un ilk numaralı sürümü olan 0.1.0 yılın ilerleyen aylarında planlanıyor — ancak yeni derleyici gerçek programları derleyip çalıştırabiliyor.

İlk testlerden biri, bin satırdan kısa Roc koduyla yazılmış WASM-4 oyunu Rocci Bird oldu. Yeni derleyiciyle roc build --opt=size komutu 31 KB'lık bir WebAssembly ikili dosyası üretiyor; bu, özgün derleyicinin ürettiğinin yarısından az. Oyunun çalışması için derleyicide çok sayıda özelliğin tamamlanması gerekti.

487 günlük bir yeniden yazım

Yeniden yazım 487 gün sürdü; Bun'un ters yöndeki taşıması — yaklaşık 500.000 satır Zig'in Rust'a aktarılması — 11 günde tamamlandı. Yazar bu karşılaştırmayı yanıltıcı buluyor: Bun'da doğrudan bir port söz konusuydu, Roc ise derleyicinin büyük bölümü değişeceği için sıfırdan yazmayı seçti. Karar, Roc'un lambda set özelleştirme sistemindeki ve derleyicinin birkaç aşamasına yayılan mimari bir sorunun ardından alındı.

Neden Zig ve bellek güvenliğine ne oldu

Seçimde dört etken belirleyici oldu: derleme süreleri, bellek kontrolü — Roc arena ve struct-of-arrays düzenlerine dayanıyor, Zig ekosistemi ise tek bir küresel ayırıcı varsaymak yerine ayırıcıları parametre olarak geçiriyor — ekosistem uygunluğu ve bellek açısından güvensiz kodda sağlanan yardım. Rust derleyicisinde 300.000 satırda yaklaşık 1.200 unsafe kullanımı vardı ve ekip makine kodu üreten derleyicilerde bu tür kod yazmayı sürdüreceğini biliyordu.

Pratikte geçiş zarar vermedi. Claude Opus 4.8 tarafından sınıflandırılan hata kayıtları Rust derleyicisinde 2.596 hata (21'i bellek bozulmasıyla ilgili) gösterirken Zig derleyicisinde 431 hata (10'u bellek bozulmasıyla ilgili) görülüyor. On hatanın sekizi yanlış derlemeydi; kalan ikisi ise hata raporlamada yaşanan use-after-free hatalarıydı ve roc check ile roc bundle çıktısında dosya adlarının yerine geçersiz karakterler görünmesine yol açtı.

Derleme süreleri ve sırada ne var

Ubuntu 26 çalıştıran Intel masaüstünde 354 bin satırlık Rust derleyicisi soğuk derlemede 25,4 saniye, artımlı derlemede 3,4 saniye sürdü. 464 bin satıra ulaşan Zig sürümü soğuk derlemede 32,1 saniye, artımlı derlemede ise yaklaşık 35 milisaniye sürüyor — ancak yalnızca Zig 0.17.0'da, çünkü kararlı 0.16.0 sürümündeki bir hata bu kod tabanında artımlı derlemeyi bozuyor. Ekip nightly derleyiciye bağlı kalmak yerine bir sonraki kararlı sürümü beklemeyi seçti.

Derleyici ayrıca işi diskte ayrıştırmasız serileştirme çözme yöntemiyle önbelleğe alıyor: veri yapıları işaretçiler yerine 32 bitlik indeks dizileri olduğu için önbellekteki sonuçlar ayrıştırılmadan doğrudan belleğe yükleniyor. roc check'i iki kez çalıştırmak önceki çalıştırmanın çıktılarını neredeyse memcpy hızında yeniden kullanıyor.

SSiTech

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.