Luau, 'n tipe-gekontroleerde variant van die Lua-taal, is oopbron

Het die oopbron en publikasie van die eerste selfstandige vrystelling van die Luau-programmeertaal aangekondig, wat die ontwikkeling van die Lua-taal voortgesit het en agteruit versoenbaar is met Lua 5.1. Luau is hoofsaaklik ontwerp vir die inbedding van script-enjins in toepassings en het ten doel om hoë werkverrigting en lae hulpbronverbruik te bereik. Die projekkode is in C++ geskryf en is oop onder die MIT-lisensie.

Luau brei Lua uit met tipekontrole-vermoëns en 'n paar nuwe sintaktiese konstrukte soos snaarletters. Die taal is agtertoe versoenbaar met Lua 5.1 en gedeeltelik met nuwer weergawes. Die Lua Runtime API word ondersteun, sodat jy Luau met bestaande kode en bindings kan gebruik. Die taallooptyd is gebaseer op 'n sterk herwerkte Lua-looptyd 5.1-kode, maar die tolk is heeltemal herskryf. Tydens ontwikkeling is 'n paar nuwe optimaliseringstegnieke gebruik om hoër werkverrigting in vergelyking met Lua te behaal.

Die projek is deur Roblox ontwikkel en word gebruik in die kode van die spelplatform, speletjies en gebruikerstoepassings van hierdie maatskappy, insluitend die Roblox Studio-redigeerder. Aanvanklik is Luau agter geslote deure ontwikkel, maar uiteindelik is besluit om dit na die kategorie van oop projekte oor te plaas vir verdere gesamentlike ontwikkeling met deelname van die gemeenskap.

Belangrikste kenmerke:

  • Geleidelike tik, neem 'n tussenposisie tussen dinamiese en statiese tik in. Luau laat jou toe om statiese tik te gebruik soos nodig deur tipe inligting deur spesiale aantekeninge te spesifiseer. Die ingeboude tipes "enige", "nul", "boolean", "nommer", "string" en "draad" word verskaf. Terselfdertyd word die moontlikheid behoue ​​om dinamiese tik te gebruik sonder om die tipe veranderlikes en funksies uitdruklik te definieer. funksie foo(x: getal, y: string): boolean plaaslike k: string = y:rep(x) gee terug k == "a" einde
  • Ondersteuning vir letterlike stringe (soos in Lua 5.3) soos "\0x**" (heksadesimale getal), "\u{**}" (Unicode-karakter) en "\z" (einde van reël), sowel as die vermoë om getalformatering te visualiseer (jy kan 1_000_000 in plaas van 1000000 skryf), letterlike vir heksadesimale (0x...) en binêre getalle (0b......).
  • Ondersteuning vir die "gaan voort" uitdrukking, wat die bestaande "breek" sleutelwoord aanvul, om na 'n nuwe lus-iterasie te spring.
  • Ondersteuning vir saamgestelde opdragoperateurs (+=, -=, *=, /=, %=, ^=, ..=).
  • Ondersteuning vir die gebruik van voorwaardelike "as-dan-anders" blokke in die vorm van uitdrukkings wat die waarde teruggee wat bereken is tydens die uitvoering van die blok. Jy kan 'n arbitrêre aantal elseif-uitdrukkings in 'n blok spesifiseer. plaaslike maksimumwaarde = as a > b dan a anders b plaaslike teken = as x < 0 dan -1 anders as x > 0 dan 1 anders 0
  • Die teenwoordigheid van 'n isolasiemodus (sandbak), wat jou toelaat om onbetroubare kode uit te voer. Hierdie kenmerk kan gebruik word om die bekendstelling langs jou eie kode en kode wat deur 'n ander ontwikkelaar geskryf is, te organiseer, byvoorbeeld derdeparty-biblioteke waarvan die veiligheid nie gewaarborg kan word nie.
  • 'n Beperking van die standaardbiblioteek waaruit funksies wat moontlik sekuriteitsprobleme kan skep, verwyder is. Byvoorbeeld, die biblioteke "io" (toegang tot lêers en bekendstellingsprosesse), "pakket" (toegang tot lêers en laai modules), "os" (funksies vir toegang tot lêers en die verandering van omgewingsveranderlikes), "debug" (onveilige werking met geheue) , "dofile" en "loadfile" (FS-toegang).
  • Voorsien gereedskap vir statiese kode-analise, identifisering van foute (linter) en kontrolering van die korrekte gebruik van tipes.
  • Eie hoëprestasie-ontleder, greepkode-tolk en samesteller. Luau ondersteun nog nie JIT-samestelling nie, maar daar word beweer dat die Luau-tolk redelik vergelykbaar is in prestasie met LuaJIT in sommige situasies.

Bron: opennet.ru

Voeg 'n opmerking