Avoin lähdekoodi Luaulle, Lua-kielen tyyppitarkistusversiolle

Ilmoitti avoimen lähdekoodin ja Luau-ohjelmointikielen ensimmäisen erillisen julkaisun julkaisemisesta, joka jatkaa Lua-kielen kehittämistä ja on taaksepäin yhteensopiva Lua 5.1:n kanssa. Luau on suunniteltu ensisijaisesti komentosarjamoottoreiden upottamiseen sovelluksiin, ja sen tavoitteena on saavuttaa korkea suorituskyky ja alhainen resurssien kulutus. Projektikoodi on kirjoitettu C++-kielellä ja se on avoinna MIT-lisenssillä.

Luau laajentaa Luaa tyypintarkistusominaisuuksilla ja joillakin uusilla syntaktisilla rakenteilla, kuten merkkijonoliteraaleilla. Kieli on taaksepäin yhteensopiva Lua 5.1:n ja osittain uudempien versioiden kanssa. Lua Runtime API on tuettu, joten voit käyttää Luauta olemassa olevan koodin ja sidosten kanssa. Kielen ajonaika perustuu voimakkaasti muokattuun Lua runtime 5.1 -koodiin, mutta tulkki on kirjoitettu kokonaan uudelleen. Kehityksen aikana käytettiin joitain uusia optimointitekniikoita paremman suorituskyvyn saavuttamiseksi Luaan verrattuna.

Roblox on kehittänyt projektin, ja sitä käytetään tämän yrityksen pelialustan, pelien ja käyttäjäsovellusten koodissa, mukaan lukien Roblox Studio -editori. Aluksi Luauta kehitettiin suljettujen ovien takana, mutta lopulta se päätettiin siirtää avoimien hankkeiden kategoriaan yhteistä jatkokehitystä varten yhteisön osallistuessa.

Tärkeimmät ominaisuudet:

  • Asteittainen kirjoitus, joka on dynaamisen ja staattisen kirjoittamisen välissä. Luau antaa sinun käyttää staattista kirjoittamista tarpeen mukaan määrittämällä tyyppitiedot erityisten huomautusten avulla. Sisäänrakennetut tyypit "any", "nil", "boolean", "number", "string" ja "thread" tarjotaan. Samalla säilyy mahdollisuus käyttää dynaamista kirjoittamista ilman, että muuttujien ja funktioiden tyyppiä nimenomaisesti määritellään. funktio foo(x: numero, y: merkkijono): boolen paikallinen k: merkkijono = y:rep(x) return k == "a" end
  • Tuki merkkijonoliteraaaleille (kuten Lua 5.3:ssa), kuten "\0x**" (heksadesimaaliluku), "\u{**}" (Unicode-merkki) ja "\z" (rivin loppu), sekä kyky visualisoida numeromuotoilu (voit kirjoittaa 1_000_000 1000000 sijasta), literaalit heksadesimaalilukuille (0x...) ja binääriluvuille (0b......).
  • Tuki "continue" -lausekkeelle, joka täydentää olemassa olevaa "break"-avainsanaa, jotta voit siirtyä uuteen silmukan iteraatioon.
  • Tuki yhdistetyille määritysoperaattoreille (+=, -=, *=, /=, %=, ^=, ..=).
  • Tuki ehdollisten "jos-niin-else" -lohkojen käytölle lausekkeiden muodossa, jotka palauttavat lohkon suorituksen aikana lasketun arvon. Voit määrittää lohkossa mielivaltaisen määrän elseif-lausekkeita. paikallinen maxArvo = jos a > b sitten a else b paikallinen merkki = jos x < 0 niin -1 elseif x > 0 sitten 1 else 0
  • Eristystilan (hiekkalaatikko) läsnäolo, jonka avulla voit suorittaa epäluotettavaa koodia. Tätä ominaisuutta voidaan käyttää järjestämään julkaisua oman ja toisen kehittäjän kirjoittaman koodin viereen, esimerkiksi kolmannen osapuolen kirjastot, joiden turvallisuutta ei voida taata.
  • Vakiokirjaston rajoitus, josta on poistettu toiminnot, jotka voivat aiheuttaa tietoturvaongelmia. Esimerkiksi kirjastot "io" (tiedostojen käyttö ja käynnistysprosessit), "package" (tiedostojen käyttö ja moduulien lataaminen), "os" (toiminnot tiedostojen käyttämiseen ja ympäristömuuttujien muuttamiseen), "debug" (vaarallinen käyttö muistin kanssa) , "dofile" ja "loadfile" (FS-käyttö).
  • Työkalujen tarjoaminen staattiseen koodin analysointiin, virheiden tunnistamiseen (linteri) ja tyyppien oikean käytön tarkistamiseen.
  • Oma korkean suorituskyvyn jäsentäjä, tavukoodin tulkki ja kääntäjä. Luau ei vielä tue JIT-kokoelmaa, mutta väitetään, että Luau-tulkki on suorituskyvyltään melko verrattavissa LuaJITiin joissakin tilanteissa.

Lähde: opennet.ru

Lisää kommentti