Pas pas pesë vitesh zhvillimi, është disponueshme lëshimi i Lua 5.5, një gjuhë skenari e shpejtë dhe kompakte, e cila ka marrë përhapje të madhe si gjuhë e integruar për përcaktimin e konfiguracioneve dhe për shkruarjen e zgjerimeve. Kodi i interpretuesit Lua është shkruar në gjuhën C dhe shpërndahet nën licencën MIT.
Lua kombinon një sintaksë të thjeshtë procedurale me mundësi për përshkrimin e të dhënave përmes përdorimit të arrave asociative dhe semantikës së zgjerueshme të gjuhës. Në Lua përdoret tipizimi dinamik, dhe strukturat gjuhësore konvertohen në kod bajtësor që ekzekutohet mbi një makinë virutale me regjistra, me një mbledhës automatik të mbeturinave. Interpretuesi është formuar si një bibliotekë, që mund të integrohet në projekte në gjuhët C dhe C++.
Novitetet kryesore:
- Për pjesën më të madhe të operacioneve të mbledhjes së mbeturinave, përdoret një mod i inkrementalizuar, ku cikli i mbledhjes së mbeturinave ndahet në hapa të veçantë, që ndërpriten me ekzekutimin e programit, duke lejuar eliminimin e ndalesave të gjata të ekzekutimit të aplikacioneve me një numër të madh objektesh në memorie.
- ĂshtĂ« propozuar njĂ« implementim kompakt i arrave qĂ« kĂ«rkon 60% mĂ« pak memorie pĂ«r arrat me tĂ« dhĂ«na njĂ«lloj (kursimi arrihet duke ruajtur tĂ« dhĂ«nat mbi tipin jo pĂ«r çdo element, por pĂ«r njĂ« grup elementesh).
- ĂshtĂ« shtuar mundĂ«sia e shpalljes sĂ« qartĂ« tĂ« variablave globalĂ« nĂ« çdo bllok kodi pĂ«rmes fjalĂ«s kyçe "global". Kur citohet nĂ« bllokun e kodit shprehjes me fjalĂ«n kyçe "global", tĂ« gjitha variablat duhet tĂ« shpallen patjetĂ«r qartĂ«. NĂ«se shpallja "global" mungon, atĂ«herĂ« implicit vendoset shprehja "global *" e cila ruan sjelljen e vjetĂ«r dhe tĂ« gjithĂ« variablat interpretohen si globalĂ«. Gjithashtu, Ă«shtĂ« shtuar shprehja "global *" e cila bĂ«n tĂ« mundur qĂ« tĂ« gjitha variablat globale tĂ« pandryshuara tĂ« jenĂ« tĂ« qasshme nĂ« modin vetĂ«m pĂ«r lexim. X = 1 â Ok, X Ă«shtĂ« variabĂ«l globale, sjellja e vjetĂ«r si standart. bĂ«j global Y â shpallja e variablit Y si global, tĂ« gjitha variablat e tjera nĂ« bllok duhet tĂ« shpallen qartĂ« Y = 1 â Ok, variabli Y Ă«shtĂ« pĂ«rcaktuar mĂ« parĂ« X = 1 â Gabim, variabli X nuk Ă«shtĂ« pĂ«rcaktuar fund X = 2 â Ok, jashtĂ« bllokut, sjellja e vjetĂ«r vazhdon
- Variablën e kontrollit të specifikuara në ciklet «for» tani janë të disponueshme vetëm për lexim dhe nuk mund të ndryshohen brenda trupit të ciklit. Për shembull, variabla i, e shpallur në ciklin «for i = 1, 5 do», nuk mund të ndryshohet brenda trupit të ciklit.
- Kur printohen numra me pikë float përmes funksionit print, tani jepen një numër i mjaftueshëm shifrash për një konvertim të saktë të kthimit nga string në përfaqësimin origjinal.
- Numri i lejuar i niveleve të nguljes së konstruktoreve të tabelës është rritur.
- Funksioni table.create(nseq, nrec) është shtuar për të krijuar një tabelë të zbrazët dhe për të alokuar paraprakisht hapësirë për numrin e caktuar të elementeve.
- Në funksionin utf8.offset, tani kthehet jo vetëm zhvendosja në byte deri në fillim të simbolit, por edhe pozita e fundiit të simbolit.
- Shtimi i mbështetjes për krijimin e stringjeve të jashtme që ruhen në memorie, e cila nuk menaxhohet nga mbledhësi i plehrave Lua.
- Funksioni luaL_openselectedlibs është shtuar për të ngarkuar bibliotekën e zbrazët, si dhe funksioni luaL_makeseed, që formon një farë për funksionin lua_newstate.
- NĂ« lua.c, Ă«shtĂ« siguruar ngarkimi dinamik i bibliotekĂ«s âreadlineâ kur Ă«shtĂ« e pranishme (nĂ«se biblioteka Ă«shtĂ« nĂ« sistem, ajo ngarkohet dhe funksionet pĂ«r redaktimin e stringjeve bĂ«hen tĂ« disponueshme).
- Janë përfshirë optimizime për kursimin e memories gjatë ngarkimit të kodit bajt të kompiliuar paraprakisht - Lua tani mund të rishpërndajë memorien në disa struktura të brendshme pa krijuar kopje gjatë ngarkimit të kodit bajt të përsëritur.
- RishpĂ«rndarja e tĂ« gjitha stringjeve Ă«shtĂ« siguruar gjatĂ« operacioneve âdumpâ dhe âundumpâ.
- Në bufet ndihmëse është siguruar rishpërndarja e bufereve (pa kopje në një buf të ri) gjatë krijimit të stringut përfundimtar.
Burimi: opennet.ru
