PÀrast viieaastast arendust on vÀlja lastud Lua 5.5, kiire ja kompaktne skriptimiskeel, mis on laialdaselt levinud sisseehitatud keelena konfiguratsioonide mÀÀratlemiseks ja laienduste kirjutamiseks. Lua tÔlgendi kood on kirjutatud C keeles ja jagatakse MIT litsentsi alusel.
Lua ĂŒhendab lihtsa protseduurilise sĂŒntaksi andmete kirjeldamisvĂ”imetega, kasutades assotsiatiivseid massiive ja keele laienevat semantikat. Luas kasutatakse dĂŒnaamilist tĂŒĂŒpimist ning keele konstruktsioonid muudetakse byte-koodiks, mis töötab registri virtuaalmasina peal automaatse mĂ€lu koristusega. TĂ”lgendi kujundatakse teegina, mis on integreeritav C ja C++ projektidesse.
Peamised uuendused:
- Enamik jÀÀtme koristamise toimingutest jÀÀb inkrementeerimise reĆŸiimi, kus jÀÀtme koristamise tsĂŒkkel jagatakse eraldi etappideks, mis vahelduvad programmi tĂ€itmisega, vĂ”imaldades vĂ€ltida pikki rakenduste peatamisi, kui mĂ€lus on palju objekte.
- Pakutakse vĂ€lja kompaktne massiivide teostus, mis vajab ĂŒht tĂŒĂŒpi andmete massiivide jaoks 60% vĂ€hem mĂ€lu (sÀÀstu saavutatakse tĂ€nu sellele, et tĂŒĂŒbi andmed salvestatakse mitte iga elemendi, vaid rĂŒhma elementide jaoks).
- Lisatud on vĂ”imalus globaalsete muutujaid selgelt kuulutada mis tahes koodiblokkides, kasutades vĂ”tmesĂ”na "global". Kui koodiblokis on vĂ€ljendeid vĂ”tmesĂ”naga "global", peavad kĂ”ik muutujad olema selgelt kuulutatud. Kui "global" deklaratsiooni ei ole, siis kehtib vaikimisi vĂ€ljend "global *", kus vanad kĂ€itumised sĂ€ilivad ja kĂ”ik muutujad tĂ”lgendatakse globaalsetena. Samuti on lisatud vĂ€ljend "global<const> *", kus kĂ”ik mitte selgelt mÀÀratletud globaalmuutujad muutuvad lugemisreĆŸiimis kergesti kĂ€ttesaadavaks. X = 1 â Ok, X â globaalne muutuja, vana kĂ€itumine vaikimisi. do global Y â Y muutuja kuulutamine globaalne, kĂ”ik muud muutujad blokis peavad olema selgelt kuulutatud Y = 1 â Ok, Y muutuja on varem mÀÀratletud X = 1 â Viga, X muutuja ei ole mÀÀratletud end X = 2 â Ok, vĂ€ljaspool global blokki kehtib vana kĂ€itumine
- TsĂŒklite "for" juhtivmuutujad on nĂŒĂŒd saadaval ainult lugemiseks ja neid ei saa tsĂŒkli kehas muuta. NĂ€iteks ei saa tsĂŒklis "for i = 1, 5 do" deklareeritud muutujat i tsĂŒkli kehas muuta.
- Ujukomade Print funktsiooni kaudu vĂ€ljastamisel kuvatakse nĂŒĂŒd piisavalt numbreid, et tagada Ă”ige ĂŒmberkorraldamine stringist tagasi algsesse vormingusse.
- Lubatud sisemise taseme arvu konsoolide tabelis on suurendatud.
- Lisatud funktsioon table.create(nseq, nrec) tĂŒhja tabeli loomiseks ja mÀÀratud arvu elementide jaoks mĂ€lu eelreserveerimiseks.
- Funktsioonis utf8.offset tagastatakse nĂŒĂŒd mitte ainult baitide asukoht sĂŒmboli alguses, vaid ka sĂŒmboli lĂ”pu asukoht.
- Lisatud tugi vĂ€liste stringide loomiseks, mis asuvad mĂ€lus, mida Lua prĂŒgikoguja ei halda.
- Lisatud funktsioon luaL_openselectedlibs valitud raamatukogu laadimiseks ja funktsioon luaL_makeseed, mis genereerib seemne eelnevalt funktsiooniks lua_newstate.
- Failis lua.c on tagatud, et raamatukogu 'readline' laaditakse dĂŒnaamiliselt, kui see on olemas (kui raamatukogu on sĂŒsteemis, laaditakse see ja stringi redigeerimise funktsioonid on saadaval).
- Optimeerimine on sisse lĂŒlitatud, et sÀÀsta mĂ€lu eelnevalt kompileeritud baitkoodi laadimisel â Lua vĂ”ib nĂŒĂŒd mĂ”nes sisemises struktuuris mĂ€lu uuesti kasutada, ilma et tekkiks dublette laadimisel dubleeritud baitkoodi.
- Tagatud on kÔikide stringide uuesti kasutamine operatsioonides "dump" ja "undump".
- Abibufferites tagatakse buffrite uuesti kasutamine (ilma uude bufferisse kopeerimiseta) lÔpliku stringi loomisel.
Allikas: opennet.ru
