Opinn uppspretta fyrir Luau, tegundaskoðunarafbrigði af Lua tungumálinu

Tilkynnti opinn uppspretta og útgáfu fyrstu sjálfstæðu útgáfuna af Luau forritunarmálinu, áframhaldandi þróun Lua tungumálsins og afturábak samhæft við Lua 5.1. Luau er hannað fyrst og fremst til að fella forskriftarvélar inn í forrit og miðar að því að ná háum afköstum og lítilli auðlindanotkun. Verkefniskóðinn er skrifaður í C++ og er opinn undir MIT leyfinu.

Luau útvíkkar Lua með tegundaeftirlitsmöguleikum og nokkrum nýjum setningafræðilegum byggingum eins og strengjabókstafi. Tungumálið er afturábak samhæft við Lua 5.1 og að hluta til nýrri útgáfur. Lua Runtime API er stutt, sem gerir þér kleift að nota Luau með núverandi kóða og bindingum. Tungumál keyrslutíminn er byggður á mikið endurgerðum Lua runtime 5.1 kóða, en túlkurinn er algjörlega endurskrifaður. Við þróun voru nokkrar nýjar hagræðingaraðferðir notaðar til að ná meiri árangri samanborið við Lua.

Verkefnið var þróað af Roblox og er notað í kóða leikjapallsins, leikja og notendaforrita þessa fyrirtækis, þar á meðal Roblox Studio ritstjóra. Upphaflega var Luau þróað fyrir luktum dyrum en á endanum var ákveðið að færa það í flokk opinna verkefna til frekari sameiginlegrar þróunar með þátttöku samfélagsins.

Helstu eiginleikar:

  • Smám saman vélritun, skipar millistöðu á milli kraftmikilla og kyrrstæðrar vélritunar. Luau gerir þér kleift að nota fasta vélritun eftir þörfum með því að tilgreina tegundarupplýsingar með sérstökum athugasemdum. Innbyggðu gerðirnar „hvað sem er“, „null“, „boolean“, „tala“, „strengur“ og „þráður“ eru til staðar. Jafnframt varðveitist möguleikinn á að nota kraftmikla vélritun án þess að skilgreina sérstaklega tegund breyta og aðgerða. fall foo(x: tala, y: strengur): boolean staðbundin k: strengur = y:rep(x) skilar k == „a“ enda
  • Stuðningur við bókstafi strengja (eins og í Lua 5.3) eins og "\0x**" (sextándatala), "\u{**}" (Unicode staf) og "\z" (enda línu), auk getu til að sjá fyrir sér talnasnið (þú getur skrifað 1_000_000 í stað 1000000), bókstafi fyrir sextánda (0x...) og tvöfalda tölur (0b......).
  • Stuðningur við "halda áfram" tjáningu, viðbót við núverandi "brot" leitarorð, til að hoppa yfir í nýja lykkjuendurtekningu.
  • Stuðningur við samsetta úthlutanir (+=, -=, *=, /=, %=, ^=, ..=).
  • Stuðningur við notkun á skilyrtum „ef-þá-annað“ blokkum í formi tjáningar sem skila gildinu sem reiknað var út við framkvæmd kubbsins. Þú getur tilgreint handahófskenndan fjölda elseif tjáninga í blokk. staðbundið maxValue = ef a > b þá a annað b staðbundið tákn = ef x < 0 þá -1 elseif x > 0 þá 1 annað 0
  • Tilvist einangrunarhams (sandkassi), sem gerir þér kleift að keyra óáreiðanlegan kóða. Þessi eiginleiki er hægt að nota til að skipuleggja ræsingu hlið við hlið eigin kóða og kóða sem skrifaður er af öðrum forritara, til dæmis þriðja aðila bókasöfn sem ekki er hægt að tryggja öryggi.
  • Takmörkun á staðlaða bókasafninu þar sem aðgerðir sem gætu hugsanlega skapað öryggisvandamál hafa verið fjarlægðar. Til dæmis, bókasöfnin „io“ (aðgengi að skrám og ræsingarferli), „pakki“ (aðgangur að skrám og hleðslueiningum), „os“ (aðgerðir til að fá aðgang að skrám og breyta umhverfisbreytum), „kemba“ (óörugg aðgerð með minni) , „dofile“ og „loadfile“ (FS aðgangur).
  • Að útvega verkfæri fyrir kyrrstöðugreiningu, greina villur (linter) og athuga rétta notkun tegunda.
  • Eigið afkastamikinn þáttara, bætikóða túlk og þýðanda. Luau styður ekki enn JIT samantekt, en því er haldið fram að Luau túlkurinn sé nokkuð sambærilegur í frammistöðu og LuaJIT í sumum aðstæðum.

Heimild: opennet.ru

Bæta við athugasemd