A Lua 5.4 programozási nyelv kiadása

Öt év fejlesztés után elérhető kiadás Lua 5.4, egy gyors és kompakt szkript programozási nyelv, amelyet széles körben használnak beágyazott nyelvként (például konfiguráció meghatározásához vagy bővítmények írásához). A Lua értelmező kód C és nyelven van írva forgalmazza az MIT engedélye alapján.

A Lua az egyszerű procedurális szintaxist hatékony adatleíró képességekkel egyesíti az asszociatív tömbök és a nyelv bővíthető szemantikája révén. A Lua dinamikus gépelést használ, a nyelvi konstrukciókat bájtkódokká alakítva, amelyek egy regiszteralapú virtuális gép tetején futnak automatikus szemétgyűjtéssel. Maga az interpreter olyan könyvtárnak készült, amely könnyen integrálható C és C++ nyelvű projektekbe.

A főbb innovációk:

  • Megvalósult a szemétgyűjtő új üzemmódja - "nemzedéki“, amely kiegészítette a korábban elérhető növekményes szemétszállítási módot. Az új módban gyakrabban fut egy rövidített feltérképezés, amely csak a nemrégiben létrehozott objektumokat fedi le. Az összes objektum teljes bejárása csak akkor történik meg, ha rövid bejárás után nem sikerült elérni a kívánt memóriafelhasználást. Ezzel a megközelítéssel nagyobb teljesítményt érhet el és csökkentheti a memóriafelhasználást, ha nagyszámú, rövid ideig élő objektumot tárol.
  • Hozzáadtuk a „const” attribútummal definiált állandó változók meghatározásának képességét. Az ilyen változók csak egyszer rendelhetők hozzá, és az inicializálás után nem módosíthatók.
  • Hozzáadott változók támogatása "bezárandó", amelyek a "close" attribútummal vannak hozzárendelve, és állandó helyi változókra hasonlítanak (a const attribútummal), és abban különböznek tőlük, hogy az érték zárva van (a "__close" metódust hívják), amikor elhagyja a hatókört, például, a blokk normál befejezése után hiba esetén áttérés a break/goto/return használatával vagy kilépés.
  • Típus "felhasználói adat", amely lehetővé teszi, hogy bármilyen C-adatot Lua-változókban tároljon (adatblokkot jelent a memóriában vagy C-mutatót tartalmaz), mostantól több értéket is tartalmazhat (több metatáblázattal rendelkezik).
  • Bemutatjuk az álvéletlen számok generálására szolgáló függvény új megvalósítását - math.random.
  • Figyelmeztetések rendszere hozzáadva, amelyek a kifejezés használatával határozhatók meg figyelmeztet és a hibáktól eltérően nem befolyásolják a program további végrehajtását.
  • Hibakeresési információk hozzáadva a függvényargumentumokhoz és a visszatérési értékekhez.
  • Új szemantikát javasoltak az egész számok ciklusokban történő felsorolására "mert". Az iterációk számát a ciklus megkezdése előtt számítják ki, ami elkerüli a változó túlcsordulást és a hurkot. Ha a kezdeti érték nagyobb, mint a határérték, hibaüzenet jelenik meg.
  • funkcióbanstring.gmatch' hozzáadott egy új opcionális 'init' argumentumot, amely meghatározza, hogy melyik pozícióban induljon a keresés (alapértelmezés szerint 1 karaktertől).
  • Új funkciók hozzáadvalua_resetthread' (visszaállítja a szálat, törli a teljes hívási veremet és bezárja az összes "bezárandó" változót) és 'korutin.bezár' (bezárja a korutint és az összes kapcsolódó "bezárandó" változót).
  • A karakterláncok számokká alakítására szolgáló függvények átkerültek a "karakterlánc" könyvtárba.
  • A memóriafoglalási funkció hívása most sikertelen lehet, ha a memóriablokk mérete csökken.
  • funkcióbanstring.formátum' hozzáadta az új „%p” formátum-specifikáció támogatását (a lua_topointer által visszaadott mutató).
  • Az utf8 könyvtár támogatást nyújt karakterkódok 2^31-ig terjedő számokkal.

Forrás: opennet.ru

Hozzászólás