Po dvejų metų kūrimo, birželio 29 d., tyliai ir nepastebimai buvo išleista nauja Lua programavimo kalbos versija 5.4.

Lua yra paprasta, interpretuojama programavimo kalba, kurią galima lengvai įterpti į programas. Dėl šių savybių Lua yra plačiai naudojama kaip kalba, skirta išplėsti arba apibūdinti programų (ypač kompiuterinių žaidimų) konfigūraciją. Lua bus platinamas pagal MIT licenciją.

Ankstesnė versija (5.3.5) buvo išleista 10 m. liepos 2018 d.

Pagrindiniai naujos versijos pakeitimai

  • naujas šiukšlių surinkėjas pagal kartas (kartų). Funkcijoje collectiongarbage parametrai setpause ir setstepmul buvo nebenaudojami, o vietoj jų rekomenduojama naudoti prieauginį parametrą;

  • nauja perspėjimo įspėjimų išdavimo funkcija su galimybe išjungti jų rodymą;

  • naujas math.random įgyvendinimas naudoja xoshiro256** algoritmą, o ne libc pateiktą ir inicijuoja generatorių atsitiktiniu skaičiumi;

  • pastovūs kintamieji;

  • „uždaryti“ kintamieji yra vietinės konstantos, kurioms išėjus iš apimties, vykdomas metodas __close;

  • nauja funkcija lua_resetthread – išvalo steką ir uždaro visus „uždaruosius“ kintamuosius;

  • nauja funkcija coroutine.close – uždaro nurodytą korutiną ir visus jos „uždaromus“ kintamuosius;

  • vartotojo duomenyse (naudotojo duomenys) gali būti reikšmių rinkinys, pasiekiamas naudojant indeksą. Darbui su jais įdiegtos naujos funkcijos: lua_newuserdatauv, lua_setiuservalue ir lua_getiuservalue;

  • yra derinimo informacija apie parametrus ir funkcijų grąžinimo reikšmes;

  • jei cikle for naudojamas sveikasis skaičius ir įvyksta perpildymas, ciklas baigiasi;

  • prie funkcijos string.gmatch pridėtas pasirenkamas argumentas, kuris nurodo poslinkį nuo eilutės pradžios ieškant atitikčių;

  • numanomo eilučių konvertavimo į skaičius funkcijos perkeltos į eilučių biblioteką, pasikeitė jų elgsena. Pavyzdžiui, operacijos „1“ + „2“ ​​rezultatas dabar yra sveikasis skaičius, o ne slankiojo kablelio skaičius;

  • atminties paskirstymo funkcijoje, sumažinus atminties bloką, gali įvykti klaida;

  • naujas formato simbolis string.format funkcijoje - %p (rodyklėms);

  • utf8 biblioteka priima simbolių kodus iki 2³¹ (kai nurodyta speciali vėliavėlė, be jos leidžiami tik kodai iki 0x10FFFF, o pakaitalai neleidžiami);

  • sveikųjų skaičių konstantos, kurios yra už reikšmių diapazono ribų, konvertuojamos į slankiuosius skaičius (anksčiau įvyko bitų iškirpimas);

  • metametodas __lt nebenaudojamas __le metametodui emuliuoti, jei reikia, __le metametodas turi būti nustatytas aiškiai;

  • goto sakinio etiketė negali būti sukurta, jei etiketė tokiu pačiu pavadinimu jau yra dabartinėje srityje (net jei ji buvo apibrėžta išorinėje srityje);

  • __gc metametodas gali būti ne tik funkcija. Jei bandymas iškviesti metodą nepavyksta, bus rodomas įspėjimas;

  • spausdinimo funkcija neiškviečia tostring kiekvienam argumentui, bet naudoja savo vidines transformacijas;

  • funkcija io.lines grąžina keturių reikšmių rinkinį, o ne vieną, kad pamėgdžiotų seną elgseną, iškvietimą įrašykite skliausteliuose, jei jį pakeisite kaip parametrą, kai iškviečiate kitą funkciją.

Šaltinis: linux.org.ru

Добавить комментарий