PĂ€rast kahte aastat arendust jĂ”udis 29. juunil vaikselt ja mĂ€rkamatult vĂ€lja uus Lua programmeerimiskeele versioon â 5.4.
Lua on lihtne tÔlgitud programmeerimiskeel, mis integreerub hÔlpsalt rakendustesse. Nende omaduste tÔttu kasutatakse Lua laialdaselt laiendamise vÔi konfiguratsioonide kirjeldamise keeleks (eriti arvutimÀngudes). Lua levitatakse MIT litsentsi alusel.
Eelmine versioon (5.3.5) ilmus 10. juulil 2018.
Uue versiooni peamised muudatused
uus pĂ”lvkondade pĂ”hine jÀÀtmete kogumise sĂŒsteem (generational). Funktsioonis collectgarbage on parameetrid setpause ja setstepmul kuulutatud aegunuks, nende asemel soovitatakse kasutada parameetrit incremental;
uus hoiatuste vĂ€ljastamise funktsioon warn koos vĂ”imalusega nende kuvamine vĂ€lja lĂŒlitada;
uus rakendamine math.random kasutab algoritmi xoshiro256** asemel libc poolt pakutud ning initsialiseerib generaatori juhusliku numbriga;
konstantmuutujad (constant variables);
âsulgevadâ (to-be-closed) muutujad â lokaalsed konstantmuutujad, mille jaoks tĂ€idetakse meetod __close, kui nad lĂ€hevad vĂ€lja ulatusest;
uus funktsioon lua_resetthread â puhastab virna ja tĂ€idab kĂ”ikide âsulgevateâ muutujate sulgemise.
uus funktsioon coroutine.close - sulgeb mÀÀratud kooperatiivi ja kĂ”ik selle âsulgedavadâ muutujad;
kasutajandmed (userdata) vÔivad sisaldada vÀÀrtuste kogumit, millele pÀÀseb juurde indeksi kaudu. Nende haldamiseks on sisse viidud uued funktsioonid: lua_newuserdatauv, lua_setiuservalue ja lua_getiuservalue;
saadaval on silumisteave funktsioonide parameetrite ja tagastatud vÀÀrtuste kohta;
kui for-tsĂŒklis kasutatakse tĂ€isarvulist indeksit ja toimub ĂŒlevool - tsĂŒkkel lĂ”petatakse;
funktsiooni string.gmatch on lisatud valikuline argument, mis mÀÀrab nihke stringi algusest sobituste otsimiseks;
stringide arvuks teisendamise funktsioonid on viidud stringide teeki, nende kĂ€itumine on muutunud. NĂ€iteks, operatsiooni "1" + "2" tulemus on nĂŒĂŒd tĂ€isarv, mitte komakohtadega number;
mÀlu eraldamise funktsioonides vÔib esineda viga mÀlubloki vÀhendamisel;
uus vormindusmÀrk funktsioonis string.format - %p (nÀidikutele);
utf8 teek aktsepteerib sĂŒmbolite koode kuni 2ÂłÂč (erilise lipu mÀÀramisel, ilma selleta lubatakse ainult koode kuni 0x10FFFF ja sĂŒnergad ei ole lubatud);
TĂ€isarvukonstandid, mis ĂŒletavad vÀÀrtuste vahemikku, muudetakse ujukomaarvudeks (varem toimus bitilĂ”ikamine);
Metaethod __lt ei kasutata enam metaethod __le emuleerimiseks, vajadusel tuleb metaethod __le mÀÀrata selgelt;
Goto operaatori mÀrki ei saa luua, kui praeguses ulatuses on juba olemas sama nimega mÀrk (isegi kui see on mÀÀratud vÀlistes ulatuses);
Metaethod __gc ei pruugi olla ainult funktsioon. Kui meetodi kutsumine ebaÔnnestub, antakse hoiatus;
Funktsioon print ei kutsu tostring-i iga argumendi jaoks, vaid kasutab oma sisemisi teisendusi;
Funktsioon io.lines tagastab neli vÀÀrtust ĂŒhe asemel, et emuleerida vana kĂ€itumist, asetage kĂ”ne sulgudesse, kui sisestate selle teise funktsiooni parameetrina.
Allikas: linux.org.ru
