K dispozici je programovací jazyk Lua 5.5

Po pěti letech vývoje je k dispozici vydání Lua 5.5, rychlého a kompaktního skriptovacího programovacího jazyka, který se široce využívá jako vestavěný jazyk pro definici konfigurace a psaní rozšíření. Kód interpreta Lua je napsán v jazyce C a šíří se pod licencí MIT.

Lua kombinuje jednoduchou procedurální syntaxi s možnostmi popisu dat pomocí asociativních polí a rozšiřitelné sémantiky jazyka. V Lua se používá dynamické typování a jazykové konstrukce se převádějí na bajtkód, který běží na registru virtuální stroje s automatickým sběrem odpadu. Interpreter je navržen jako knihovna, kterou lze integrovat do projektů v jazycích C a C++.

Hlavní novinky:

  • Pro většinu operací sběru odpadu se používá inkrementální režim, kdy se cyklus sběru odpadu dělí na jednotlivé kroky, které se střídají s vykonáváním programu, což umožňuje vyhnout se dlouhým přerušením běhu aplikací s velkým počtem objektů v paměti.
  • Byla navržena kompaktní implementace polí, která vyžaduje o 60 % méně paměti pro pole s homogenními daty (úspora je dosažena tím, že informace o typu nejsou uchovávány pro každý prvek, ale pro skupinu prvků).
  • Byla přidána možnost explicitního deklarování globálních proměnných v jakýchkoli blocích kódu pomocí klíčového slova „global“. Pokud se v bloku kódu použijí výrazy s klíčovým slovem „global“, všechny proměnné musí být jednoznačně deklarovány. Pokud deklarace „global“ chybí, implicitně se používá výraz „global *“, při kterém se zachovává staré chování a všechny proměnné jsou chápány jako globální. Také byl přidán výraz „global<const> *“, při kterém se všechny implicitně definované globální proměnné stávají dostupnými v režimu pouze pro čtení. X = 1 — Ok, X — globální proměnná, staré chování podle výchozího nastavení. do global Y — deklarace proměnné Y jako globální, všechny ostatní proměnné v bloku musí být deklarovány jasně Y = 1 — Ok, proměnná Y byla předtím definována X = 1 — Chyba, proměnná X není definována end X = 2 — Ok, mimo bloku global platí staré chování
  • Ovládací proměnné uvedené v cyklech „for“ jsou nyní pouze pro čtení a nemohou být měněny uvnitř cyklu. Například proměnná i, deklarovaná v cyklu „for i = 1, 5 do“, nelze změnit v těle cyklu.
  • Při výpisu čísel s desetinnou čárkou pomocí funkce print se nyní zobrazuje dostatečný počet číslic pro správnou zpětnou konverzi ze stringu do původní podoby.
  • Byl zvýšen povolený počet úrovní vnoření konstruktorů tabulek.
  • Byla přidána funkce table.create(nseq, nrec) pro přidání prázdné tabulky a předběžné přidělení paměti pro zadaný počet prvků.
  • Ve funkci utf8.offset je zajištěn návrat nejen bajtového posunu k začátku znaku, ale také pozice konce znaku.
  • Byla přidána podpora pro vytváření externích řetězců umístěných v paměti, kterou spravuje garbage collector Lua.
  • Byla přidána funkce luaL_openselectedlibs pro načtení vybrané knihovny, stejně jako funkce luaL_makeseed, která generuje seed pro funkci lua_newstate.
  • V lua.c je zajištěno dynamické načítání knihovny 'readline', pokud je k dispozici (pokud je knihovna v systému, je načtena a funkce pro úpravy řetězců jsou k dispozici).
  • Byla zařazena optimalizace pro úsporu paměti při načítání předkompilovaného bajtkódu - Lua nyní může znovu používat paměť v některých interních strukturách bez vytváření duplikátů při načítání duplicitního bajtkódu.
  • Bylo zajištěno opětovné použití všech řetězců v operacích „dump“ a „undump“.
  • V pomocných bufferech je zajištěno opětovné použití bufferů (bez kopírování do nového bufferu) při vytváření finálního řetězce.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster