Երկու տարվա մշակումից հետո՝ հունիսի 29-ին, անաղմուկ ու անաղմուկ թողարկվեց Lua ծրագրավորման լեզվի նոր տարբերակը՝ 5.4-ը։
Lua-ն պարզ, մեկնաբանվող ծրագրավորման լեզու է, որը կարող է հեշտությամբ ինտեգրվել հավելվածներին: Այս հատկությունների շնորհիվ Lua-ն լայնորեն օգտագործվում է որպես ծրագրերի (մասնավորապես՝ համակարգչային խաղերի) կոնֆիգուրացիան ընդլայնելու կամ նկարագրելու լեզու: Lua-ն տարածվում է MIT լիցենզիայի ներքո:
Նախորդ տարբերակը (5.3.5) թողարկվել է 10 թվականի հուլիսի 2018-ին։
Նոր տարբերակի հիմնական փոփոխությունները
-
նոր սերնդի աղբահան. Collectiongarbage ֆունկցիայում setpause և setstepmul պարամետրերը հնացել են, և փոխարենը առաջարկվում է աճող պարամետրը.
-
նախազգուշացման նախազգուշացումներ տալու նոր գործառույթ՝ դրանց ցուցադրումն անջատելու ունակությամբ.
-
math.random-ի նոր իրականացումը տրամադրված libc-ի փոխարեն օգտագործում է xoshiro256** ալգորիթմը և գեներատորը սկզբնավորում է պատահական թվով;
-
հաստատուն փոփոխականներ;
-
«փակվելիք» փոփոխականները տեղային հաստատուններ են, որոնց համար __close մեթոդն իրականացվում է շրջանակից դուրս գալու ժամանակ.
-
նոր գործառույթ lua_resetthread - մաքրում է կույտը և փակում բոլոր «փակ» փոփոխականները.
-
նոր գործառույթ coroutine.close - փակում է նշված coroutine-ը և դրա բոլոր «փակ» փոփոխականները.
-
Օգտագործողի տվյալները կարող են պարունակել մի շարք արժեքներ, որոնց հասանելի է ինդեքսը: Նրանց հետ աշխատելու համար ներդրվել են նոր գործառույթներ՝ lua_newuserdatauv, lua_setiuservalue և lua_getiuservalue;
-
Գործառույթների պարամետրերի և վերադարձի արժեքների մասին վրիպազերծման տեղեկատվությունը հասանելի է.
-
եթե for loop-ում օգտագործվում է ամբողջ թվի ինդեքս, և տեղի է ունենում արտահոսք, հանգույցն ավարտվում է.
-
string.gmatch ֆունկցիային ավելացվել է կամընտիր արգումենտ՝ նշելով համընկնումներ որոնելու համար տողի սկզբից օֆսեթը.
-
Տողերը թվերի անուղղակի փոխակերպման գործառույթները տեղափոխվել են տողերի գրադարան, և դրանց վարքագիծը փոխվել է: Օրինակ, «1» + «2» գործողության արդյունքն այժմ ամբողջ թիվ է, այլ ոչ թե լողացող կետ;
-
Հիշողության բաշխման գործառույթում կարող է սխալ առաջանալ հիշողության բլոկի կրճատման ժամանակ.
-
նոր ֆորմատավորման նիշ string.format ֆունկցիայի մեջ - %p (ցուցիչների համար);
-
utf8 գրադարանն ընդունում է մինչև 2³¹ նիշերի կոդերը (եթե հատուկ դրոշակ է նշված, առանց դրա թույլատրվում են միայն մինչև 0x10FFFF կոդերը, իսկ փոխնակները չեն թույլատրվում);
-
Արժեքների միջակայքից դուրս գտնվող ամբողջ թվերի հաստատունները փոխակերպվում են լողացող թվերի (նախկինում տեղի է ունեցել բիթերի կտրում);
-
__lt մետամեթոդն այլևս չի օգտագործվում __le մեթոդը ընդօրինակելու համար, անհրաժեշտության դեպքում __le մեթոդը պետք է հստակորեն նշվի.
-
goto հայտարարության համար պիտակ չի կարող ստեղծվել, եթե նույն անունով պիտակ արդեն գոյություն ունի ընթացիկ տիրույթում (նույնիսկ եթե այն սահմանված է արտաքին շրջանակում);
-
__gc մետամեթոդը կարող է լինել ավելին, քան պարզապես ֆունկցիա: Եթե մեթոդ կանչելու փորձը ձախողվի, կտպագրվի նախազգուշացում.
-
տպման ֆունկցիան չի կանչում tostring յուրաքանչյուր արգումենտի համար, այլ օգտագործում է իր ներքին փոխարկումները.
-
io.lines ֆունկցիան մեկ արժեքի փոխարեն վերադարձնում է չորս արժեքների հավաքածու; հին վարքագիծը ընդօրինակելու համար զանգը փակեք փակագծերում, եթե այն որպես պարամետր փոխանցում եք մեկ այլ ֆունկցիայի կանչի:
Source: linux.org.ru