Bun, 535,496 satır Zig kodunu dört ayda Rust’a taşıdı
Bun v1.4.0 ile 535,496 satır Zig kodu Rust’a taşındı; süreçte yoğun şekilde Claude Fable 5 kullanıldı, 128 eski bug kapatıldı ve bellek sızıntıları büyük ölçüde giderildi.
Bun ekibi, tekrarlayan bellek güvenliği sorunlarını azaltmak için projeyi 535,496 satır Zig kodundan Rust’a taşıdı ve bu çalışma dört ayın sonunda Bun v1.4.0 olarak yayımlandı. Ana hedef, stil rehberlerine güvenmek yerine Rust’ın tip sistemi ve araç zinciri üzerinden use-after-free, double-free ve leak türü hataları ortadan kaldırmaktı.
Jarred Sumner, bu ölçek için manuel bir geçişin küçük bir ekiple yaklaşık bir yıl süreceğini ve bu süreçte diğer çalışmaların dondurulması gerekeceğini öngörüyordu. Bunun yerine, Zig’ten Rust’a portu büyük ölçüde otomatikleştirmek için, yaklaşık 50 dinamik workflow içeren bir orkestrasyonla, Anthropic’in henüz yayımlanmamış Claude Fable 5 sürümünü kullandı.
Strateji, Zig kodunu Rust’a transpile etmek, sonucu bir milyondan fazla test assertion’ı ile doğrulamak ve Zig kalıpları ile tiplerini Rust karşılıklarına bağlayan ayrıntılı bir porting rehberine dayanıyordu. Bu süreçte, Zig’ten Rust’a dönüşüm kurallarını açıklayan PORTING.md ve her struct alanının lifetime bilgisini tutan LIFETIMES.tsv gibi dokümanlar temel referans noktaları oldu.
Uygulama ajanları dosyaları çevirirken, iki adversarial reviewer ajan yalnızca diff’leri inceledi; ayrı bir fixer ajan ise bu incelemelerden gelen önerileri uyguladı. Böylece çeviri, inceleme ve düzeltme rolleri birbirinden ayrılmış şekilde çalıştı.
Sistem, dört ayrı workspace shard’ı üzerinde, her birinde 16 ajan olacak şekilde toplam 64 Claude instance’ını paralel çalıştırdı ve zirvede dakikada 1,300 satıra, saatte 695 commite kadar çıktı. Tüm test setinin eksiksiz geçmesi için 5.9B uncached input token, 690M output token ve 72B cached read harcandı; bu da yaklaşık 165,000 dolar API maliyetine ulaştı ve üç mühendisin bir yıllık manuel portuna alternatif oldu.
Mekanik port süreci, yüzeyde doğru görünen ancak 19 ince semantik regresyona yol açan dönüşümler üretti. Bu ve diğer problemler, 11 tur Claude Code Security incelemesi ve 7/24 fuzzing çalıştırmasıyla tespit edilip giderildi.
Sonuçta Bun v1.4.0’daki Rust implementasyonu, v1.3.14’ten kalan 128 kalıcı bug’ı kapattı, native bellek sızıntılarını ortadan kaldırdı ve HTTP throughput’unu yüzde olarak 2–5 aralığında artırdı. 2,000 ardışık Bun.build() çağrısı içeren bir stress test’te, Rust sürümünün bellek kullanımı 609 MB civarında plato yaparken, eski Zig sürümünde 6.7 GB seviyesinin üzerine tırmanıyordu.
Bu geçiş, Zig’in yaratıcısı Andrew Kelley’den, gözden geçirilmemiş makine üretimi koda ve test setlerine bu ölçüde dayanılması konusunda eleştiri aldı. Aynı zamanda, Bun’ın artık milyon satır ölçeğinde LLM üretimi kod tabanlarının,
Neden önemli
Bu port, büyük bir üretim kod tabanının dört ay gibi kısa sayılabilecek bir sürede, yoğun LLM kullanımıyla yeni bir dile taşınabildiğini gösteriyor. Aynı zamanda, bellek güvenliği odaklı bir mimari değişikliğin, pratikte yüzlerce eski bug’ı ve ciddi bellek sızıntılarını temizleyebildiğine işaret ediyor. Ortaya çıkan tablo, bir yandan test setlerine ve otomatik security incelemelerine verilen ağırlığın bu tür projelerde kritik olduğunu, diğer yandan da makine üretimi milyon satırlık kodun uzun vadeli bakımı konusunda hâlâ soru işaretleri bulunduğunu ortaya koyuyor.
Sinyal mi, gürültü mü?
Bu haber önemli mi, yoksa abartı mı? Başkalarının ne dediğini görmeden önce sen karar ver.