K dispozici je programovací jazyk Lua 5.5

Po pěti letech vývoje je nyní k dispozici Lua 5.5. Lua je rychlý a kompaktní skriptovací jazyk široce používaný jako vestavěný jazyk pro vývoj konfigurace a rozšíření. Interpret Lua je napsán v jazyce C a licencován pod licencí MIT.

Lua kombinuje jednoduchou procedurální syntaxi s možnostmi popisu dat prostřednictvím asociativních polí a rozšiřitelné jazykové sémantiky. Lua používá dynamické typování a jazykové konstrukty jsou převedeny do bajtkódu, který běží na virtuálním počítači založeném na registrech s automatickým sběrem odpadků. Interpret je implementován jako knihovna, kterou lze integrovat do projektů v jazyce C a C++.

Hlavní inovace:

  • Většina operací sběru odpadu používá inkrementální režim, který rozděluje cyklus sběru odpadu na samostatné kroky proložené prováděním programu, čímž se eliminují dlouhé pauzy v provádění aplikací s velkým počtem objektů v paměti.
  • Je navržena kompaktní implementace polí, která vyžaduje o 60 % méně paměti pro pole se stejným typem dat (úspory jsou dosaženy díky tomu, že typová data nejsou ukládána pro každý prvek, ale pro skupinu prvků).
  • Byla přidána možnost explicitně deklarovat globální proměnné v libovolném bloku kódu pomocí klíčového slova „global“. Při zadávání výrazů s klíčovým slovem „global“ v bloku kódu musí být všechny proměnné explicitně deklarovány. Pokud deklarace „global“ chybí, implicitně se nastaví výraz „global *“, čímž se zachová staré chování a všechny proměnné se považují za globální. Byl také přidán výraz „global“. *", ve kterém se všechny implicitně definované globální proměnné stanou pouze pro čtení. X = 1 — Ok, X je globální proměnná, staré výchozí chování. do global Y — deklaruje proměnnou Y jako globální, všechny ostatní proměnné v bloku musí být deklarovány explicitně. Y = 1 — Ok, proměnná Y je dříve definována. X = 1 — Chyba, proměnná X není definována. end X = 2 — Ok, mimo globální blok se použije staré chování.
  • Řídicí proměnné zadané ve smyčkách „for“ jsou nyní pouze pro čtení a nelze je v těle smyčky upravovat. Například proměnnou i deklarovanou ve smyčce „for i = 1, 5 do“ nelze v těle smyčky upravovat.
  • Při tisku čísel s plovoucí desetinnou čárkou pomocí funkce print se nyní tiskne dostatečný počet číslic pro jejich správný převod zpět z řetězce do původní reprezentace.
  • Povolený počet úrovní vnoření pro konstruktory tabulek byl zvýšen.
  • Přidána funkce table.create(nseq, nrec) pro přidání prázdné tabulky a předběžnou alokaci paměti pro zadaný počet prvků.
  • Funkce utf8.offset vrací nejen bajtový offset od začátku znaku, ale také pozici konce znaku.
  • Přidána podpora pro vytváření externích řetězců, které se nacházejí v paměti, jež není spravována garbage collectorem Lua.
  • Přidána funkce luaL_openselectedlibs pro načtení vybrané knihovny a také 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 přítomna, načte se a zpřístupní se funkce pro úpravu řádků).
  • Povolena optimalizace pro úsporu paměti při načítání předkompilovaného bajtkódu - Lua nyní může znovu použít paměť v některých interních strukturách bez vytváření duplikátů při načítání duplicitního bajtkódu.
  • Zajištěno, že všechny řádky jsou znovu použity v operacích výpisu a odečtení.
  • V pomocných bufferech je zajištěno opětovné použití bufferu (bez kopírování do nového bufferu) při vytváření finálního řetězce.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster