Este disponibil limbajul de programare Lua 5.5

După cinci ani de dezvoltare, a fost lansată versiunea Lua 5.5, un limbaj de programare rapid și compact, care a câștigat popularitate ca limbaj încorporat pentru definirea configurațiilor și pentru scrierea extensiilor. Codul interpretului Lua este scris în limbajul C și este distribuit sub licența MIT.

Lua combină o sintaxă procedurală simplă cu capabilități de descriere a datelor prin utilizarea de tablice asociative și semantica extensibilă a limbajului. Lua utilizează tipizarea dinamică, iar construcțiile lingvistice sunt transformate în cod byte, care rulează pe o mașină virtuală cu registre dotată cu un colector de gunoi automat. Interpretul este format ca o bibliotecă, ce poate fi integrată în proiecte scrise în C și C++.

Noutăți principale:

  • Pentru cea mai mare parte a operațiunilor de colectare a gunoiului este activat modul incremental, în care ciclul de colectare a gunoiului este împărțit în pași separați, alternând cu execuția programului, ceea ce permite evitarea pauzelor lungi în timpul execuției aplicațiilor cu un număr mare de obiecte în memorie.
  • A fost propusă o implementare compactă a tablourilor, care necesită cu 60% mai puțină memorie pentru tablouri cu date omogene (economia este obținută prin faptul că informațiile despre tip sunt păstrate nu pentru fiecare element, ci pentru un grup de elemente).
  • A fost adăugată posibilitatea declarării explicite a variabilelor globale în orice bloc de cod folosind cuvântul cheie „global”. Atunci când sunt specificate în blocul de cod expresii cu cuvântul cheie „global”, toate variabilele trebuie să fie declarate explicit. Dacă declarația „global” este absentă, se aplică implicit expresia „global *”, ceea ce menține vechiul comportament și toate variabilele sunt tratate ca globale. De asemenea, a fost adăugată expresia „global *”, care face ca toate variabilele globale definite implicit să devină accesibile în mod strict pentru citire. X = 1 — Ok, X este o variabilă globală, comportament vechi implicit. do global Y — declararea variabilei Y ca globală, toate celelalte variabile din bloc trebuie să fie declarate explicit Y = 1 — Ok, variabila Y a fost definită anterior X = 1 — Eroare, variabila X nu este definită end X = 2 — Ok, în afara blocului global cu comportamentul vechi ce acționează.
  • Variabilele de control specificate în buclele „for” sunt acum accesibile doar în mod citire și nu pot fi modificate în corpul buclei. De exemplu, variabila i, declarată în bucla „for i = 1, 5 do”, nu poate fi modificată în corpul buclei.
  • Atunci când se afișează numere cu virgulă mobilă prin funcția print, acum se afișează un număr suficient de cifre pentru a permite conversia inversă corectă dintr-un șir în reprezentarea sa originală.
  • Numărul maxim de niveluri de imbricare pentru constructorii de tabele a fost crescut.
  • A fost adăugată funcția table.create(nseq, nrec) pentru a adăuga o tabelă goală și pentru a aloca în prealabil memorie pentru numărul specificat de elemente.
  • Funcția utf8.offset asigură acum returnarea nu doar a offset-ului în bytes până la începutul caracterului, ci și a poziției finale a caracterului.
  • A fost adăugată suport pentru crearea de șiruri externe, care sunt stocate în memorie gestionată în afara colectorului de gunoi Lua.
  • A fost adăugată funcția luaL_openselectedlibs pentru a încărca biblioteca selectată, precum și funcția luaL_makeseed, care generează un seed pentru funcția lua_newstate.
  • În lua.c s-a asigurat încărcarea dinamică a bibliotecii ‘readline’ atunci când aceasta este disponibilă (dacă biblioteca există în sistem, este încărcată și funcțiile de editare a șirurilor devin disponibile).
  • S-a inclus o optimizare pentru economisirea memoriei în timpul încărcării bytecode-ului precompilat — Lua poate acum reutiliza memoria în anumite structuri interne fără a crea duplicate în timpul încărcării bytecode-ului duplicat.
  • S-a asigurat reutilizarea tuturor șirurilor în operațiunile „dump” și „undump”.
  • În buferele auxiliare s-a asigurat reutilizarea buferelor (fără copiere în buffer nou) la crearea șirului final.

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