Lua 5.4

Po dvou letech vývoje byla 29. června tiše a nenápadně vydána nová verze programovacího jazyka Lua — 5.4.

Lua je jednoduchý interpretovaný programovací jazyk, který se snadno integruje do aplikací. Díky těmto vlastnostem je Lua široce používána jako jazyk pro rozšíření nebo pro popis konfigurace programů (zejména počítačových her). Lua se šíří pod licencí MIT.

Předchozí verze (5.3.5) byla vydána 10. července 2018.

Hlavní změny v nové verzi

  • nový generací na základě sběrač odpadků (generational). V funkci collectgarbage jsou parametry setpause a setstepmul označeny jako zastaralé, místo nich se doporučuje používat parametr incremental;

  • nová funkce pro vydávání varování warn s možností zakázání jejich zobrazení;

  • nová implementace math.random používá algoritmus xoshiro256** namísto poskytovaného libc a inicializuje generátor náhodným číslem;

  • konstanty (constant variables);

  • „uzavíratelné“ (to-be-closed) proměnné — lokální konstanty, pro které je při výstupu z oblasti platnosti provedená metoda __close;

  • nová funkce lua_resetthread — vyčistí zásobník a provede uzavření všech „uzavíratelných“ proměnných;

  • nová funkce coroutine.close — uzavírá danou kooperativní vlákno a všechny její „uzavíratelné“ proměnné;

  • uživatelská data (userdata) mohou obsahovat množinu hodnot s indexovým přístupem. Pro práci s nimi byly zavedeny nové funkce: lua_newuserdatauv, lua_setiuservalue a lua_getiuservalue;

  • je k dispozici ladicí informace o parametrech a vracených hodnotách funkcí;

  • pokud se v cyklu se čítačem for používá celočíselný index a dojde k přetečení — cyklus se ukončí;

  • do funkce string.gmatch byl přidán volitelný argument, který určuje posun od začátku řetězce pro vyhledávání shod;

  • funkce pro implicitní převod řetězců na čísla byly přesunuty do řetězcové knihovny, změnila se jejich chování. Například výsledek operace "1" + "2" je nyní celé číslo, nikoli číslo s plovoucí desetinnou čárkou;

  • ve funkci pro alokaci paměti může dojít k chybě při zmenšování bloku paměti;

  • nový formátovací symbol ve funkci string.format — %p (pro ukazatele);

  • knihovna utf8 akceptuje kódy znaků až do 2³¹ (při zadání speciálního flagu, bez něj jsou akceptovány pouze kódy do 0x10FFFF a nežádoucí jsou surrogáty);

  • Celé konstanty, které přesahují rozsah hodnot, jsou převedeny na plovoucí čísla (dříve došlo ke ztrátě bitů);

  • Metametoda __lt již není používána pro emulaci metametody __le, pokud je to nutné, metametoda __le musí být explicitně definována;

  • Štítek pro příkaz goto nemůže být vytvořen, pokud již ve stávající oblasti viditelnosti existuje štítek se stejným názvem (i když byl definován ve vnější oblasti);

  • Metametoda __gc nemusí být pouze funkcí. Pokud se pokus o zavolání metody nezdaří, bude vypsáno varování;

  • Funkce print nevolá tostring pro každý argument, ale používá své interní převody;

  • Funkce io.lines vrací sadu čtyř hodnot místo jedné, pro emulaci starého chování zabalte volání do závorek, pokud jej předáváte jako parametr při volání jiné funkce.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster