Lua dilinin tip kontrol çeşidi olan Luau için açık kaynak

Lua dilinin geliştirilmesine devam eden ve Lua 5.1 ile geriye dönük uyumlu olan Luau programlama dilinin ilk bağımsız sürümünün açık kaynak olduğunu ve yayınlandığını duyurdu. Luau dili öncelikle komut dosyası motorlarını uygulamalara yerleştirmeyi amaçlamaktadır ve yüksek performans ve düşük kaynak tüketimi elde etmeyi amaçlamaktadır. Proje kodu C++ ile yazılmıştır ve MIT lisansı altında açıktır.

Luau, Lua'yı tür kontrol yetenekleri ve dize değişmezleri gibi bazı yeni sözdizimsel yapılarla genişletir. Dil, Lua 5.1 ve kısmen daha yeni sürümlerle geriye dönük olarak uyumludur. Lua Çalışma Zamanı API'si desteklenerek Luau'yu mevcut kod ve bağlamalarla kullanmanıza olanak tanır. Dil çalışma zamanı, büyük ölçüde yeniden işlenmiş Lua çalışma zamanı 5.1 kodunu temel alır, ancak yorumlayıcı tamamen yeniden yazılmıştır. Geliştirme sırasında Lua'ya kıyasla daha yüksek performans elde etmek için bazı yeni optimizasyon teknikleri kullanıldı.

Proje, Roblox tarafından geliştirildi ve Roblox Studio editörü de dahil olmak üzere bu şirketin oyun platformunun, oyunlarının ve kullanıcı uygulamalarının kodunda kullanılıyor. Başlangıçta Luau kapalı kapılar ardında geliştirildi, ancak sonunda topluluğun katılımıyla daha fazla ortak gelişim için açık projeler kategorisine aktarılmasına karar verildi.

Ana Özellikler:

  • Kademeli yazma, dinamik ve statik yazma arasında bir ara konumda yer alır. Luau, özel açıklamalar aracılığıyla tür bilgilerini belirterek statik yazmayı gerektiği gibi kullanmanıza olanak tanır. Yerleşik "any", "nil", "boolean", "number", "string" ve "thread" türleri sağlanmıştır. Aynı zamanda, değişkenlerin ve fonksiyonların türünü açıkça tanımlamadan dinamik tiplemeyi kullanma olasılığı da korunur. function foo(x: sayı, y: string): boolean yerel k: string = y:rep(x) return k == “a” end
  • "\5.3x**" (onaltılık sayı), "\u{**}" (Unicode karakter) ve "\z" (satır sonu) gibi dize değişmez değerleri (Lua 0'teki gibi) ve ayrıca sayı biçimlendirmesini görselleştirme yeteneği (1 yerine 000_000_1000000 yazabilirsiniz), onaltılık sayılar (0x...) ve ikili sayılar (0b......) için değişmez değerler.
  • Yeni bir döngü yinelemesine atlamak için mevcut "break" anahtar sözcüğünü tamamlayan "continue" ifadesi desteği.
  • Bileşik atama operatörleri desteği (+=, -=, *=, /=, %=, ^=, ..=).
  • Bloğun yürütülmesi sırasında hesaplanan değeri döndüren ifadeler biçimindeki koşullu "if-then-else" bloklarının kullanımına yönelik destek. Bir blokta isteğe bağlı sayıda elseif ifadesi belirtebilirsiniz. yerel maksimumDeğer = eğer a > b sonra a else b yerel işaret = eğer x < 0 sonra -1 elseif x > 0 sonra 1 else 0
  • Güvenilmez kod çalıştırmanıza izin veren bir izolasyon modunun (sanal alan) varlığı. Bu özellik, kendi kodunuzun ve başka bir geliştiricinin (örneğin, güvenliği garanti edilemeyen üçüncü taraf kitaplıkların) yazdığı kodun yan yana başlatılmasını düzenlemek için kullanılabilir.
  • Potansiyel olarak güvenlik sorunları yaratabilecek işlevlerin yer aldığı standart kitaplık sınırlaması kaldırıldı. Örneğin, “io” (dosyalara erişme ve işlemleri başlatma), “paket” (dosyalara erişme ve modülleri yükleme), “os” (dosyalara erişme ve ortam değişkenlerini değiştirme işlevleri), “debug” (bellekle güvenli olmayan işlem) kitaplıkları , “dofile” ve “loadfile” (FS erişimi).
  • Statik kod analizi, hataların belirlenmesi (linter) ve türlerin doğru kullanımının kontrol edilmesi için araçlar sağlamak.
  • Kendi yüksek performanslı ayrıştırıcısı, bayt kodu yorumlayıcısı ve derleyicisi. Luau henüz JIT derlemesini desteklemiyor ancak Luau yorumlayıcısının bazı durumlarda performans açısından LuaJIT ile oldukça karşılaştırılabilir olduğu iddia ediliyor.

Kaynak: opennet.ru

Yorum ekle