Lua 5.4

Po dvoch rokoch vývoja bola 29. júna v tichosti a nenápadne vydaná nová verzia programovacieho jazyka Lua, 5.4.

Lua je jednoduchý interpretovaný programovací jazyk, ktorý možno ľahko vložiť do aplikácií. Vďaka týmto vlastnostiam je Lua široko používaný ako jazyk na rozšírenie alebo popis konfigurácie programov (najmä počítačových hier). Lua bude distribuovaný pod licenciou MIT.

Predchádzajúca verzia (5.3.5) bola vydaná 10. júla 2018.

Hlavné zmeny v novej verzii

  • nový garbage collector založený na generáciách (generačný). Vo funkcii collectgarbage boli parametre setpause a setstepmul zastarané a namiesto nich sa odporúča prírastkový parameter;

  • nová funkcia pre vydávanie varovných upozornení s možnosťou deaktivácie ich zobrazenia;

  • nová implementácia math.random používa algoritmus xoshiro256** namiesto toho, ktorý poskytuje libc a inicializuje generátor náhodným číslom;

  • konštantné premenné;

  • Premenné „to-be-closed“ sú lokálne konštanty, pre ktoré sa metóda __close vykoná pri ukončení rozsahu;

  • nová funkcia lua_resetthread - vyčistí zásobník a zatvorí všetky "uzavreté" premenné;

  • nová funkcia coroutine.close - zatvorí zadaný korutín a všetky jeho "uzavierateľné" premenné;

  • užívateľské dáta (userdata) môžu obsahovať množinu hodnôt, ku ktorým pristupuje index. Na prácu s nimi boli zavedené nové funkcie: lua_newuserdatauv, lua_setiuservalue a lua_getiuservalue;

  • k dispozícii sú informácie o ladení o parametroch a návratových hodnotách funkcií;

  • ak sa v cykle for použije celočíselný index a dôjde k pretečeniu, cyklus sa skončí;

  • pridal voliteľný argument do funkcie string.gmatch, ktorý určuje posun od začiatku reťazca na vyhľadávanie zhôd;

  • funkcie implicitného prevodu reťazcov na čísla sa presunuli do knižnice reťazcov, zmenilo sa ich správanie. Napríklad výsledok operácie "1" + "2" je teraz celé číslo, nie číslo s pohyblivou rádovou čiarkou;

  • vo funkcii prideľovania pamäte môže nastať chyba, keď sa pamäťový blok zníži;

  • nový formátový znak vo funkcii string.format - %p (pre ukazovatele);

  • knižnica utf8 akceptuje kódy znakov do 2³¹ (keď je špecifikovaný špeciálny príznak, bez neho sú povolené iba kódy do 0x10FFFF a nie sú povolené náhrady);

  • celočíselné konštanty, ktoré sú mimo rozsahu hodnôt, sa skonvertujú na plávajúce čísla (predtým došlo k orezaniu bitov);

  • metametóda __lt sa už nepoužíva na emuláciu metametódy __le, v prípade potreby musí byť metametóda __le nastavená explicitne;

  • označenie pre príkaz goto nemožno vytvoriť, ak označenie s rovnakým názvom už existuje v aktuálnom rozsahu (aj keď bolo definované vo vonkajšom rozsahu);

  • metametóda __gc môže byť viac než len funkcia. Ak pokus o zavolanie metódy zlyhá, zobrazí sa varovanie;

  • funkcia print nevolá tostring pre každý argument, ale používa svoje vlastné interné transformácie;

  • funkcia io.lines vracia sadu štyroch hodnôt namiesto jednej, aby ste napodobnili staré správanie, uzavrite volanie do zátvoriek, ak ho nahradíte ako parameter pri volaní inej funkcie.

Zdroj: linux.org.ru

Pridať komentár