Lua 5.4

Po dveh letih razvoja je 29. junija tiho in neopazno izšla nova različica programskega jezika Lua, 5.4.

Lua je preprost, interpretiran programski jezik, ki ga je mogoče preprosto vdelati v aplikacije. Zaradi teh lastnosti se Lua pogosto uporablja kot jezik za razširitev ali opisovanje konfiguracije programov (predvsem računalniških iger). Lua se bo distribuiral pod licenco MIT.

Prejšnja različica (5.3.5) je bila izdana 10. julija 2018.

Glavne spremembe v novi različici

  • nov zbiralnik smeti, ki temelji na generacijah (generacijski). V funkciji collectgarbage sta parametra setpause in setstepmul opuščena in namesto tega je priporočljiv inkrementalni parameter;

  • nova funkcija izdajanja opozorilnih opozoril z možnostjo onemogočanja njihovega prikaza;

  • nova implementacija math.random uporablja algoritem xoshiro256** namesto tistega, ki ga ponuja libc, in inicializira generator z naključnim številom;

  • konstantne spremenljivke;

  • spremenljivke, ki jih je treba zapreti, so lokalne konstante, za katere se izvede metoda __close, ko se zapusti obseg;

  • nova funkcija lua_resetthread - počisti sklad in zapre vse "zaprte" spremenljivke;

  • nova funkcija coroutine.close - zapre podano soprogram in vse njegove "zapiralne" spremenljivke;

  • uporabniški podatki (userdata) lahko vsebujejo nabor vrednosti, do katerih dostopa indeks. Uvedene so bile nove funkcije za delo z njimi: lua_newuserdatauv, lua_setiuservalue in lua_getiuservalue;

  • na voljo so informacije o odpravljanju napak o parametrih in vrnjenih vrednostih funkcij;

  • če je v zanki for uporabljen celoštevilski indeks in pride do prelivanja, se zanka konča;

  • dodal izbirni argument funkciji string.gmatch, ki določa odmik od začetka niza za iskanje ujemanj;

  • funkcije implicitne pretvorbe nizov v števila so bile premaknjene v knjižnico nizov, njihovo vedenje se je spremenilo. Na primer, rezultat operacije "1" + "2" je zdaj celo število in ne število s plavajočo vejico;

  • v funkciji dodeljevanja pomnilnika lahko pride do napake, ko se pomnilniški blok zmanjša;

  • nov formatni znak v funkciji string.format - %p (za kazalce);

  • knjižnica utf8 sprejema kode znakov do 2³¹ (če je podana posebna zastavica, brez nje so dovoljene samo kode do 0x10FFFF, nadomestki pa niso dovoljeni);

  • cele konstante, ki so zunaj obsega vrednosti, se pretvorijo v plavajoče številke (prej je prišlo do izrezovanja bitov);

  • metametoda __lt se ne uporablja več za posnemanje metametode __le, če je potrebno, je treba metametodo __le nastaviti izrecno;

  • oznake za stavek goto ni mogoče ustvariti, če oznaka z istim imenom že obstaja v trenutnem obsegu (tudi če je bila definirana v zunanjem obsegu);

  • metametoda __gc je lahko več kot le funkcija. Če poskus priklica metode ne uspe, se prikaže opozorilo;

  • funkcija tiskanja ne kliče tostring za vsak argument, ampak uporablja lastne notranje transformacije;

  • funkcija io.lines vrne nabor štirih vrednosti namesto ene; za posnemanje starega vedenja klic zapišite v oklepaje, če ga zamenjate kot parameter pri klicu druge funkcije.

Vir: linux.org.ru

Dodaj komentar