Luaurako kode irekia, Lua hizkuntzaren mota egiaztatzeko aldaera bat

Luau programazio-lengoaiaren lehen bertsio autonomoaren kode irekia eta argitaratzea iragarri du, Lua lengoaiaren garapenarekin jarraituz eta Lua 5.1-ekin atzerakoi bateragarria. Luau batez ere scripting-motorrak aplikazioetan txertatzeko diseinatuta dago eta errendimendu handia eta baliabideen kontsumo txikia lortzea du helburu. Proiektuaren kodea C++-n idatzita dago eta MIT lizentziapean dago irekita.

Luauk Lua hedatzen du mota egiaztatzeko gaitasunekin eta eraikuntza sintaktiko berri batzuekin, hala nola kate literalak. Hizkuntza atzerakoigarria da Lua 5.1-ekin eta neurri batean bertsio berriekin. Lua Runtime APIa onartzen da, eta Luau lehendik dauden kode eta loturak erabiltzeko aukera ematen du. Hizkuntzaren exekuzioa Lua exekuzio-denbora 5.1 kode oso berritu batean oinarritzen da, baina interpretea guztiz berridatzi da. Garapenean, optimizazio-teknika berri batzuk erabili ziren Lua-rekin alderatuta errendimendu handiagoa lortzeko.

Proiektua Roblox-ek garatu zuen eta konpainia honen joko-plataformaren, jokoen eta erabiltzaileen aplikazioen kodean erabiltzen da, Roblox Studio editorea barne. Hasieran, Luau ate itxietan garatu zen, baina azkenean proiektu irekien kategoriara pasatzea erabaki zen, komunitatearen parte-hartzearekin batera garatzeko.

Ezaugarri nagusiak:

  • Mekanografia mailakatua, idazketa dinamikoaren eta estatikoen arteko tarteko posizioa hartzen duena. Luau-k idazketa estatikoa behar duzun moduan erabiltzeko aukera ematen du, motaren informazioa oharpen berezien bidez zehaztuz. "edozein", "zerbait", "boolearra", "zenbakia", "katea" eta "haria" motak eskaintzen dira. Aldi berean, aldagai eta funtzio mota esplizituki definitu gabe idazketa dinamikoa erabiltzeko aukera mantentzen da. funtzioa foo(x: zenbakia, y: katea): boolearra lokala k: katea = y:rep(x) return k == β€œa” amaiera
  • Kate literalak onartzen ditu (Lua 5.3-n bezala), hala nola "\0x**" (zenbaki hamaseitarra), "\u{**}" (Unicode karakterea) eta "\z" (lerro amaieran), baita Zenbakien formatua ikusteko gaitasuna (1_000_000 idatz dezakezu 1000000ren ordez), literalak hamaseitarretarako (0x...) eta bitar zenbakietarako (0b......).
  • "Jarraitu" adierazpenaren laguntza, lehendik dagoen "break" gako-hitza osatuz, begizta berri batera joateko.
  • Esleipen-operadore konposatuen laguntza (+=, -=, *=, /=, %=, ^=, ..=).
  • Blokearen exekuzioan kalkulatutako balioa itzultzen duten adierazpenen formako "baldin eta bestela" bloke baldintzatuak erabiltzeko laguntza. Bloke batean elseif adierazpen kopuru arbitrario bat zehaztu dezakezu. local maxValue = bada a > b orduan a bestela b tokiko zeinua = bada x < 0 bada -1 bestela x > 0 orduan 1 bestela 0
  • Isolamendu modu baten presentzia (sandbox), fidagarria ez den kodea exekutatzeko aukera ematen duena. Ezaugarri hau zure kodea eta beste garatzaile batek idatzitako kodea elkarren ondoan abiarazteko erabil daiteke, adibidez, segurtasuna bermatu ezin duten hirugarrenen liburutegiak.
  • Liburutegi estandarraren muga, segurtasun arazoak sor ditzaketen funtzioak kendu diren. Adibidez, "io" liburutegiak (fitxategiak atzitzea eta prozesuak abiarazteko), "paketea" (fitxategiak atzitzea eta moduluak kargatzea), "os" (fitxategiak atzitzeko eta ingurune-aldagaiak aldatzeko funtzioak), "araztea" (memoriarekin funtzionamendu ez segurua) , "dofile" eta "loadfile" (FS sarbidea).
  • Kode estatikoa aztertzeko tresnak ematea, akatsak identifikatzea (linter) eta moten erabilera zuzena egiaztatzea.
  • Errendimendu handiko analizatzailea, bytecode interpretea eta konpilatzailea. Luau-k oraindik ez du JIT konpilazioa onartzen, baina Luau interpretea LuaJIT-ekin nahiko parekoa dela dio egoera batzuetan.

Iturria: opennet.ru

Gehitu iruzkin berria