Izdanje Lua 5.4 programskog jezika

Nakon pet godina razvoja na raspolaganju pustiti Lua 5.4, brz i kompaktan programski jezik za skriptiranje koji se široko koristi kao ugrađeni jezik (na primjer, za definiranje konfiguracije ili pisanje ekstenzija). Kod tumača Lua je napisan u C i distribuira pod MIT licencom.

Lua kombinuje jednostavnu proceduralnu sintaksu sa moćnim mogućnostima opisa podataka kroz upotrebu asocijativnih nizova i proširivu semantiku jezika. Lua koristi dinamičko kucanje, pretvarajući jezičke konstrukcije u bajtkod koji radi na virtuelnoj mašini zasnovanoj na registru sa automatskim prikupljanjem smeća. Sam tumač je dizajniran kao biblioteka koja se lako može integrirati u projekte na C i C++ jezicima.

Glavni inovacije:

  • Uveden je novi način rada sakupljača smeća - “generacijski“, koji je nadopunio prethodno dostupan način inkrementalnog sakupljanja smeća. Novi način rada uključuje češće pokretanje skraćenog pretraživanja, pokrivajući samo nedavno kreirane objekte. Potpuni obilazak svih objekata izvodi se samo ako nakon kratkog obilaska nije bilo moguće postići željenu potrošnju memorije. Ovaj pristup vam omogućava da postignete veće performanse i smanjite potrošnju memorije pri skladištenju velikog broja objekata koji žive kratko vrijeme.
  • Dodata je mogućnost definiranja konstantnih varijabli definiranih atributom “const”. Takve varijable se mogu dodijeliti samo jednom i nakon inicijalizacije ne mogu se mijenjati.
  • Dodata podrška za varijable "biti zatvoren", koji su dodijeljeni pomoću atributa "close" i liče na konstantne lokalne varijable (sa atributom const), a razlikuju se od njih po tome što je vrijednost zatvorena (poziva se metoda "__close") kad god napusti opseg, na primjer, nakon normalnog završetka bloka, prijelaz koristeći break/goto/return ili izlaz kada dođe do greške.
  • upišite "korisničkih podataka“, koji pruža mogućnost pohranjivanja bilo kojeg C podataka u Lua varijablama (predstavlja blok podataka u memoriji ili sadrži C pokazivač), sada može sadržavati nekoliko vrijednosti (imati nekoliko metatablica).
  • Predstavljena je nova implementacija funkcije za generisanje pseudoslučajnih brojeva - math.random.
  • Dodan sistem upozorenja koja se određuju pomoću izraza upozoriti i, za razliku od grešaka, ne utiču na dalje izvršavanje programa.
  • Dodane informacije za otklanjanje grešaka o argumentima funkcije i povratnim vrijednostima.
  • Predložena je nova semantika za nabrajanje cijelih brojeva u petljama "za". Broj iteracija se izračunava prije početka petlje, čime se izbjegava prelijevanje varijabli i petlja. Ako je početna vrijednost veća od granične vrijednosti, prikazuje se greška.
  • u funkciji 'string.gmatch' je dodao novi neobavezni argument 'init', koji određuje na kojoj poziciji treba započeti pretragu (podrazumevano, od 1 znaka).
  • Nove funkcije dodane 'lua_resetthread' (resetuje nit, briše ceo stek poziva i zatvara sve varijable koje treba da se zatvore) i 'coroutine.close' (zatvara korutinu i sve pridružene varijable koje se "zatvaraju").
  • Funkcije za pretvaranje nizova u brojeve premještene su u biblioteku "string".
  • Pozivi funkcije dodjele memorije sada mogu biti neuspješni ako se smanji veličina memorijskog bloka.
  • u funkciji 'string.format' dodana podrška za novi specificator formata '%p' (pokazivač vratio lua_topointer).
  • Utf8 biblioteka pruža podršku znakovni kodovi sa brojevima do 2^31.

izvor: opennet.ru

Dodajte komentar