Geri Dön
Valen'in yaratıcısı yeni dilleri C ABI olmadan Rust'a bağladı
SiTech AI Team2 წთ. საკითხავი

Valen'in yaratıcısı yeni dilleri C ABI olmadan Rust'a bağladı

Valen programlama dilinin yaratıcısı ve eski Google mühendisi Evan Ovadia, yeni dillerin Rust'ın jenerik kodunu doğrudan çağırabildiği deneysel bir yöntem gösterdi: Rust derleyicisi C ABI yerine kütüphane olarak çalışıyor.

Valen programlama dilinin geliştiricisi Evan Ovadia, yeni bir dili C uygulama ikili arayüzü (C ABI) üzerinden çağrı yapmadan doğrudan Rust'a bağlayan deneysel bir yöntem yayımladı. The Register çalışmayı 25 Eylül 2026'da haberleştirdi.

Eski bir Google mühendisi ve Mojo'nun temel katkıcılarından olan Ovadia, projeyi 17 Eylül 2026'daki blog yazısında anlattı. "Golden Spike" adını, 1869'da Utah'ta 17,6 karatlık altın çivinin ABD'nin ilk kıtalararası demiryolunu tamamladığı törenden aldı.

Valen programının Rust grafik kütüphanesi üzerinden çizdiği ilk kare

C ABI neden jeneriklerde tıkanıyor

Kütüphaneler diller arasında genellikle C olarak geçer: bir Rust crate'i fonksiyonlarını extern "C", tiplerini repr(C) olarak sunar ve diğer diller bunlara yabancı fonksiyon arayüzüyle erişir. Ancak C'de jenerik yoktur; bu yüzden jenerik bir Rust fonksiyonu dışarıdan çağrılamaz, Rust'ın kendi kararlı ABI'si de yoktur.

Ovadia, Rust'tan daha hızlı ve kullanıcı dostu bir alternatif isterken kendi wgpu tabanlı grafik kütüphanesi dahil Rust kütüphanelerini kullanmayı sürdürmek istiyordu. "Asıl soru, çözülmesi gereken asıl gizem şu: diller arası jenerikleri nasıl yaparız?" diye yazdı.

İki derleyici, tek dans

C bağlamaları üretmek yerine Valen derleyicisi artık rustc'yi doğrudan yönetiyor. Valen import'larını okur, karşılık gelen use bildirimlerini içeren küçük bir Rust lib.rs dosyası üretir ve bunu rustc_driver::run_compiler'a verir; bu da Rust derleyicisini kütüphane olarak çalıştırır.

En zor kısım örnekleme (instantiation): iki taraf da jenerik olduğu için iki derleyici bir fonksiyonun hangi somut sürümlerinin çağrıldığını birlikte bulmak zorunda. Ovadia buna "dans" diyor: rustc'nin Valen'le yazılmış bir fonksiyona ihtiyacı olduğunda, Valen'in monomorfize edicisi onu üretir. Bunun için rustc'ye yaklaşık 100 satır ek callback ekledi; bunlar özel ve kararsız API'lere dayanıyor ve upstream'e giremiyor, diye uyarıyor.

İlk render ve eksikler

Kanıt, Valen programının bir Rust penceresi açıp Rust trait'ini uygulayan bir Valen closure'ını jenerik bir Rust döngüsüne geçirmesi ve grafik kütüphanesinden bir kare çizmesiyle geldi. "Altın çivi yerine çakıldı ve kıtalararası derleyici doğdu" diye yazdı.

Sıradaki hedef, sınırda bellek güvenliği. Valen, paylaşılan değiştirilebilir referanslara izin veren derleme zamanı yaklaşımı group borrowing kullanıyor; prototip Rust sınırında bir miktar borrow denetimi yapıyor. Keskin köşeler de var: sınırda struct'lar sıfır boyutlu olmak zorunda, generational references devre dışı ve var olan bir Rust tipi henüz linear olarak bildirilemiyor. Depo Apache 2.0 lisansıyla yayımlandı ve hâlâ prototip.

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.