Rilascio del linguaggio di programmazione Lua 5.4

Dopo cinque anni di sviluppo è disponibile rilascio Lua 5.4, un linguaggio di programmazione rapido e compatto, che ha trovato ampia diffusione come linguaggio incorporato (ad esempio, per la definizione della configurazione o per la scrittura di estensioni). Il codice dell'interprete Lua è scritto in C e distribuito sotto licenza MIT.

Lua combina una sintassi procedurale semplice con potenti capacità di descrizione dei dati attraverso l'uso di array associativi e una semantica del linguaggio estensibile. Lua utilizza la tipizzazione dinamica, le strutture del linguaggio vengono convertite in bytecode che gira su una macchina virtuale a registri con garbage collector automatico. L'interprete stesso è realizzato come una libreria facilmente integrabile in progetti scritti in C e C++.

Principali novità:

  • È stata implementata una nuova modalità di funzionamento del raccoglitore di rifiuti — «generational«, che si aggiunge alla già disponibile modalità incrementale di raccolta dei rifiuti. La nuova modalità prevede un avvio più frequente di una scansione ridotta, che copre solo gli oggetti creati di recente. La scansione completa di tutti gli oggetti viene eseguita solo se, dopo la scansione ridotta, non si riescono a raggiungere i risultati desiderati di consumo della memoria. Questo approccio consente di ottenere migliori prestazioni e ridurre il consumo di memoria in presenza di un gran numero di oggetti con vita breve.
  • È stata aggiunta la possibilità di definire variabili permanenti, definite con l'attributo «const». Tali variabili possono essere assegnate solo una volta e, dopo l'inizializzazione, non possono più essere modificate.
  • È stato aggiunto il supporto per le variabili «da chiudere«, che vengono assegnate tramite l'attributo «close» e somigliano a variabili locali permanenti (con attributo const), differendo da esse nel fatto che il valore viene chiuso (il metodo «__close» viene chiamato) in qualsiasi uscita dal contesto, ad esempio, dopo la conclusione normale del blocco, il passaggio tramite break/goto/return o l'uscita in caso di errore.
  • Tipo «userdata«, che consente di memorizzare in variabili Lua qualsiasi dato C (rappresenta un blocco di dati in memoria o contiene un puntatore C), ora può contenere più valori (avere più metatabelle).
  • È stata presentata una nuova implementazione della funzione per generare numeri pseudocasuali — math.random.
  • È stato aggiunto un sistema di avvisi, che vengono definiti tramite l'espressione warn e, a differenza degli errori, non influenzano l'esecuzione successiva del programma.
  • È stata aggiunta informazione di debug sugli argomenti delle funzioni e sui valori restituiti dall'operatore «return».
  • È stata proposta una nuova semantica per l'iterazione di numeri interi nei cicli «per«. Il numero di iterazioni viene calcolato prima dell'inizio del ciclo, il che consente di evitare il sovraccarico della variabile e i loop infiniti. Se il valore iniziale supera il limite, viene visualizzato un errore.
  • Nella funzione ‘string.gmatchÈ stato aggiunto un nuovo argomento facoltativo 'init', che definisce da quale posizione iniziare la ricerca (di default da 1 carattere).
  • Sono state aggiunte nuove funzioni 'lua_resetthread' (resetta il flusso, pulisce tutto lo stack delle chiamate e chiude tutte le variabili «to-be-closed») e 'coroutine.close' (chiude la coroutine e tutte le variabili «to-be-closed» associate).
  • Le funzioni per convertire le stringhe in numeri sono state spostate nella libreria 'string'.
  • La chiamata alla funzione di allocazione della memoria può ora fallire in caso di riduzione delle dimensioni del blocco di memoria.
  • Nella funzione ‘string.formatÈ stata aggiunta la supporto per il nuovo specificatore di formato '%p' (puntatore restituito da lua_topointer).
  • Nella libreria utf8 è fornito supporto per codici di caratteri con numeri fino a 2^31.

Fonte: opennet.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