« Tüm yayınlar

RTS: Rust ile Yazılmış TypeScript'ten Native Koda Derleyici

RTS, TypeScript'i Cranelift ile doğrudan makine koduna derleyen Rust tabanlı bir motor. JIT/AOT modları, kendi std kütüphanesi ve HTML/CSS render motoruyla V8'siz bir yaklaşım sunuyor.

RTS, TypeScript kodunu SWC AST üzerinden Cranelift ile doğrudan makine koduna derleyen, V8 veya başka bir JS motoruna bağımlı olmayan bir derleyici ve çalışma zamanı. Proje hem JIT (bellekte derleyip çalıştırma) hem de AOT (bağımsız ~3 KB ikili dosya üretme) modlarını destekliyor ve tamamen Rust ile yazılmış, OpenSSL veya libuv gibi dış bağımlılıklar olmadan çalışan 40'tan fazla ad alanına sahip kendi standart kütüphanesini (io, fs, crypto, thread, http_server vb.) sunuyor.

Projenin motoru sıfırdan, PolyValue NaN-boxing, şekil tabanlı (shape) nesne temsili ve inline cache'ler üzerine kurulu yeni bir değer modeliyle yeniden yazılmış. Geliştirme ekibi şu an doğruluk odaklı bir kampanya yürütüyor: 609 bağımsız TS test senaryosunun 456'sı (%77) Bun ve Node ile birebir aynı sonucu veriyor. Performans tarafında ise tablo dürüst bir tablo çiziyor — tam sayı ağırlıklı iş yüklerinde (Monte Carlo π hesaplamaları gibi) RTS'nin AOT modu Bun'dan kat kat hızlı çıkarken, ~70 ms'lik AOT başlatma maliyeti kısa süreli işlerde performansı baskılıyor. Eski motorun ulaştığı 5.4 kat hız avantajı hedef olarak korunuyor ama henüz yeni motora tam taşınmadı.

Dikkat çeken bir diğer bileşen ise crates/rts-dom adlı, tarayıcı render hattını (DOM, CSS cascade, layout, paint) baştan uygulayan saf Rust tabanlı HTML/CSS motoru. Bu motor flexbox, CSS animasyonları, birim hesaplamaları ve gerçek Chrome ölçümleriyle piksel bazında doğrulanmış bir grid/layout desteği sunuyor. Dil desteği tarafında sınıflar, generator/async fonksiyonlar, Proxy, TypedArray'ler ve büyük kısmı Web/Node API yüzeyi zaten çalışıyor; dekoratörler ve tam generic/tip denetleyicisi gibi özellikler ise henüz eksik.

Mühendisler için RTS, JS motoru olmadan native TypeScript çalıştırma fikrinin somut, ölçülebilir bir uygulaması niteliğinde. Cranelift tabanlı codegen, boxing'siz tipli ABI ve kendi runtime'ı ile hem gömülü/CLI araçları hem de performans kritik sunucu iş yükleri için alternatif bir yürütme modeli sunuyor; ancak proje henüz olgunlaşma ve tam JS uyumluluğu aşamasında.

» KaynakHashnode #16