Lua 5.5 släppt med inkrementell skräpsamling och kompakta arrayer
Programmeringsspråket Lua 5.5 introducerar uttryckliga globala variabeldeklarationer tillsammans med stora förbättringar av minneshantering och skräpsamling.
Lua, ett lättviktigt, hög-nivå skriptspråk designat för att integreras i andra applikationer, har precis lanserat version 5.5.
En av de viktigaste nyheterna är uttryckliga globala variabeldeklarationer, vilket gör det möjligt för utvecklare att definiera globala variabler tydligare och undvika vanliga fel som är förknippade med implicita globala variabler. Dessutom är variabler i for-loopar nu skrivskyddade, vilket minskar oavsiktliga bieffekter i loopkonstruktioner.
Minnesanvändningen för arrayer har optimerats avsevärt i Lua 5.5. Enligt utvecklarna minskar implementeringen av mer kompakta arrayer minnesavtrycket för stora tabeller med cirka 60 procent, vilket förbättrar prestandan för dataintensiva applikationer.
Skräpinsamlingen har också förbättrats. Introduktionen av ett nytt generationsbaserat skräpinsamlingsläge förbättrar prestandan genom att separera kortlivade och långlivade objekt. Dessutom utförs nu stora skräpinsamlingscykler inkrementellt, vilket minskar pausperioder och ökar responsiviteten i långvariga applikationer.
Dessutom skrivs flyttal nu ut med tillräckligt många decimaler för att de ska kunna läsas tillbaka korrekt. Utgåvan inkluderar även uppdateringar för hantering av strängar och UTF-8, såsom en utökad utf8.offset-funktion som returnerar den slutliga positionen av tecken, samt stöd för externa strängar som använder minne som inte hanteras av Lunas egen allokerare.
Flera nya hjälpfunktioner har lagts till, inklusive luaL_openselectedlibs och luaL_makeseed, som förbättrar gränssnitten för biblioteksinläsning och slumpgenerering. Dessutom laddar Lua-tolken (lua.c) nu dynamiskt readline-stöd när det finns tillgängligt, vilket utökar den interaktiva användningen.
Statisk binärer ser förbättringar också; när binära block laddas i minnet kan Lua återanvända originalminnet i specifika interna strukturer. Dump- och undump-operationer återanvänder nu alla strängar, och den hjälpbufferten återanvänder sitt minne när den konstruerar slutgiltiga strängar, vilket minskar allokeringarna.
För mer information om alla förändringar i Lua 5.5, följ den här länken.
