Burim i hapur për Luau, një variant i kontrollit të tipit të gjuhës Lua

Njoftoi burimin e hapur dhe publikimin e lëshimit të parë të pavarur të gjuhës së programimit Luau, duke vazhduar zhvillimin e gjuhës Lua dhe të pajtueshme me Lua 5.1. Luau është projektuar kryesisht për futjen e motorëve të skriptimit në aplikacione 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 e zgjeron Lua-n me aftësi të kontrollit të tipit dhe disa konstruksione të reja sintaksore si fjalë për fjalë vargje. Gjuha është e pajtueshme me Lua 5.1 dhe pjesërisht me versionet më të reja. API Lua Runtime mbështetet, duke ju lejuar të përdorni Luau me kodin ekzistues dhe lidhjet. Koha e ekzekutimit të gjuhës bazohet në një kod Lua të ripunuar shumë të ekzekutimit 5.1, por përkthyesi është rishkruar plotësisht. Gjatë zhvillimit, u përdorën disa teknika të reja optimizimi për të arritur performancë më të lartë në krahasim me Lua.

Projekti u zhvillua nga Roblox dhe përdoret në kodin e platformës së lojrave, lojërave dhe aplikacioneve të përdoruesve të kësaj kompanie, përfshirë redaktorin 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:

  • Shkrimi gradual, duke zënë një pozicion të ndërmjetëm midis shtypjes dinamike dhe statike. Luau ju lejon të përdorni shtypjen statike sipas nevojës duke specifikuar informacionin e llojit përmes shënimeve të veçanta. Janë dhënë llojet e integruara "çdo", "nil", "boolean", "number", "string" dhe "thread". Në të njëjtën kohë, ruhet mundësia e përdorimit të shtypjes dinamike pa përcaktuar në mënyrë eksplicite llojin e variablave dhe funksioneve. funksioni foo(x: numri, y: vargu): lokali logjik k: string = y:rep(x) kthen k == fundi "a"
  • Mbështetje për literalet e vargjeve (si në Lua 5.3) si "\0x**" (numër heksadecimal), "\u{**}" (karakter Unicode) dhe "\z" (fundi i rreshtit), si dhe aftësia për të vizualizuar formatimin e numrave (mund të shkruani 1_000_000 në vend të 1000000), fjalë për fjalë për numrat heksadecimal (0x...) dhe numrat binar (0b......).
  • Mbështetje për shprehjen "vazhdim", duke plotësuar fjalën 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 blloqeve 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ë shprehjeve elseif në një bllok. lokale maxValue = nëse a > b atëherë një tjetër b shenjë lokale = nëse x 0 atëherë 1 tjetër 0
  • Prania e një modaliteti izolimi (sandbox), i cili ju lejon të ekzekutoni kode të pabesueshme. Ky funksion mund të përdoret për të organizuar nisjen krah për krah të kodit tuaj dhe kodit të shkruar nga një zhvillues tjetër, për shembull, bibliotekat e palëve të treta, siguria e të cilave nuk mund të garantohet.
  • Një kufizim i bibliotekës standarde nga e cila janë hequr funksionet që mund të krijojnë probleme sigurie. Për shembull, bibliotekat "io" (qasja e skedarëve dhe proceset e nisjes), "paketa" (qasja e skedarëve dhe ngarkimi i moduleve), "os" (funksionet për të hyrë në skedarë dhe ndryshimi i variablave të mjedisit), "debug" (operim i pasigurt me memorie) , "dofile" dhe "loadfile" (qasja FS).
  • Sigurimi i mjeteve për analizën e kodit statik, identifikimi i gabimeve (linter) dhe kontrollimi i përdorimit të saktë të llojeve.
  • Zotëroni analizuesin me performancë të lartë, interpretuesin e bytekodit dhe përpiluesin. Luau nuk e mbështet ende përpilimin JIT, por pretendohet se përkthyesi Luau është mjaft i krahasueshëm në performancë me LuaJIT në disa situata.

Burimi: opennet.ru

Shto një koment