Lua dilinin növ yoxlama variantı olan Luau üçün açıq mənbə

Lua dilinin inkişafını davam etdirən və Lua 5.1 ilə geriyə uyğun olan Luau proqramlaşdırma dilinin ilk müstəqil buraxılışının açıq mənbə və nəşrini elan etdi. Luau, ilk növbədə, skript mühərriklərini tətbiqlərə yerləşdirmək üçün nəzərdə tutulmuşdur və yüksək performansa və aşağı resurs istehlakına nail olmaq məqsədi daşıyır. Layihə kodu C++ dilində yazılmışdır və MIT lisenziyası altında açıqdır.

Luau, Lua-nı növ yoxlama imkanları və sətir hərfi kimi bəzi yeni sintaktik konstruksiyalarla genişləndirir. Dil Lua 5.1 və qismən daha yeni versiyalarla geriyə uyğundur. Lua Runtime API dəstəklənir, bu sizə Luau-nu mövcud kod və bağlamalarla istifadə etməyə imkan verir. Dilin işləmə müddəti ciddi şəkildə yenidən işlənmiş Lua işləmə vaxtı 5.1 koduna əsaslanır, lakin tərcüməçi tamamilə yenidən yazılır. İnkişaf zamanı Lua ilə müqayisədə daha yüksək performansa nail olmaq üçün bəzi yeni optimallaşdırma üsullarından istifadə edilmişdir.

Layihə Roblox tərəfindən hazırlanmışdır və Roblox Studio redaktoru da daxil olmaqla, bu şirkətin oyun platforması, oyunları və istifadəçi proqramlarının kodunda istifadə olunur. Əvvəlcə Luau qapalı qapılar arxasında inkişaf etdirildi, lakin sonda cəmiyyətin iştirakı ilə gələcək birgə inkişaf üçün onu açıq layihələr kateqoriyasına keçirmək qərara alındı.

Əsas xüsusiyyətlər:

  • Dinamik və statik yazma arasında ara mövqe tutan tədricən yazmaq. Luau, xüsusi annotasiyalar vasitəsilə növ məlumatlarını göstərərək, lazım olduqda statik yazmaqdan istifadə etməyə imkan verir. Daxili "hər hansı", "nil", "boolean", "number", "string" və "thread" növləri təmin edilir. Eyni zamanda, dəyişənlərin və funksiyaların tipini açıq şəkildə təyin etmədən dinamik tipləşdirmədən istifadə etmək imkanı qorunur. funksiya foo(x: rəqəm, y: sətir): boolean yerli k: sətir = y:rep(x) qayıt k == “a” sonu
  • "\5.3x**" (onaltılıq rəqəm), "\u{**}" (Unicode simvol) və "\z" (sətrin sonu) kimi sətir literallarına dəstək (Lua 0-də olduğu kimi), həmçinin ədəd formatını vizuallaşdırmaq bacarığı (1 əvəzinə 000_000_1000000 yaza bilərsiniz), onaltılıq (0x...) və ikilik ədədlər üçün hərflər (0b......).
  • Yeni döngə iterasiyasına keçmək üçün mövcud "break" açar sözünü tamamlayan "davam et" ifadəsinə dəstək.
  • Mürəkkəb təyinetmə operatorlarına dəstək (+=, -=, *=, /=, %=, ^=, ..=).
  • Blokun icrası zamanı hesablanmış dəyəri qaytaran ifadələr şəklində şərti "if-then-else" bloklarının istifadəsinə dəstək. Siz blokda ixtiyari sayda elseif ifadəsini təyin edə bilərsiniz. yerli maxValue = əgər a > b onda a başqa b yerli işarə = əgər x < 0 olarsa -1 elseif x > 0 onda 1 başqa 0
  • Etibarsız kodu işə salmağa imkan verən izolyasiya rejiminin (sandbox) olması. Bu xüsusiyyət, öz kodunuzun və başqa bir tərtibatçı tərəfindən yazılmış kodun, məsələn, təhlükəsizliyinə zəmanət verilməyən üçüncü tərəf kitabxanalarının yan-yana işə salınmasını təşkil etmək üçün istifadə edilə bilər.
  • Potensial təhlükəsizlik problemləri yarada biləcək funksiyaların silindiyi standart kitabxananın məhdudiyyəti. Məsələn, "io" (fayllara daxil olmaq və işə salma prosesləri), "paket" (fayllara daxil olmaq və modulları yükləmək), "os" (fayllara daxil olmaq və mühit dəyişənlərini dəyişdirmək üçün funksiyalar), "debug" ( yaddaşla təhlükəli əməliyyat) kitabxanaları. , “dofile” və “loadfile” (FS girişi).
  • Statik kodun təhlili, səhvlərin müəyyən edilməsi (linter) və növlərin düzgün istifadəsinin yoxlanılması üçün alətlərin təmin edilməsi.
  • Öz yüksək performanslı analizator, bayt kodu tərcüməçisi və kompilyatoru. Luau hələ JIT tərtibini dəstəkləmir, lakin Luau tərcüməçisinin bəzi hallarda performans baxımından LuaJIT ilə olduqca müqayisə oluna biləcəyi iddia edilir.

Mənbə: opennet.ru

Добавить комментарий