Lua 5.4

Pēc divu gadu izstrādes 29. jūnijā klusi un nemanāmi tika izlaista jauna Lua programmēšanas valodas versija 5.4.

Lua ir vienkārša, interpretēta programmēšanas valoda, ko var viegli iegult lietojumprogrammās. Šo īpašību dēļ Lua plaši izmanto kā valodu programmu (jo īpaši datorspēļu) konfigurācijas paplašināšanai vai aprakstīšanai. Lua tiks izplatīts saskaņā ar MIT licenci.

Iepriekšējā versija (5.3.5) tika izlaista 10. gada 2018. jūlijā.

Galvenās izmaiņas jaunajā versijā

  • jauns atkritumu savācējs, kas balstīts uz paaudzēm (paaudžu). Funkcijā collectiongarbage parametri setpause un setstepmul ir novecojuši, un tā vietā ieteicams izmantot pieaugošo parametru;

  • jauna funkcija brīdinājuma brīdinājumu izsniegšanai ar iespēju atspējot to displeju;

  • jaunā math.random realizācija izmanto xoshiro256** algoritmu, nevis libc nodrošināto, un inicializē ģeneratoru ar nejaušu skaitli;

  • nemainīgi mainīgie;

  • “To-be-close” mainīgie ir lokālas konstantes, kurām tiek izpildīta metode __close, kad tiek izieta no tvēruma;

  • jauna funkcija lua_resetthread - notīra steku un aizver visus "slēgtos" mainīgos;

  • jauna funkcija coroutine.close - aizver norādīto korutīnu un visus tās "aizveramos" mainīgos;

  • lietotāja dati (lietotāja dati) var saturēt vērtību kopu, kurai piekļūst indekss. Lai strādātu ar tiem, ir ieviestas jaunas funkcijas: lua_newuserdatauv, lua_setiuservalue un lua_getiuservalue;

  • ir pieejama atkļūdošanas informācija par parametriem un funkciju atgriešanas vērtībām;

  • ja for cilpā tiek izmantots vesels skaitlis un notiek pārpilde, cilpa beidzas;

  • pievienoja neobligātu argumentu funkcijai string.gmatch, kas norāda nobīdi no virknes sākuma, lai meklētu atbilstības;

  • virkņu netiešās konvertēšanas uz skaitļiem funkcijas ir pārvietotas uz virkņu bibliotēku, ir mainījusies to uzvedība. Piemēram, operācijas "1" + "2" rezultāts tagad ir vesels skaitlis, nevis peldošā komata skaitlis;

  • atmiņas piešķiršanas funkcijā, samazinot atmiņas bloku, var rasties kļūda;

  • jauna formāta rakstzīme funkcijā string.format - %p (rādītājiem);

  • utf8 bibliotēka pieņem rakstzīmju kodus līdz 2³¹ (ja ir norādīts īpašs karodziņš, bez tā ir atļauti tikai kodi līdz 0x10FFFF un surogāti nav atļauti);

  • veselu skaitļu konstantes, kas atrodas ārpus vērtību diapazona, tiek pārveidotas par peldošiem skaitļiem (iepriekš notika bitu izgriešana);

  • metametode __lt vairs netiek izmantota __le metametodes emulēšanai, ja nepieciešams, __le metametode ir jāiestata skaidri;

  • goto priekšraksta etiķeti nevar izveidot, ja pašreizējā tvērumā jau pastāv etiķete ar tādu pašu nosaukumu (pat ja tā ir definēta ārējā tvērumā);

  • __gc metametode var būt vairāk nekā tikai funkcija. Ja mēģinājums izsaukt metodi neizdodas, tiks parādīts brīdinājums;

  • print funkcija neizsauc tostring katram argumentam, bet izmanto savas iekšējās transformācijas;

  • funkcija io.lines atgriež četru vērtību kopu vienas vērtības vietā, lai atdarinātu iepriekšējo darbību, iekļaujiet izsaukumu iekavās, ja aizstājat to kā parametru, izsaucot citu funkciju.

Avots: linux.org.ru

Pievieno komentāru