Lua 5.4

Dopo due anni di sviluppo, il 29 giugno è stata rilasciata silenziosamente una nuova versione del linguaggio di programmazione Lua — 5.4.

Lua è un linguaggio di programmazione semplice e interpretato, facilmente integrabile nelle applicazioni. Grazie a queste caratteristiche, Lua è ampiamente utilizzato come linguaggio di estensione o per la configurazione dei programmi (in particolare, dei videogiochi). Lua è distribuito con licenza MIT.

La versione precedente (5.3.5) è stata rilasciata il 10 luglio 2018.

Principali novità nella nuova versione

  • nuovo garbage collector basato su generazioni. Nella funzione collectgarbage i parametri setpause e setstepmul sono stati dichiarati obsoleti, si raccomanda di utilizzare il parametro incremental;

  • nuova funzione per generare avvisi warn con la possibilità di disabilitarne la visualizzazione;

  • nuova implementazione di math.random utilizza l'algoritmo xoshiro256** invece di quello fornito da libc e inizializza il generatore con un numero casuale;

  • costanti (variabili costanti);

  • variabili "da chiudere" (to-be-closed) — costanti locali per le quali viene eseguito il metodo __close all'uscita dall'ambito;

  • nuova funzione lua_resetthread — pulisce lo stack e chiude tutte le variabili "da chiudere";

  • nuova funzione coroutine.close — chiude la co-routine specificata e tutte le sue variabili "da chiudere";

  • i dati dell'utente (userdata) possono contenere un insieme di valori con accesso per indice. È stata introdotta una nuova funzione: lua_newuserdatauv, lua_setiuservalue e lua_getiuservalue;

  • disponibile informazione di debug sui parametri e sui valori restituiti dalle funzioni;

  • se nel ciclo for viene utilizzato un indice intero e si verifica un overflow — il ciclo termina;

  • nella funzione string.gmatch è stato aggiunto un argomento opzionale per specificare uno spostamento dall'inizio della stringa per cercare le corrispondenze;

  • le funzioni di conversione implicita delle stringhe in numeri sono state spostate nella libreria delle stringhe, il loro comportamento è stato modificato. Ad esempio, il risultato dell'operazione "1" + "2" è ora un intero, e non un numero a virgola mobile;

  • nella funzione di allocazione della memoria è consentito che si verifichi un errore durante la riduzione di un blocco di memoria;

  • nuovo simbolo di formattazione nella funzione string.format — %p (per puntatori);

  • la libreria utf8 accetta codici di caratteri fino a 2³¹ (specificando un flag speciale, altrimenti sono consentiti solo i codici fino a 0x10FFFF e non sono consentiti i surrogati);

  • le costanti intere che superano i limiti del range di valori vengono convertite in numeri in virgola mobile (in precedenza avveniva il troncamento dei bit);

  • il metametodo __lt non viene più utilizzato per emulare il metametodo __le; se necessario, il metametodo __le deve essere specificato esplicitamente;

  • non è possibile creare un'etichetta per l'operatore goto se nell'area di visibilità corrente esiste già un'etichetta con lo stesso nome (anche se è stata definita in un'area esterna);

  • il metametodo __gc può non essere solo una funzione. Se il tentativo di chiamare un metodo non riesce, viene visualizzato un avviso;

  • la funzione print non chiama tostring per ogni argomento, ma usa le proprie conversioni interne;

  • la funzione io.lines restituisce un insieme di quattro valori invece di uno; per emulare il comportamento precedente, circonda la chiamata tra parentesi se la inserisci come parametro nella chiamata a un'altra funzione.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster