Sors miftuħ għal Luau, varjant ta' verifika tat-tip tal-lingwa Lua

Ħabbret is-sors miftuħ u l-pubblikazzjoni tal-ewwel rilaxx waħdu tal-lingwa ta 'programmar Luau, li tkompli l-iżvilupp tal-lingwa Lua u kompatibbli b'lura ma' Lua 5.1. Luau huwa ddisinjat primarjament biex jinkorpora magni ta 'scripting fl-applikazzjonijiet u għandu l-għan li jikseb prestazzjoni għolja u konsum baxx ta' riżorsi. Il-kodiċi tal-proġett huwa miktub f'C++ u huwa miftuħ taħt il-liċenzja MIT.

Luau jestendi Lua b'kapaċitajiet ta 'kontroll tat-tip u xi kostruzzjonijiet sintattiċi ġodda bħal letterali ta' string. Il-lingwa hija kompatibbli b'lura ma' Lua 5.1 u parzjalment ma' verżjonijiet aktar ġodda. Il-Lua Runtime API hija appoġġjata, li tippermettilek tuża Luau b'kodiċi u rbit eżistenti. Ir-runtime tal-lingwa hija bbażata fuq kodiċi Lua runtime 5.1 maħdum mill-ġdid ħafna, iżda l-interpretu huwa kompletament miktub mill-ġdid. Matul l-iżvilupp, intużaw xi tekniki ġodda ta 'ottimizzazzjoni biex tinkiseb prestazzjoni ogħla meta mqabbla ma' Lua.

Il-proġett ġie żviluppat minn Roblox u jintuża fil-kodiċi tal-pjattaforma tal-logħob, logħob, u applikazzjonijiet tal-utent ta 'din il-kumpanija, inkluż l-editur Roblox Studio. Inizjalment, Luau ġie żviluppat wara bibien magħluqa, iżda fl-aħħar ġie deċiż li jittrasferih għall-kategorija ta 'proġetti miftuħa għal aktar żvilupp konġunt bil-parteċipazzjoni tal-komunità.

Karatteristiċi Ewlenin:

  • Ittajpjar gradwali, li jokkupa pożizzjoni intermedja bejn ittajpjar dinamiku u statiku. Luau jippermettilek tuża ittajpjar statiku kif meħtieġ billi tispeċifika informazzjoni tat-tip permezz ta' annotazzjonijiet speċjali. It-tipi inkorporati "kull", "nil", "boolean", "numru", "string" u "thread" huma pprovduti. Fl-istess ħin, il-possibbiltà li jintuża ittajpjar dinamiku mingħajr definizzjoni espliċita tat-tip ta 'varjabbli u funzjonijiet hija ppreservata. funzjoni foo(x: numru, y: string): boolean lokali k: string = y:rep(x) return k == “a” end
  • Appoġġ għal string literals (bħal fil-Lua 5.3) bħal "\0x**" (numru eżadeċimali), "\u{**}" (karattru Unicode) u "\z" (tarf tal-linja), kif ukoll il- il-ħila li tara l-ifformattjar tan-numri (tista' tikteb 1_000_000 minflok 1000000), letterali għal numri eżadeċimali (0x...) u binarji (0b......).
  • Appoġġ għall-espressjoni "kompli", li tikkumplimenta l-keyword eżistenti "break", biex tiżdied għal iterazzjoni ta 'linja ġdida.
  • Appoġġ għal operaturi ta' assenjazzjoni komposti (+=, -=, *=, /=, %=, ^=, ..=).
  • Appoġġ għall-użu ta 'blokki kondizzjonali "jekk imbagħad inkella" fil-forma ta' espressjonijiet li jirritornaw il-valur ikkalkulat matul l-eżekuzzjoni tal-blokk. Tista' tispeċifika numru arbitrarju ta' espressjonijiet elseif fi blokka. lokali maxValue = jekk a > b allura a inkella b sinjal lokali = jekk x < 0 allura -1 inkella jekk x > 0 allura 1 inkella 0
  • Il-preżenza ta 'mod ta' iżolament (sandbox), li jippermettilek tmexxi kodiċi mhux affidabbli. Din il-karatteristika tista 'tintuża biex torganizza t-tnedija ħdejn xulxin tal-kodiċi tiegħek u l-kodiċi miktub minn żviluppatur ieħor, pereżempju, libreriji ta' partijiet terzi li s-sigurtà tagħhom ma tistax tiġi garantita.
  • Limitazzjoni tal-librerija standard li minnha tneħħew funzjonijiet li potenzjalment jistgħu joħolqu problemi ta' sigurtà. Pereżempju, il-libreriji "io" (aċċess għal fajls u proċessi ta 'tnedija), "pakkett" (aċċess għal fajls u moduli ta' tagħbija), "os" (funzjonijiet għall-aċċess ta 'fajls u tibdil ta' varjabbli ambjentali), "debug" (operazzjoni mhux sikura bil-memorja) , "dofile" u "loadfile" (aċċess FS).
  • Jipprovdu għodod għall-analiżi tal-kodiċi statiku, jidentifikaw żbalji (linter) u jiċċekkjaw l-użu korrett tat-tipi.
  • Parser ta' prestazzjoni għolja, interpretu tal-bytecode u kompilatur proprju. Luau għadu ma jappoġġjax il-kumpilazzjoni JIT, iżda huwa ddikjarat li l-interpretu Luau huwa pjuttost komparabbli fil-prestazzjoni għal LuaJIT f'xi sitwazzjonijiet.

Sors: opennet.ru

Żid kumment