Ohjelmointikielen Lua 5.4 julkaisu

Viiden vuoden kehitystyön jälkeen saatavilla vapauta Lua 5.4, nopea ja kompakti komentosarjaohjelmointikieli, jota käytetään laajalti upotettuna kielenä (esimerkiksi kokoonpanon määrittämiseen tai laajennusten kirjoittamiseen). Lua-tulkkikoodi on kirjoitettu kielellä C ja jakelija MIT-lisenssillä.

Lua yhdistää yksinkertaisen proseduurisyntaksin tehokkaisiin tiedonkuvausominaisuuksiin käyttämällä assosiatiivisia taulukoita ja kielen laajennettavaa semantiikkaa. Lua käyttää dynaamista kirjoittamista ja muuntaa kielirakenteet tavukoodiksi, joka toimii rekisteripohjaisen virtuaalikoneen päällä, jossa on automaattinen roskienkeruu. Itse tulkki on suunniteltu kirjastoksi, joka voidaan helposti integroida projekteihin C- ja C++-kielillä.

Pääasiallinen innovaatioita:

  • Jätteenkeräimen uusi toimintatapa on otettu käyttöön - “sukupolvien", joka täydensi aiemmin saatavilla olevaa porrastetusta jätteenkeräystilaa. Uusi tila sisältää lyhennetyn indeksoinnin suorittamisen useammin, ja se kattaa vain äskettäin luodut objektit. Kaikkien kohteiden täysi läpikulku suoritetaan vain, jos lyhyen läpikäynnin jälkeen ei ole mahdollista saavuttaa haluttua muistinkulutusta. Tämän lähestymistavan avulla voit saavuttaa korkeamman suorituskyvyn ja vähentää muistin kulutusta, kun tallennat suuren määrän kohteita, jotka elävät lyhyen aikaa.
  • Lisätty mahdollisuus määritellä vakiomuuttujia, jotka on määritelty "const"-attribuutilla. Tällaisia ​​muuttujia voidaan määrittää vain kerran, eikä niitä voi muuttaa, kun ne on alustettu.
  • Lisätty tuki muuttujille "suljettavaksi", jotka määritetään "close"-attribuutilla ja muistuttavat vakioita paikallismuuttujia (const-attribuutilla), jotka eroavat niistä siinä, että arvo on suljettu (kutsutaan "__close"-menetelmää) aina, kun se poistuu alueesta, esim. lohkon normaalin valmistumisen jälkeen siirtyminen käyttämällä break/goto/return tai exit, kun tapahtuu virhe.
  • Kirjoita "UserData", joka tarjoaa mahdollisuuden tallentaa mitä tahansa C-dataa Lua-muuttujiin (edustaa tietolohkoa muistissa tai sisältää C-osoittimen), voi nyt sisältää useita arvoja (sillä on useita metataulukoita).
  • Pseudosatunnaislukujen generointifunktion uusi toteutus on esitetty - math.random.
  • Lisätty varoitusjärjestelmä, joka määritetään lausekkeen avulla varoittaa eivätkä, toisin kuin virheet, vaikuta ohjelman suorittamiseen jatkossa.
  • Lisätty virheenkorjaustiedot funktion argumenteista ja palautusarvoista.
  • Kokonaislukujen laskemiseen silmukoissa on ehdotettu uutta semantiikkaa "varten". Iteraatioiden määrä lasketaan ennen silmukan alkamista, mikä välttää muuttuvan ylivuodon ja silmukan. Jos alkuarvo on suurempi kuin raja-arvo, näyttöön tulee virheilmoitus.
  • toiminnassa'string.gmatch' lisäsi uuden valinnaisen argumentin 'init', joka määrittää, mistä kohdasta haku aloitetaan (oletusarvoisesti 1 merkistä).
  • Uusia ominaisuuksia lisättylua_resetthread' (nollaa säikeen, tyhjentää koko puhelupinon ja sulkee kaikki suljettavat muuttujat) ja 'korutiini.sulje' (sulkee korutiinin ja kaikki siihen liittyvät suljettavat muuttujat).
  • Funktiot merkkijonojen muuntamiseksi numeroiksi on siirretty "merkkijono"-kirjastoon.
  • Muistinvaraustoiminnon kutsut voivat nyt epäonnistua, jos muistilohkon kokoa pienennetään.
  • toiminnassa'string.format' lisäsi tuen uudelle muotomääritteelle '%p' (lua_topointer palauttaa osoittimen).
  • Utf8-kirjasto tarjoaa tukea merkkikoodit numeroilla 2^31 asti.

Lähde: opennet.ru

Lisää kommentti