Luau, një variant i kontrollit të tipit të gjuhës Lua bëhet me burim të hapur

kohët e fundit u njoftua lëshimi i versionit të parë i pavarur nga gjuha e programimit luau, i cili vazhdon me zhvillimin e Lua dhe është gjithashtu i pajtueshëm me versionet e mëparshme të Lua 5.1.

Gjuha Luau është projektuar kryesisht për futjen e motorëve të skriptit në aplikime dhe synon të arrijë performancë të lartë dhe konsum të ulët burimesh. Kodi i projektit është i shkruar në C ++ dhe është i hapur nën licencën MIT.

Luau zgjeron Lua me aftësitë e kontrollit të tipit dhe disa ndërtime sintaksore të reja si fjalë për fjalë vargje. Gjuha është e përputhshme me versionet e mëparshme të Lua 5.1 dhe pjesërisht me versionet më të reja. Lua Runtime API mbështetet, duke lejuar që Luau të përdoret me kode dhe lidhje para-ekzistuese.

Nga sot, Luau nuk është më pjesë e pandashme e platformës Roblox; është një gjuhë e pavarur me burim të hapur.

Koha e ekzekutimit të gjuhës bazohet në kodin e ekzekutimit Lua 5.1 të rishikuar shumë, por përkthyesi është rishkruar plotësisht. Zhvillimi përfshinte disa teknika të reja optimizimi që bënë të mundur arritjen e performancës më të lartë në krahasim me Lua.

Kur Roblox u krijua 15 vjet më parë, ne zgjodhëm Lua si gjuhë programimi. Lua ishte i vogël, i shpejtë, i lehtë për t'u integruar dhe mësuar dhe hapi mundësi të mëdha për zhvilluesit tanë.

Pjesa më e madhe e Roblox u ndërtua në Lua, duke përfshirë qindra mijëra rreshta kodi të zhvilluar brenda vendit që fuqizon aplikacionin Roblox dhe Roblox Studio deri më sot, dhe miliona përvoja që zhvilluesit kanë krijuar. Për shumë prej tyre, ishte gjuha e parë e programimit që mësuan.

Projekti u zhvillua nga Roblox dhe përdoret në kodin e platformës së lojës dhe aplikacionet me porosi nga kjo kompani, duke përfshirë edhe botuesin e Roblox Studio. Fillimisht Luau u zhvillua me dyer të mbyllura, por në fund u vendos që të transferohej në kategorinë e projekteve të hapura për zhvillim të mëtejshëm të përbashkët me pjesëmarrjen e komunitetit.

Karakteristikat kryesore:

  • Një sistem i tipit sekuencial, i cili zë një pozicion të ndërmjetëm midis shkrimit dinamik dhe statik. Luau lejon shkrimin statik sipas nevojës duke specifikuar informacionin e llojit përmes shënimeve speciale.
  • llojet e integruara "Any", "nil", "boolean", "number", "string" dhe "thread". Në të njëjtën kohë, ruhet edhe aftësia për të përdorur shtypjen dinamike pa përcaktuar në mënyrë eksplicite llojin e variablave dhe funksioneve.
  • Mbështetje për vargjet literale (si në Lua 5.3)
  • Mbështetje për shprehjen "vazhdim", përveç fjalës kyçe ekzistuese "break", për të kaluar në një përsëritje të re të ciklit.
  • Mbështetje për operatorët e caktimit të përbërë
  • Mbështetje për përdorimin e blloqe të kushtëzuara "If-ather-else" në formën e shprehjeve që kthejnë vlerën e llogaritur gjatë ekzekutimit të bllokut. Ju mund të specifikoni një numër arbitrar të deklaratave elseif në një bllok.
  • Prania e një regjimi sandbox i cili ju lejon të ekzekutoni kode të pabesueshme. Ky funksion mund të përdoret për të organizuar kodin dhe kodin tuaj të shkruar nga një zhvillues tjetër, për shembull bibliotekat e palëve të treta që nuk mund të garantohen, për t'u ekzekutuar krah për krah.
  • Një kufizim i bibliotekës standarde nga e cila janë hequr funksionet që mund të krijojnë probleme sigurie. Për shembull, bibliotekat "io" (qasja në skedarë dhe proceset e nisjes), "paketë" (qasja në skedarë dhe ngarkimi i moduleve), "os" (funksionet për të hyrë në skedarë dhe për të ndryshuar variablat e mjedisit janë hequr), "Debug" (i pasigurt trajtimi i memories), "dofile" dhe "loadfile" (qasja në sistemin e skedarëve).
  • Siguroni mjete për analizën statike të kodit, zbulimin e gabimeve (Linter) dhe vërtetimin e përdorimit të llojeve.
  • Analizator, interpretuesi i bytekodit dhe përpilues pronësor me performancë të lartë.
  • Luau nuk e mbështet ende përpilimin JIT, por argumentohet se përkthyesi Luau është mjaft i krahasueshëm në performancë me LuaJIT në disa situata.

Më në fund nëse jeni të interesuar të dini më shumë për të, ju mund të kontrolloni detajet Në lidhjen vijuese.