Vydanie programovacieho jazyka Lua 5.4

Po piatich rokoch vývoja k dispozícii uvoľnenie Lua 5.4, rýchly a kompaktný skriptovací programovací jazyk, ktorý je široko používaný ako vložený jazyk (napríklad na definovanie konfigurácie alebo písanie rozšírení). Kód tlmočníka Lua je napísaný v jazyku C a distribuovaný pod licenciou MIT.

Lua kombinuje jednoduchú procedurálnu syntax s výkonnými možnosťami popisu údajov pomocou asociatívnych polí a rozšíriteľnej sémantiky jazyka. Lua používa dynamické písanie, konvertuje jazykové konštrukcie na bajtový kód, ktorý beží na virtuálnom stroji založenom na registroch s automatickým zberom odpadu. Samotný tlmočník je navrhnutý ako knižnica, ktorú možno jednoducho integrovať do projektov v jazykoch C a C++.

Hlavné inovácie:

  • Bol implementovaný nový režim prevádzky zberača odpadu - “generačný“, ktorý doplnil predtým dostupný režim prírastkového zberu odpadu. Nový režim zahŕňa častejšie spúšťanie skráteného prehľadávania, ktoré pokrýva len nedávno vytvorené objekty. Úplný prechod všetkých objektov sa vykoná iba vtedy, ak po krátkom prechode nebolo možné dosiahnuť požadovanú spotrebu pamäte. Tento prístup umožňuje dosiahnuť vyšší výkon a znížiť spotrebu pamäte pri ukladaní veľkého množstva objektov, ktoré žijú krátko.
  • Pridaná možnosť definovať konštantné premenné definované pomocou atribútu „const“. Takéto premenné možno priradiť iba raz a po inicializácii ich nemožno zmeniť.
  • Pridaná podpora pre premenné "má byť zatvorené", ktoré sú priradené pomocou atribútu "close" a podobajú sa konštantným lokálnym premenným (s atribútom const), líšia sa od nich tým, že hodnota je uzavretá (volá sa metóda "__close") vždy, keď opustí rozsah, napr. po normálnom dokončení bloku prechod pomocou break/goto/return alebo exit, keď sa vyskytne chyba.
  • Napíšte "použivateľské dáta“, ktorý poskytuje možnosť ukladať akékoľvek údaje C do premenných Lua (predstavuje blok údajov v pamäti alebo obsahuje ukazovateľ C), môže teraz obsahovať niekoľko hodnôt (mať niekoľko metatabuľiek).
  • Predstavená je nová implementácia funkcie na generovanie pseudonáhodných čísel - math.random.
  • Pridaný systém varovaní, ktoré sú určené pomocou výrazu varovať a na rozdiel od chýb neovplyvňujú ďalšie vykonávanie programu.
  • Pridané informácie o ladení o argumentoch funkcií a návratových hodnotách.
  • Bola navrhnutá nová sémantika pre enumeráciu celých čísel v slučkách "pre". Počet iterácií sa vypočíta pred spustením cyklu, čím sa zabráni pretečeniu a opakovaniu premenných. Ak je počiatočná hodnota väčšia ako hraničná hodnota, zobrazí sa chyba.
  • Vo funkcii 'string.gmatch' pridal nový voliteľný argument 'init', ktorý určuje, na akej pozícii začať vyhľadávanie (štandardne od 1 znaku).
  • Pridané nové funkcie 'lua_resetthread' (resetuje vlákno, vymaže celý zásobník hovorov a zatvorí všetky premenné „na zatvorenie“) a 'korutín.zavrieť' (uzatvorí korutín a všetky súvisiace premenné „na zatvorenie“).
  • Funkcie na prevod reťazcov na čísla boli presunuté do knižnice "string".
  • Volania funkcie prideľovania pamäte môžu teraz zlyhať, ak sa veľkosť bloku pamäte zníži.
  • Vo funkcii 'reťazec.formát' pridaná podpora pre nový špecifikátor formátu '%p' (ukazovateľ vrátený lua_topointer).
  • Podporu poskytuje knižnica utf8 kódy znakov s číslami do 2^31.

Zdroj: opennet.ru

Pridať komentár