Lua 5.4

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

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

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

Hlavní změny v nové verzi

  • nový garbage collector založený na generacích (generační). Ve funkci collectgarbage byly parametry setpause a setstepmul zastaralé a místo nich se doporučuje parametr incremental;

  • nová funkce pro vydávání varovných varování s možností deaktivace jejich zobrazení;

  • nová implementace math.random používá algoritmus xoshiro256** místo toho, který poskytuje libc, a inicializuje generátor náhodným číslem;

  • konstantní proměnné;

  • Proměnné „to-be-closed“ jsou lokální konstanty, pro které se metoda __close provede při opuštění rozsahu;

  • nová funkce lua_resetthread - vymaže zásobník a zavře všechny "uzavřené" proměnné;

  • nová funkce coroutine.close - zavře zadanou koroutinu a všechny její "uzavíratelné" proměnné;

  • uživatelská data (userdata) mohou obsahovat sadu hodnot, ke kterým přistupuje index. Pro práci s nimi byly zavedeny nové funkce: lua_newuserdatauv, lua_setiuservalue a lua_getiuservalue;

  • jsou k dispozici ladicí informace o parametrech a návratových hodnotách funkcí;

  • pokud je v cyklu for použit celočíselný index a dojde k přetečení, cyklus skončí;

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

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

  • ve funkci alokace paměti může dojít k chybě, když se zmenší paměťový blok;

  • nový formátový znak ve funkci string.format - %p (pro ukazatele);

  • knihovna utf8 akceptuje kódy znaků do 2³¹ (když je specifikován speciální příznak, bez něj jsou povoleny pouze kódy do 0x10FFFF a nejsou povoleny zástupné znaky);

  • celočíselné konstanty, které jsou mimo rozsah hodnot, jsou převedeny na plovoucí čísla (dříve došlo k oříznutí bitů);

  • metametoda __lt se již nepoužívá k emulaci metametody __le, je-li to nutné, musí být metametoda __le nastavena explicitně;

  • štítek pro příkaz goto nelze vytvořit, pokud štítek se stejným názvem již existuje v aktuálním rozsahu (i když byl definován ve vnějším rozsahu);

  • metametoda __gc může být víc než jen funkce. Pokud selže pokus o volání metody, zobrazí se varování;

  • funkce print nevolá tostring pro každý argument, ale používá své vlastní vnitřní transformace;

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

Zdroj: linux.org.ru

Přidat komentář