Բաց կոդով Luau-ի համար, լուա լեզվի տիպերի ստուգման տարբերակ

Հայտարարեց Luau ծրագրավորման լեզվի առաջին առանձին թողարկման բաց կոդով և հրապարակման մասին՝ շարունակելով Lua լեզվի զարգացումը և հետընթաց համատեղելի Lua 5.1-ի հետ: Luau-ն նախագծված է հիմնականում սկրիպտային շարժիչները հավելվածների մեջ ներդնելու համար և նպատակ ունի հասնել բարձր կատարողականության և ռեսուրսների ցածր սպառման: Ծրագրի կոդը գրված է C++-ով և բաց է MIT լիցենզիայի ներքո:

Luau-ն ընդլայնում է Lua-ն տիպերի ստուգման հնարավորություններով և որոշ նոր շարահյուսական կառուցվածքներով, ինչպիսիք են տողերի տառերը: Լեզուն հետամնաց համատեղելի է Lua 5.1-ի և մասամբ ավելի նոր տարբերակների հետ: Lua Runtime API-ն աջակցվում է, որը թույլ է տալիս օգտագործել Luau-ն գոյություն ունեցող կոդով և կապանքներով: Լեզվի գործարկման ժամանակը հիմնված է մեծապես վերամշակված Lua գործարկման 5.1 կոդի վրա, սակայն թարգմանիչը ամբողջությամբ վերաշարադրված է: Մշակման ընթացքում որոշ նոր օպտիմալացման մեթոդներ են օգտագործվել Lua-ի համեմատ ավելի բարձր կատարողականության հասնելու համար:

Նախագիծը մշակվել է Roblox-ի կողմից և օգտագործվում է այս ընկերության խաղային հարթակի, խաղերի և օգտատերերի հավելվածների կոդում, ներառյալ Roblox Studio-ի խմբագրիչը։ Սկզբում Luau-ն մշակվել է փակ դռների հետևում, սակայն ի վերջո որոշվել է այն տեղափոխել բաց նախագծերի կատեգորիա՝ համայնքի մասնակցությամբ հետագա համատեղ զարգացման համար։

Հիմնական առանձնահատկությունները.

  • Աստիճանական մուտքագրում, միջանկյալ դիրք զբաղեցնելով դինամիկ և ստատիկ մուտքագրման միջև: Luau-ն թույլ է տալիս օգտագործել ստատիկ մուտքագրում ըստ անհրաժեշտության՝ հատուկ ծանոթագրությունների միջոցով նշելով տիպի տեղեկատվությունը: Տրված են ներկառուցված «ցանկացած», «զրոյական», «բուլյան», «համար», «լար» և «թել»: Միևնույն ժամանակ պահպանվում է դինամիկ մուտքագրում օգտագործելու հնարավորությունը՝ առանց փոփոխականների և ֆունկցիաների տիպի հստակ սահմանման։ ֆունկցիա foo(x: համար, y: string): բուլյան տեղական k: string = y:rep(x) վերադարձ k == «a» վերջ
  • Աջակցություն լարային բառացիներին (ինչպես Lua 5.3-ում), ինչպիսիք են «\0x**» (վեցանկյուն թիվ), «\u{**}» (Յունիկոդի նիշ) և «\z» (տողի վերջ), ինչպես նաև թվերի ձևաչափումը պատկերացնելու ունակություն (կարող եք գրել 1_000_000 1000000-ի փոխարեն), տասական (0x...) և երկուական թվերի համար բառացիներ (0b......):
  • Աջակցություն «շարունակել» արտահայտությանը, որը լրացնում է գոյություն ունեցող «break» հիմնաբառը՝ անցնելու նոր հանգույցի կրկնության:
  • Աջակցություն բարդ նշանակման օպերատորներին (+=, -=, *=, /=, %=, ^=, ..=):
  • Աջակցություն պայմանական «եթե-ապա-ուրիշ» բլոկների օգտագործմանը արտահայտությունների տեսքով, որոնք վերադարձնում են բլոկի կատարման ընթացքում հաշվարկված արժեքը: Բլոկի մեջ կարող եք նշել կամայական թվով elseif արտահայտություններ: տեղական maxValue = եթե a > b, ապա a else b տեղական նշան = եթե x < 0 ապա -1 elseif x > 0 ապա 1 else 0
  • Մեկուսացման ռեժիմի (ավազի տուփի) առկայությունը, որը թույլ է տալիս գործարկել անվստահելի կոդ: Այս հատկությունը կարող է օգտագործվել մեկ այլ մշակողի կողմից գրված ձեր սեփական կոդի և կոդի գործարկումը կողք կողքի կազմակերպելու համար, օրինակ՝ երրորդ կողմի գրադարանները, որոնց անվտանգությունը չի կարող երաշխավորվել:
  • Ստանդարտ գրադարանի սահմանափակում, որից հեռացվել են գործառույթները, որոնք կարող էին անվտանգության խնդիրներ ստեղծել: Օրինակ՝ գրադարանները «io» (ֆայլեր մուտք գործելու և գործարկելու գործընթացներ), «փաթեթ» (ֆայլեր մուտք գործելու և մոդուլների բեռնում), «os» (ֆայլեր մուտք գործելու և շրջակա միջավայրի փոփոխականները փոխելու գործառույթներ), «վրիպազերծում» (հիշողության հետ անապահով գործողություն) , «dofile» և «loadfile» (FS մուտք):
  • Ստատիկ կոդի վերլուծության գործիքների ապահովում, սխալների (լիտր) հայտնաբերման և տեսակների ճիշտ օգտագործման ստուգում։
  • Սեփական բարձր կատարողական վերլուծիչ, բայթկոդի թարգմանիչ և կոմպիլյատոր: Luau-ն դեռ չի աջակցում JIT-ի կազմմանը, սակայն պնդում են, որ Luau թարգմանիչը կատարողականությամբ բավականին համեմատելի է որոշ իրավիճակներում LuaJIT-ի հետ:

Source: opennet.ru

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