Pas pesë vjetësh zhvillimi, është në dispozicion lëshimi i Lua 5.5, një gjuhë programimi e shpejtë dhe e komakte, e cila ka fituar popullaritet si një gjuhë e integruar për përcaktimin e konfigurations dhe për shkruarjen e zgjerimeve. Kodi i interpreterit Lua është shkruar në gjuhën C dhe shpërndahet nën licencën MIT.
Lua kombinon një sintaksë të thjeshtë proceduriale me mundësi për të përshkruar të dhëna përmes përdorimit të aksioneve asociative dhe semantikës së zgjerueshme të gjuhës. Në Lua përdoret tipizimi dinamik, dhe strukturat e gjuhës shndërrohen në kod bajtësh që ekzekutohet mbi një makinë virtuale me regjistra me mbledhës automatik të mbeturinave. Interpreteri është i projektuar si një bibliotekë që mund të integrohet në projekte të gjuhëve C dhe C++.
TĂ« rejat 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ë kujtesë.
- Ofrohet një implementim kompakt i Arrays, që kërkon 60% më pak hapësirë për Arrays me të dhëna homogjene (kjo kursim arrihet duke ruajtur informacionin mbi llojin jo për çdo element, por për një grup elementesh).
- Shtuar mundĂ«sia pĂ«r shpalljen e qartĂ« tĂ« variablave globalĂ« nĂ« çdo bllok kodi duke pĂ«rdorur fjalĂ«n kyçe "global". Kur specifikoni nĂ« bllokun e kodit shprehje me fjalĂ«n kyçe "global", tĂ« gjitha variablat duhet tĂ« shpallen qartĂ«. NĂ«se deklarata "global" mungon, shprehja "global *" do tĂ« caktohet automatikisht, duke ruajtur sjelljen e vjetĂ«r ku tĂ« gjitha variablat interpretohen si globale. Po ashtu, Ă«shtĂ« shtuar shprehja "global<const> *" pĂ«r tĂ« cilĂ«n tĂ« gjitha variablat globale tĂ« pĂ«rcaktuara implicit bĂ«hen tĂ« disponueshme vetĂ«m pĂ«r lexim. X = 1 â Ok, X â variabel global, sjellja e vjetĂ«r si parazgjedhje. do 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. end. X = 2 â Ok, jashtĂ« bllokut global, sjellja e vjetĂ«r vazhdon tĂ« jetĂ« nĂ« fuqi.
- Variablat e menaxhueshme të treguara në ciklet «for» tani janë 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 presje lëshimi përmes funksionit print, tani shfaqen mjaft shifra për një kthim të saktë nga stringu në përfaqësimin origjinal.
- Numri maksimal i niveleve të thellësisë për ndërtuesit e tabelave është rritur.
- Funksioni table.create(nseq, nrec) është shtuar për të krijuar një tabelë të zbrazët dhe për të rezervuar paraprakisht memorie për një numër të caktuar elementesh.
- Në funksionin utf8.offset tani kthehet jo vetëm offsets në byte deri në fillimin e karakterit, por edhe pozita e fundit të karakterit.
- Shtuar mbështetjen për krijimin e vargjeve të jashtme, që ruhen në memori që nuk menaxhohet nga mbledhësi i plehrave të Lua.
- Funksioni luaL_openselectedlibs është shtuar për të ngarkuar bibliotekën e zgjedhur, si dhe funksioni luaL_makeseed, i cili krijon një farë mëngjesi për funksionin lua_newstate.
- NĂ« lua.c Ă«shtĂ« siguruar ngarkimi dinamik i bibliotekĂ«s 'readline' nĂ«se kjo Ă«shtĂ« nĂ« dispozicion (nĂ«se biblioteka Ă«shtĂ« e pranishme nĂ« sistem â ajo ngarkohet dhe funksionet pĂ«r redaktimin e rreshtave bĂ«hen tĂ« disponueshme).
- ĂshtĂ« pĂ«rfshirĂ« optimizimi pĂ«r kursimin e memories gjatĂ« ngarkimit tĂ« kodit tĂ« parapĂ«rgatitur â Lua tani mund tĂ« ribartĂ«jĂ« memorien nĂ« disa struktura tĂ« brendshme pa krijuar kopje tĂ« çdo ngarkimi tĂ« kodit tĂ« dyfishtĂ«.
- ĂshtĂ« siguruar ribarimi i tĂ« gjitha rreshtave nĂ« operacionet 'dump' dhe 'undump'.
- Në buferat ndihmës është siguruar ribarimi i buferave (pa kopjim në një bufer të ri) gjatë krijimit të rreshtit përfundimtar.
Burimi: opennet.ru
