Te anonse sous louvri ak piblikasyon premye lage otonòm nan lang pwogramasyon Luau, kontinye devlopman lang Lua ak bak konpatib ak Lua 5.1. Lang Luau a se sitou gen entansyon pou entegre motè scripting nan aplikasyon yo epi li gen pou objaktif pou reyalize pèfòmans segondè ak konsomasyon resous ki ba. Kòd pwojè a ekri an C++ epi li louvri anba lisans MIT.
Luau pwolonje Lua ak kapasite tcheke kalite ak kèk nouvo konstwi sentaktik tankou literal fisèl. Lang nan se bak konpatib ak Lua 5.1 ak pasyèlman ak vèsyon pi nouvo. API Lua Runtime sipòte, sa ki pèmèt ou sèvi ak Luau ak kòd ki egziste deja ak obligatwa. Tan Egzekitif lang lan baze sou yon kòd Lua 5.1 ki te retravay anpil, men entèprèt la konplètman reekri. Pandan devlopman, kèk nouvo teknik optimize yo te itilize pou reyalize pi wo pèfòmans konpare ak Lua.
Pwojè a te devlope pa Roblox epi li itilize nan kòd platfòm gaming, jwèt, ak aplikasyon itilizatè konpayi sa a, ki gen ladan editè Roblox Studio. Okòmansman, Luau te devlope dèyè pòt fèmen, men nan fen li te deside transfere li nan kategori a nan pwojè louvri pou plis devlopman jwenti ak patisipasyon nan kominote a.
Karakteristik kle:
- Sezisman gradyèl, okipe yon pozisyon entèmedyè ant sezisman dinamik ak estatik. Luau pèmèt ou sèvi ak sezisman estatik jan sa nesesè lè w espesifye enfòmasyon sou kalite atravè anotasyon espesyal. Yo bay kalite entegre "nenpòt", "nil", "boolean", "nimewo", "fisèl" ak "fil". An menm tan an, posiblite pou sèvi ak sezisman dinamik san yo pa defini klèman kalite varyab ak fonksyon yo konsève. fonksyon foo(x: nimewo, y: fisèl): boolean lokal k: fisèl = y:rep(x) retounen k == "a" fen
- Sipò pou literal fisèl (tankou nan Lua 5.3) tankou "\0x**" (nimewo egzadesimal), "\u{**}" (karaktè Unicode) ak "\z" (fen liy), osi byen ke Kapasite pou vizyalize fòma nimewo (ou ka ekri 1_000_000 olye pou yo 1000000), literal pou egzadesimal (0x...) ak nimewo binè (0b......).
- Sipò pou ekspresyon "kontinye", konpleman mo kle "break" ki deja egziste a, pou ale nan yon nouvo iterasyon bouk.
- Sipò pou operatè plasman konpoze (+=, -=, *=, /=, %=, ^=, ..=).
- Sipò pou itilize blòk kondisyonèl "si-lè sa a-lòt" nan fòm ekspresyon ki retounen valè a kalkile pandan ekzekisyon blòk la. Ou ka presize yon kantite abitrè ekspresyon elseif nan yon blòk. lokal maxValue = if a > b then a else b local sign = if x < 0 then -1 elseif x > 0 then 1 else 0
- Prezans nan yon mòd izolasyon (sandbox), ki pèmèt ou kouri kòd ki pa fè konfyans. Karakteristik sa a ka itilize pou òganize lansman kòt a kòt nan pwòp kòd ou a ak kòd ekri pa yon lòt pwomotè, pou egzanp, bibliyotèk twazyèm pati pou sekirite yo pa ka garanti.
- Yon limit nan bibliyotèk estanda ki gen fonksyon ki kapab kreye pwoblèm sekirite yo te retire. Pou egzanp, bibliyotèk yo "io" (aksè nan dosye ak pwosesis lanse), "pake" (aksè nan fichye ak chaj modil), "os" (fonksyon pou jwenn aksè nan dosye ak chanje varyab anviwònman), "debug" (operasyon san danje ak memwa) , "dofile" ak "loadfile" (aksè FS).
- Bay zouti pou analiz kòd estatik, idantifye erè (linter) ak tcheke itilizasyon kòrèk kalite yo.
- Pwòp analizeur wo-pèfòmans, entèprèt bytecode ak konpilatè. Luau poko sipòte konpilasyon JIT, men yo reklame ke entèprèt Luau a byen konparab nan pèfòmans ak LuaJIT nan kèk sitiyasyon.
Sous: opennet.ru
