Codul Luau, o variantă a limbajului Lua cu verificarea tipurilor, a fost deschis.

A fost anunțat deschiderea codului sursă și publicarea primei versiuni separate a limbajului de programare Luau, care continuă dezvoltarea limbajului Lua și este complet compatibil cu Lua 5.1. Limbajul Luau este destinat în principal încorporării handler-ilor script în aplicații și are ca obiectiv obținerea unei performanțe ridicate și a unui consum minim de resurse. Codul proiectului este scris în C++ și este deschis sub licența MIT.

Luau extinde Lua cu funcționalități de verificare a tipurilor și unele noi constructe sintaxice, cum ar fi literele de șir. Limbajul este compatibil cu Lua 5.1 și parțial cu versiunile mai recente. Suportă API Lua Runtime, ceea ce permite utilizarea Luau cu codul și binding-urile existente. Runtime-ul limbajului se bazează pe un cod Lua runtime 5.1 refăcut, dar interpretul este complet rescris. În dezvoltare au fost utilizate unele noi tehnici de optimizare care au dus la o performanță mai bună în comparație cu Lua.

Proiectul a fost dezvoltat de compania Roblox și este utilizat în codul platformei de jocuri, jocurilor și aplicațiilor utilizatorilor acestei companii, inclusiv editorul Roblox Studio. Inițial, Luau a fost dezvoltat în secret, dar s-a decis în cele din urmă să fie transformat într-un proiect deschis pentru dezvoltarea ulterioară în colaborare cu comunitatea.

Caracteristici principale:

  • Sistemul de tipuri gradat (Gradual typing), care ocupă o poziție intermediară între tipizarea dinamică și tipizarea statică. Luau permite utilizarea tipizării statice după necesitate, specificând informații despre tipuri prin anotații speciale. Sunt furnizate tipuri încorporate precum „any”, „nil”, „boolean”, „number”, „string” și „thread”. De asemenea, se păstrează posibilitatea utilizării tipizării dinamice fără a defini explicit tipurile variabilelor și funcțiilor. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • Suport pentru literele de șir (ca în Lua 5.3), cum ar fi „\0x**” (număr hexazecimal), „\u{**}” (simbol Unicode) și „\z” (sfârșitul șirului), precum și posibilitatea de a formata numerele vizibil (se poate scrie 1_000_000 în loc de 1000000), litere pentru numerele hexazecimale (0x…) și binare (0b………).
  • Suport pentru expresia „continue”, care completează cuvântul cheie existent „break”, pentru a trece la o nouă iterație a buclei.
  • Sprijin pentru operatorii de atribuire compuși (+=, -=, *=, /=, %=, ^=, ..=).
  • Sprijin pentru utilizarea blocurilor condiționale „if-then-else” sub formă de expresii care returnează o valoare calculată în timpul execuției blocului. Este permisă specificarea unui număr arbitrar de expresii elseif în bloc. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Disponibilitatea unui mod de izolare (sandbox) care permite executarea codului nesigur. Această capacitate poate fi utilizată pentru a organiza rularea paralelă a propriului cod și a codului scris de alți dezvoltatori, cum ar fi biblioteci externe a căror securitate nu poate fi garantată.
  • Limitarea bibliotecii standard din care sunt eliminate funcțiile care pot crea probleme de securitate. De exemplu, din setul standard sunt excluse bibliotecile „io” (acces la fișiere și execuție de procese), „package” (acces la fișiere și încărcarea modulelor), „os” (sunt eliminate funcțiile de acces la fișiere și modificarea variabilelor de mediu), „debug” (manipularea nesigură a memoriei), „dofile” și „loadfile” (acces la FS).
  • Furnizarea de instrumente pentru analiza statică a codului, identificarea erorilor (linter) și verificarea corectitudinii utilizării tipurilor.
  • Parser, interpret și compilator proprii de înaltă performanță. Luau nu suportă deocamdată compilarea JIT, dar se afirmă că interpretul Luau este comparabil în termeni de performanță cu LuaJIT în anumite situații.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster