Երկու տարվա մշակումից հետո՝ հունիսի 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

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