Lua 5.4

Nakon dvije godine razvoja, 29. juna, tiho i neprimjetno je objavljena nova verzija programskog jezika Lua, 5.4.

Lua je jednostavan, interpretiran programski jezik koji se lako može ugraditi u aplikacije. Zbog ovih kvaliteta, Lua se široko koristi kao jezik za proširenje ili opisivanje konfiguracije programa (posebno kompjuterskih igara). Lua će se distribuirati pod MIT licencom.

Prethodna verzija (5.3.5) objavljena je 10. jula 2018.

Glavne promjene u novoj verziji

  • novi sakupljač smeća zasnovan na generacijama (generacijski). U funkciji collectgarbage, parametri setpause i setstepmul su zastarjeli i umjesto toga se preporučuje inkrementalni parametar;

  • nova funkcija za izdavanje upozorenja sa mogućnošću onemogućavanja njihovog prikaza;

  • nova implementacija math.random koristi xoshiro256** algoritam umjesto onog koji obezbjeđuje libc i inicijalizira generator slučajnim brojem;

  • konstantne varijable;

  • Varijable koje treba da budu zatvorene su lokalne konstante za koje se metoda __close izvršava kada se izađe iz opsega;

  • nova funkcija lua_resetthread - briše stek i zatvara sve "zatvorene" varijable;

  • nova funkcija coroutine.close - zatvara specificiranu korutinu i sve njene "zatvorljive" varijable;

  • korisnički podaci (userdata) mogu sadržavati skup vrijednosti kojima pristupa indeks. Uvedene su nove funkcije za rad s njima: lua_newserdatauv, lua_setiuservalue i lua_getiuservalue;

  • dostupne su informacije za otklanjanje grešaka o parametrima i povratnim vrijednostima funkcija;

  • ako se u for petlji koristi cijeli broj i dođe do prelijevanja, petlja se završava;

  • dodao opcioni argument funkciji string.gmatch koji specificira pomak od početka niza za traženje podudaranja;

  • funkcije implicitne konverzije nizova u brojeve su premještene u biblioteku stringova, njihovo ponašanje se promijenilo. Na primjer, rezultat operacije "1" + "2" je sada cijeli broj, a ne broj s pomičnim zarezom;

  • u funkciji dodjele memorije može doći do greške kada se memorijski blok smanji;

  • novi znak formata u funkciji string.format - %p (za pokazivače);

  • utf8 biblioteka prihvata znakovne kodove do 2³¹ (kada je specificirana posebna zastavica, bez nje su dozvoljeni samo kodovi do 0x10FFFF, a surogati nisu dozvoljeni);

  • cjelobrojne konstante koje su izvan raspona vrijednosti pretvaraju se u plutajuće brojeve (prethodno je došlo do isjecanja bitova);

  • metametoda __lt se više ne koristi za emulaciju metametoda __le, ako je potrebno, metametoda __le mora biti postavljena eksplicitno;

  • oznaka za goto izraz ne može se kreirati ako oznaka s istim imenom već postoji u trenutnom opsegu (čak i ako je definirana u vanjskom opsegu);

  • __gc metametoda može biti više od funkcije. Ako pokušaj pozivanja metode ne uspije, biće prikazano upozorenje;

  • funkcija print ne poziva tostring za svaki argument, već koristi vlastite interne transformacije;

  • funkcija io.lines vraća skup od četiri vrijednosti umjesto jedne, da biste oponašali staro ponašanje, stavite poziv u zagrade ako ga zamijenite kao parametar prilikom pozivanja druge funkcije.

izvor: linux.org.ru

Dodajte komentar