Despois de dous anos de desenvolvemento, o 29 de xuño, lanzouse de forma silenciosa e silenciosa unha nova versión da linguaxe de programación Lua, a 5.4.
Lua é unha linguaxe de programación sinxela e interpretada que se pode integrar facilmente en aplicacións. Debido a estas calidades, Lua úsase amplamente como linguaxe para estender ou describir a configuración de programas (en particular, xogos de ordenador). Lua distribúese baixo a licenza MIT.
A versión anterior (5.3.5) publicouse o 10 de xullo de 2018.
Principais cambios na nova versión
-
lixo nova xeración. Na función collectgarbage, os parámetros setpause e setstepmul quedaron obsoletos e recoméndase no seu lugar o parámetro incremental;
-
unha nova función para emitir avisos de aviso coa posibilidade de desactivar a súa visualización;
-
a nova implementación de math.random usa o algoritmo xoshiro256** en lugar da libc proporcionada e inicializa o xerador cun número aleatorio;
-
variables constantes;
-
As variables "por pechar" son constantes locais para as que se executa o método __close ao saír do ámbito;
-
nova función lua_resetthread - borra a pila e pecha todas as variables "pechadas";
-
nova función coroutine.close - pecha a coroutine especificada e todas as súas variables "pechadas";
-
Os datos do usuario poden conter un conxunto de valores aos que se accede por índice. Introducíronse novas funcións para traballar con elas: lua_newuserdatauv, lua_setiuservalue e lua_getiuservalue;
-
A información de depuración sobre parámetros e valores de retorno das funcións está dispoñible;
-
se se usa un índice enteiro nun bucle for e se produce un desbordamento, o bucle remata;
-
engadiuse un argumento opcional á función string.gmatch, especificando o desfase desde o inicio da cadea para buscar coincidencias;
-
movéronse as funcións para converter implícitamente cadeas en números á biblioteca de cadeas e cambiou o seu comportamento. Por exemplo, o resultado da operación "1" + "2" agora é un número enteiro e non un número de coma flotante;
-
na función de asignación de memoria, pode ocorrer un erro ao reducir un bloque de memoria;
-
novo carácter de formato na función string.format - %p (para punteiros);
-
a biblioteca utf8 acepta códigos de caracteres de ata 2³¹ (se se especifica unha marca especial, sen ela só se permiten códigos de ata 0x10FFFF e non se permiten substitutos);
-
As constantes enteiras fóra do intervalo de valores convértense en números flotantes (anteriormente produciuse un recorte de bits);
-
o metamétodo __lt xa non se usa para emular o metamétodo __le; se é necesario, o metamétodo __le debe especificarse explícitamente;
-
non se pode crear unha etiqueta para unha instrución goto se xa existe unha etiqueta co mesmo nome no ámbito actual (aínda que se definise no ámbito externo);
-
O metamétodo __gc pode ser máis que unha función. Se falla un intento de chamar a un método, imprimirase un aviso;
-
a función de impresión non chama a tostring para cada argumento, senón que usa as súas propias conversións internas;
-
a función io.lines devolve un conxunto de catro valores en lugar de un; para emular o comportamento antigo, pon a chamada entre parénteses se a estás pasando como parámetro a outra chamada de función.
Fonte: linux.org.ru