Lua 5.4

Després de dos anys de desenvolupament, el 29 de juny, es va llançar de manera silenciosa i imperceptible una nova versió del llenguatge de programació Lua, la 5.4.

Lua és un llenguatge de programació senzill i interpretat que es pot incrustar fàcilment a les aplicacions. A causa d'aquestes qualitats, Lua s'utilitza àmpliament com a llenguatge per ampliar o descriure la configuració de programes (en particular, jocs d'ordinador). Lua es distribuirà sota la llicència MIT.

La versió anterior (5.3.5) es va publicar el 10 de juliol de 2018.

Principals canvis en la nova versió

  • nou recol·lector d'escombraries basat en generacions (generacional). A la funció collectgarbage, els paràmetres setpause i setstepmul han quedat obsolets i es recomana el paràmetre incremental;

  • una nova funció per emetre avisos d'avís amb la possibilitat de desactivar la seva visualització;

  • la nova implementació de math.random utilitza l'algorisme xoshiro256** en comptes del proporcionat per libc i inicialitza el generador amb un nombre aleatori;

  • variables constants;

  • Les variables "per tancar" són constants locals per a les quals s'executa el mètode __close quan es surt de l'àmbit;

  • nova funció lua_resetthread - esborra la pila i tanca totes les variables "tancades";

  • nova funció coroutine.close - tanca la corutine especificada i totes les seves variables "tancables";

  • Les dades d'usuari (userdata) poden contenir un conjunt de valors als quals s'accedeix per índex. S'han introduït noves funcions per treballar-hi: lua_newuserdatauv, lua_setiuservalue i lua_getiuservalue;

  • La informació de depuració sobre els paràmetres i els valors de retorn de les funcions està disponible;

  • si s'utilitza un índex sencer al bucle for i es produeix un desbordament, el bucle s'acaba;

  • va afegir un argument opcional a la funció string.gmatch que especifica el desplaçament des del principi de la cadena per buscar coincidències;

  • les funcions de conversió implícita de cadenes a números s'han mogut a la biblioteca de cadenes, el seu comportament ha canviat. Per exemple, el resultat de l'operació "1" + "2" ara és un nombre enter, no un nombre de coma flotant;

  • a la funció d'assignació de memòria, es pot produir un error quan es redueix un bloc de memòria;

  • nou caràcter de format a la funció string.format - %p (per a punters);

  • la biblioteca utf8 accepta codis de caràcters de fins a 2³¹ (quan s'especifica una marca especial, sense ella només es permeten codis de fins a 0x10FFFF i no es permeten els substituts);

  • Les constants senceres que es troben fora de l'interval de valors es converteixen en nombres flotants (anteriorment es va produir un retall de bits);

  • el metamètode __lt ja no s'utilitza per emular el metamètode __le, si cal, el metamètode __le s'ha d'establir explícitament;

  • no es pot crear una etiqueta per a una instrucció goto si ja existeix una etiqueta amb el mateix nom a l'àmbit actual (encara que s'hagi definit a l'àmbit extern);

  • el metamètode __gc pot ser més que una funció. Si l'intent de trucar al mètode falla, es mostrarà un avís;

  • la funció d'impressió no crida a tostring per a cada argument, sinó que utilitza les seves pròpies transformacions internes;

  • la funció io.lines retorna un conjunt de quatre valors en lloc d'un, per emular el comportament antic, tanqueu la crida entre parèntesis si la substituïu com a paràmetre quan crideu una altra funció.

Font: linux.org.ru

Afegeix comentari