4 puan yazan xguru 2025-09-19 | 3 yorum | WhatsApp'ta paylaş
  • Rust uygulamalarına kolayca gömülebilen bir betik dili ve yürütme motoru
  • Harici betikler aracılığıyla dinamik mantık eklemek veya özel DSL'ler oluşturmak için tasarlanmıştır
  • Rust ile yüksek uyumluluk sunar ve performans, güvenlik ve genişletilebilirliğin tamamını gözeten bir mimari sağlar
  • Rust 1.66.0+ ve üzerindeki tüm Rust destekli platformlarda (WASM, no-std) çalışır
  • Söz dizimi, JavaScript + Rust'a benzeyen dinamik tipli bir dildir
  • Performans: tek çekirdekli 2.6GHz Linux VM üzerinde 1 milyon yineleme 0.14 saniyede tamamlanır
  • Doğal Rust entegrasyonu: Rust fonksiyonlarını, tiplerini, getter/setter'larını, metotlarını ve indeksleyicilerini destekler
  • Rust değerleri, betiklere değişken/sabit olarak aktarılabilir (Scope kullanılarak)
  • Başlıca veri tipleri desteği: boolean, tamsayı, kayan noktalı sayı, Decimal, dize, Unicode karakteri, dizi, bayt dizisi, nesne haritası
  • Rhai betiklerinde tanımlanan fonksiyonlar Rust'tan çağrılabilir
  • Bağımlılıklar minimum düzeydedir (yalnızca smallvec, thin-vec gibi az sayıda kütüphane kullanılır)
  • Re-entrant bir motor: sync ile Send + Sync olabilir
  • AST derleme ve optimizasyon özellikleri sunar
  • Eklenti sistemi ve makro tabanlı API genişletme desteği vardır
  • Fonksiyon/operatör aşırı yükleme, fonksiyon işaretçileri, currying, closure'lar ve bazı OOP kalıplarını destekler
  • Modül sistemi sunar; kod tabanı dinamik olarak yapılandırılabilir
  • serde serileştirme/deserileştirme desteği vardır (isteğe bağlı)
  • Hata ayıklama arayüzü sunar

Güvenlik ve emniyet

  • Don’t Panic garantisi: panic oluşursa bu bir hata kabul edilir, host sistem güvende kalır
  • Sandbox çalıştırma: açıkça izin verilmedikçe dış ortam değiştirilemez
  • Kötü niyetli saldırılara karşı koruma: stack overflow, aşırı veri ve sonsuz çalışma engellenir
  • Çalışma ilerleyişi izlenebilir ve manuel olarak durdurulabilir
  • Miri denetiminden başarıyla geçti

Özel dil oluşturmak isteyenler için

  • Rhai, DSL olarak kullanılabilir
  • Döngüler gibi belirli dil özellikleri devre dışı bırakılabilir
  • Anahtar kelimeler/operatörler devre dışı bırakılabilir ve sınırlandırılabilir
  • Kullanıcı tanımlı operatörler ve söz dizimi genişletmeleri eklenebilir

Ek kaynaklar

Lisans

  • Apache 2.0 veya MIT lisanslarından biri seçilebilir
  • Katkı yapılan kodlar varsayılan olarak çift lisansla sunulur

3 yorum

 
sftblw 2025-09-19

Bir betik dili arıyorsanız, are we game yet üzerinde epey bir liste var.

https://arewegameyet.rs/ecosystem/scripting/

O listede yok ama yakın zamanda GPT'ye sorarken koto adlı bir betik dili de keşfettim; kısa bir göz attım ama buna da iyi gibi göründü.

https://koto.dev/

Araştırırken roto diye bir şey daha buldum; bunun tam olarak ne olduğuna kadar bakmadım ama geliştiren yer bir şekilde tanıdık geldi.

https://github.com/NLnetLabs/roto

 
coremaker 2025-09-19

wasm playground zaman ölçümü örnekleri var ama hızlı değil mi?

 
sftblw 2025-09-19

Betik amaçlı bir dil olduğu için hızlı olmaması muhtemelen normaldir.