Lua 5.4 ծրագրավորման լեզվի թողարկում

Հինգ տարվա զարգացումից հետո հասանելի է արձակել Լուա 5.4, արագ և կոմպակտ սկրիպտավորման ծրագրավորման լեզու, որը լայնորեն օգտագործվում է որպես ներկառուցված լեզու (օրինակ՝ կոնֆիգուրացիա սահմանելու կամ ընդլայնումներ գրելու համար)։ Lua թարգմանչի կոդը գրված է C և տարածվում է MIT լիցենզիայի ներքո:

Լուան միավորում է պարզ ընթացակարգային շարահյուսությունը տվյալների նկարագրության հզոր հնարավորությունների հետ՝ ասոցիատիվ զանգվածների և լեզվի ընդարձակելի իմաստաբանության միջոցով: Lua-ն օգտագործում է դինամիկ մուտքագրում՝ լեզվական կոնստրուկցիաները փոխակերպելով բայթկոդի, որն աշխատում է ռեգիստրի վրա հիմնված վիրտուալ մեքենայի վրա՝ ավտոմատ աղբահանությամբ: Թարգմանիչն ինքնին նախագծված է որպես գրադարան, որը կարող է հեշտությամբ ինտեգրվել C և C++ լեզուներով նախագծերին:

Հիմնական նորամուծություններ:

  • Գործարկվել է աղբահավաքի աշխատանքի նոր ռեժիմ.սերունդ», որը լրացնում էր նախկինում առկա աղբահանության աստիճանական ռեժիմը: Նոր ռեժիմը ներառում է ավելի հաճախակի կրճատված սողալ՝ ընդգրկելով միայն վերջերս ստեղծված օբյեկտները: Բոլոր օբյեկտների ամբողջական անցումը կատարվում է միայն այն դեպքում, եթե կարճ անցումից հետո հնարավոր չի եղել հասնել ցանկալի հիշողության սպառմանը: Այս մոտեցումը թույլ է տալիս հասնել ավելի բարձր կատարողականության և նվազեցնել հիշողության սպառումը, երբ պահում եք մեծ թվով օբյեկտներ, որոնք ապրում են կարճ ժամանակով:
  • Ավելացվեց «const» հատկանիշով սահմանված հաստատուն փոփոխականներ սահմանելու հնարավորություն: Նման փոփոխականները կարող են նշանակվել միայն մեկ անգամ, իսկ սկզբնավորվելուց հետո չեն կարող փոխվել:
  • Ավելացված է փոփոխականների աջակցություն»փակվելիք", որոնք վերագրվում են օգտագործելով "close" հատկանիշը և հիշեցնում են հաստատուն տեղական փոփոխականներ (const հատկանիշով), որոնք տարբերվում են դրանցից նրանով, որ արժեքը փակ է (կոչվում է "__close" մեթոդը), երբ այն դուրս է գալիս շրջանակից, օրինակ. Բլոկի բնականոն ավարտից հետո անցում օգտագործելով ընդմիջում/գնա/վերադարձ կամ ելք, երբ սխալ է տեղի ունենում:
  • Տիպ "օգտագործողի տվյալները«, որն ապահովում է ցանկացած C տվյալների Lua փոփոխականներում պահելու հնարավորություն (ներկայացնում է տվյալների բլոկ հիշողության մեջ կամ պարունակում է C ցուցիչ), այժմ կարող է պարունակել մի քանի արժեքներ (ունեն մի քանի մետաաղյուսակներ):
  • Ներկայացված է կեղծ պատահական թվերի ստեղծման ֆունկցիայի նոր իրականացում` math.random:
  • Ավելացվել է նախազգուշացումների համակարգ, որը որոշվում է արտահայտության միջոցով զգուշացրեք և, ի տարբերություն սխալների, չեն ազդում ծրագրի հետագա կատարման վրա:
  • Ավելացվել է վրիպազերծման տեղեկատվություն ֆունկցիայի փաստարկների և վերադարձվող արժեքների մասին:
  • Առաջարկվել է նոր իմաստաբանություն՝ օղակներում ամբողջ թվերը թվարկելու համար»համար«. Կրկնումների քանակը հաշվարկվում է նախքան հանգույցի մեկնարկը, ինչը խուսափում է փոփոխական արտահոսքից և հանգույցից: Եթե ​​սկզբնական արժեքը մեծ է սահմանափակող արժեքից, ապա ցուցադրվում է սխալ:
  • Գործառույթի մեջ 'string.gmatchավելացրել է նոր ընտրովի արգումենտ «init», որը որոշում է, թե որ դիրքից սկսել որոնումը (լռելյայն՝ 1 նիշից):
  • Ավելացվեցին նոր հնարավորություններlua_resetthread« (վերակայում է շարանը, մաքրում է զանգերի ամբողջ փաթեթը և փակում բոլոր «փակվելիք» փոփոխականները) և «coroutine.փակել« (փակում է կորուտինը և բոլոր հարակից «փակվելիք» փոփոխականները):
  • Տողերը թվերի փոխարկելու գործառույթները տեղափոխվել են «string» գրադարան։
  • Հիշողության բաշխման ֆունկցիայի զանգերն այժմ կարող են ձախողվել, եթե հիշողության բլոկի չափը փոքրացվի:
  • Գործառույթի մեջ 'string.formatԱվելացրել է աջակցություն նոր ձևաչափի «%p» (ցուցիչը վերադարձվել է lua_topointer-ի կողմից):
  • utf8 գրադարանը ապահովում է աջակցություն նիշերի կոդերը մինչև 2^31 թվերով։

Source: opennet.ru

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