Lua 5.4

Két év fejlesztés után, június 29-én csendben és észrevétlenül megjelent a Lua programozási nyelv új verziója — 5.4.

A Lua egy egyszerű, értelmezett programozási nyelv, amely könnyen beépíthető alkalmazásokba. Ezeknek a jellemzőknek köszönhetően a Lua széles körben használt kiterjesztési vagy konfigurációs nyelvként (különösen számítógépes játékok esetében). A Lua az MIT licenc alatt terjed.

Az előző verzió (5.3.5) 2018. július 10-én jelent meg.

A legfontosabb változások az új verzióban

  • új generációs alapú szemétgyűjtő (generational). A collectgarbage függvény setpause és setstepmul paramétereit elavultnak nyilvánították, helyettük az incremental paraméter használatát javasolják;

  • új warn függvény figyelmeztetések kiadására, lehetőséggel a megjelenítésük letiltására;

  • az új math.random megvalósítás az xoshiro256** algoritmust használja a libc által biztosított helyett, és a generátort véletlen számmal inicializálja;

  • konstansok (constant variables);

  • a "lezárandó" (to-be-closed) változók — lokális konstansok, amelyeknél a __close metódus lép életbe a hatókörből való kilépéskor;

  • új lua_resetthread függvény — tisztítja a veremet és bezárja az összes "lezárandó" változót;

  • új coroutine.close függvény — bezárja a megadott szálat és annak összes "lezárandó" változóját;

  • a felhasználói adatok (userdata) egy értékek halmazát tartalmazhatják indexelhető hozzáféréssel. Az ilyen adatokkal való munkához új funkciók lettek bevezetve: lua_newuserdatauv, lua_setiuservalue és lua_getiuservalue;

  • elérhető a függvények paramétereinek és visszatérési értékeinek hibakeresési információja;

  • ha a for ciklusban egész számú indexet használnak, és túlcsordulás történik — a ciklus megszakad;

  • a string.gmatch függvényhez egy opcionális paraméter került, amely a keresési egyezések kezdőpontját adja meg a szövegből;

  • a stringek számokká való implicit átalakító függvényeket áthelyezték a string könyvtárba, és megváltozott a viselkedésük. Például a "1" + "2" művelet eredménye most egész szám, nem lebegőpontos szám;

  • a memóriaallokáló függvényeknél megengedett a hibás működés a memória blokk csökkentésekor;

  • új formázó karakter a string.format funkcióban — %p (mutatók számára);

  • a utf8 könyvtár a karakterkódokat 2³¹-ig fogadja el (speciális zászló megadása mellett, anélkül csak a 0x10FFFF-ig terjedő kódokat fogadja el, és a szörnyek nem megengedettek);

  • A számértékek tartományát meghaladó egész konstansok lebegőpontos számokká alakulnak, korábban bitvágás történt;

  • A __lt metametódus többé nem használható az __le metametódus emulálásához, ha szükséges, az __le metametódust kifejezetten meg kell adni;

  • A goto operátorhoz címke nem hozható létre, ha a meglévő tartományban már létezik olyan címke, amelynek ugyanaz a neve (akkor is, ha az egy külső tartományban lett definiálva);

  • A __gc metametódus nemcsak függvény lehet. Ha a metódus hívása nem sikerül, figyelmeztető üzenet kerül kiírásra;

  • A print függvény nem hívja meg a tostring-t minden egyes argumentumra, hanem belső átalakításait használja;

  • Az io.lines függvény négy értéket ad vissza egyetlen helyett, ha a régi viselkedést szeretnéd emulálni, zárd körül a hívást zárójelek közé, ha egy másik függvény paramétereként használod;

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster