Kodu i Luau, një variant i gjuhës Lua me verifikim të tipeve, është hapur

Është njoftuar hapja e burimeve të kodit dhe publikimi i numrit të parë të gjuhës së programimit Luau, e cila vazhdon zhvillimin e gjuhës Lua dhe është plotësisht e përshtatshme me Lua 5.1. Gjuha Luau është krijuar kryesisht për integrimin e skripteve në aplikacione dhe synon të arrijë performancë të lartë dhe konsum të ulët burimesh. Kodi i projektit është shkruar në gjuhën C++ dhe është i hapur nën licencën MIT.

Luau zgjeron Lua me mundësi për verifikimin e tipeve dhe disa konstrukte të reja sintaksore, si literalet e vargjeve. Gjuha është e përshtatshme me Lua 5.1 dhe pjesërisht me versione më të reja. Mbështetet API e Lua Runtime, çka lejon përdorimin e Luau me kodin ekzistues dhe lidhjet (binding). Runtime i gjuhës bazohet në një kod të ripërpunuar thelbësisht nga Lua runtime 5.1, por interpretuesi është shkruar plotësisht nga e para. Gjatë zhvillimit janë përdorur disa teknika të reja optimizimi, të cilat kanë lejuar arritjen e një performancë më të lartë në krahasim me Lua.

Projekti është zhvilluar nga kompania Roblox dhe përdoret në kodin e platformës lojëra, lojërave dhe aplikacioneve të përdoruesve të kësaj kompanie, duke përfshirë editorin Roblox Studio. Fillimisht, Luau ishte zhvilluar nën dyer të mbyllura, por përfundimisht u vendos që ta transferonte atë në një projekt të hapur për zhvillim të mëtejshëm në bashkëpunim me komunitetin.

Karakteristikat kryesore:

  • Sistemi i gradualizuar i tipeve (Gradual typing) që qëndron në një vend midis tipizimit dinamik dhe atij statik. Luau lejon përdorimin e tipizimit statik kur është e nevojshme, duke treguar informacionin për tipe përmes annotimeve speciale. Ofrohen tipe të integruara: "any", "nil", "boolean", "number", "string" dhe "thread". Gjithashtu, ruhet edhe mundësia për të përdorur tipizimin dinamik pa përcaktimin e qartë të tipeve të variablave dhe funksioneve. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == «a» end
  • Mbështetje për literalet e vargjeve (si në Lua 5.3), të tilla si «\0x**» (numri heksakor), «\u{**}» (simboli Unicode) dhe «\z» (fund i vargut), si dhe mundësia për të paraqitur numrat në mënyrë më vizuale (mund të shkruani 1_000_000 në vend të 1000000), literalet për numrat heksakorë (0x…) dhe binarë (0b…….).
  • Mbështetje për shprehjen «continue», që plotëson fjalën kyçe ekzistuese «break», për të kaluar në një iterim të ri të ciklit.
  • Mbështetje për operatorët e ndërlikuar të caktimit (+=, -=, *=, /=, %=, ^=, ..=).
  • Mbështetje për përdorimin e blloqeve kushtore «if-then-else» në formën e shprehjeve, që kthejnë një vlerë të llogaritur gjatë ekzekutimit të bllokut. Lejohet përcaktimi i një numri të çfarëdo shprehjesh elseif në bllok. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Prania e një regjimi izolimi (sandbox), që lejon ekzekutimin e kodit të pa besueshëm. Kjo mundësi mund të përdoret për të organizuar ekzekutimin bashkë me kodin tuaj dhe kodin e shkruar nga zhvillues të tjerë, për shembull, bibliotekat e palëve të treta për të cilat nuk mund të garantoni sigurinë.
  • Kufizimi i bibliotekës standarde nga e cila janë fshirë funksionet që potencialisht mund të krijojnë probleme me sigurinë. Për shembull, nga grupi standard janë përjashtuar bibliotekat «io» (qëndruese në skedarë dhe ekzekutimin e proceseve), «package» (qëndrimi në skedarë dhe ngarkimi i moduleve), «os» (funksionet e qasjes në skedarë dhe ndryshimit të variablave të mjedisit janë eliminuar), «debug» (menaxhimi i pasigurt i memories), «dofile» dhe «loadfile» (qëndrimi në FS).
  • Ofrohen mjete për analizën statike të kodit, identifikimin e gabimeve (linter) dhe verifikimin e saktësisë së përdorimit të tipeve.
  • Parser, interpretues të kodit dhe kompilator me performancë të lartë. Luau për momentin nuk mbështet JIT-kompilimin, por është thënë se interpretuesi i Luau në disa situata është mjaft konkurrues në performancë me LuaJIT.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster