PÄc divu gadu izstrÄdes, 29. jÅ«nijÄ klusi un nemanÄmi iznÄca jauna versija programmÄÅ”anas valodas Lua ā 5.4.
Lua ir vienkÄrÅ”a interpretÄjama programmÄÅ”anas valoda, kas viegli iekļaujas lietojumprogrammu kodÄ. Å o Ä«paŔību dÄļ Lua plaÅ”i izmanto kÄ paplaÅ”inÄjuma vai programmu konfigurÄcijas aprakstīŔanas valodu (Ä«paÅ”i datora spÄlÄs). Lua tiek izplatÄ«ta ar MIT licenci.
IepriekÅ”ÄjÄ versija (5.3.5) iznÄca 2018. gada 10. jÅ«lijÄ.
GalvenÄs izmaiÅas jaunajÄ versijÄ
jauns paaudžu balstÄ«ts atkritumu savÄcÄjs (generational). FunkcijÄ collectgarbage parametri setpause un setstepmul ir atzÄ«ti par novecojuÅ”iem, vietÄ ieteicams lietot parametru incremental;
jauna brÄ«dinÄjumu izsniegÅ”anas funkcija warn ar iespÄju izslÄgt to attÄloÅ”anu;
jauna math.random realizÄcija izmanto xoshiro256** algoritmu, nevis libc nodroÅ”inÄto, un inicializÄ Ä£eneratoru ar nejauÅ”u skaitli;
konstantes (constant variables);
Ā«slÄdzamÄsĀ» (to-be-closed) mainÄ«gÄs ā lokÄlas konstantas, kurÄm tiek izpildÄ«ta metode __close, iznÄkot no redzesloka;
jauna funkcija lua_resetthread ā notÄ«ra steku un veic visu Ā«slÄdzamoĀ» mainÄ«go slÄgÅ”anu;
jauna funkcija coroutine.close ā slÄdz noteikto kooperatÄ«vo procesu un visus tÄ Ā«slÄdzamosĀ» mainÄ«gos;
lietotÄju dati (userdata) var saturÄt vÄrtÄ«bu kopas ar piekļuvi pÄc indeksa. Darbam ar tiem ieviestas jaunas funkcijas: lua_newuserdatauv, lua_setiuservalue un lua_getiuservalue;
pieejama atvÄrtÄ informÄcija par funkciju parametriem un atgrieztajÄm vÄrtÄ«bÄm;
ja for ciklÄ tiek izmantots vesels skaitlis kÄ indeksa mainÄ«gais un notiek pÄrpildīŔanÄs ā cikls tiek pÄrtraukts;
funkcijai string.gmatch pievienots izvÄles arguments, kas nosaka atkÄpi no virsmas sÄkuma meklÄÅ”anai;
funkcijas, kas automÄtiski pÄrvÄrÅ” virknes par skaitļiem, pÄrvietotas uz virkÅu bibliotÄku; to uzvedÄ«ba ir mainÄ«jusies. PiemÄram, operÄcijas "1" + "2" rezultÄts tagad ir vesels skaitlis, nevis peldoÅ”s skaitlis;
atmiÅas pieŔķirÅ”anas funkcijÄ ir pieļaujama kļūda, samazinot atmiÅas bloku;
jauns formatÄÅ”anas simbols funkcijÄ string.format ā %p (norÄdÄ«tÄjiem);
utf8 bibliotÄka pieÅem simbolu kodus lÄ«dz 2³¹ (norÄdot Ä«paÅ”u karodziÅu, bez tÄ ir pieļaujami kodu lÄ«dz 0x10FFFF un nav pieļaujami surrogÄti);
veselÄs skaitļu konstantes, kas pÄrsniedz vÄrtÄ«bu diapazonu, tiek pÄrvÄrstas peldoÅ”ajos skaitļos (iepriekÅ” notika bitu nogrieÅ”ana);
metamethod __lt vairs netiek izmantots metamethod __le emulÄÅ”anai, ja nepiecieÅ”ams, metamethod __le jÄdefinÄ skaidri;
goto operatoram etiÄ·ete nevar tikt izveidota, ja paÅ”reizÄjÄ redzamÄ«bÄ jau pastÄv etiÄ·ete ar tÄdu paÅ”u nosaukumu (pat ja tÄ tika definÄta ÄrÄjÄ redzamÄ«bÄ);
metamethod __gc var bÅ«t ne tikai funkcija. Ja mÄÄ£inÄjums izsaukt metodi neizdodas, tiks izsniegts brÄ«dinÄjums;
funkcija print nesauc tostring katram argumentam, bet izmanto savus iekÅ”Äjos pÄrvÄrtÄjumus;
funkcija io.lines atgriež Äetras vÄrtÄ«bas, nevis vienu; lai emulÄtu veco uzvedÄ«bu, iekļauj izsaukumu aploksnÄ, ja tu to ievieto kÄ parametru, izsaucot citu funkciju.
Avots: linux.org.ru
