recentemente è stato annunciato il rilascio della prima versione indipendente dal linguaggio di programmazione Luau, che continua con lo sviluppo di Lua ed è compatibile anche con le versioni precedenti di Lua 5.1.
La lingua Luau è progettato principalmente per incorporare motori di scripting nelle applicazioni e mira a ottenere prestazioni elevate e un basso consumo di risorse. Il codice del progetto è scritto in C++ ed è aperto con licenza MIT.
Luau espande Lua con funzionalità di controllo del tipo e alcune build nuove sintattiche come stringhe letterali. La lingua è compatibile con le versioni precedenti di Lua 5.1 e parzialmente con le versioni più recenti. L'API Lua Runtime è supportata, consentendo l'utilizzo di Luau con codici e collegamenti preesistenti.
Da oggi Luau non è più una parte inseparabile della piattaforma Roblox; è un linguaggio open source indipendente.
Il runtime del linguaggio è basato sul codice runtime Lua 5.1 pesantemente rivisto, ma l'interprete è stato completamente riscritto. Lo sviluppo ha riguardato alcune nuove tecniche di ottimizzazione che hanno permesso di ottenere prestazioni più elevate rispetto a Lua.
Quando Roblox è stato creato 15 anni fa, abbiamo scelto Lua come linguaggio di programmazione. Lua era piccolo, veloce, facile da integrare e imparare e ha aperto enormi possibilità ai nostri sviluppatori.
Gran parte di Roblox è stato costruito su Lua, incluse centinaia di migliaia di righe di codice sviluppato internamente che alimentano l'applicazione Roblox e Roblox Studio fino ad oggi, e i milioni di esperienze che gli sviluppatori hanno creato. Per molti di loro è stato il primo linguaggio di programmazione che hanno imparato.
Il progetto è stato sviluppato da Roblox ed è utilizzato nel codice della piattaforma di gioco e nelle applicazioni personalizzate da questa azienda, incluso l'editore di Roblox Studio. Inizialmente, Luau è stato sviluppato a porte chiuse, ma alla fine si è deciso di trasferirlo nella categoria dei progetti aperti per un ulteriore sviluppo congiunto con la partecipazione della comunità.
Caratteristiche:
- Un sistema di tipo sequenziale, che occupa una posizione intermedia tra scrittura dinamica e statica. Luau consente la scrittura statica secondo necessità specificando le informazioni sul tipo tramite annotazioni speciali.
- Il tipi incorporati "Any", "nil", "boolean", "number", "string" e "thread". Allo stesso tempo, viene preservata anche la possibilità di utilizzare la tipizzazione dinamica senza definire esplicitamente il tipo di variabili e funzioni.
- Supporto per stringhe letterali (come in Lua 5.3)
- Supporto per l'espressione "continua", oltre alla parola chiave esistente "break", per passare a una nuova iterazione del ciclo.
- Supporto per operatori di assegnazione composti
- Supporto per l'uso di blocchi condizionali "If-then-else" sotto forma di espressioni che restituiscono il valore calcolato durante l'esecuzione del blocco. È possibile specificare un numero arbitrario di istruzioni elseif in un blocco.
- La presenza di una modalità sandbox che consente di eseguire codice non attendibile. Questa funzione può essere utilizzata per organizzare il proprio codice e il codice scritto da un altro sviluppatore, ad esempio librerie di terze parti che non possono essere garantite, per l'esecuzione affiancata.
- Una limitazione della libreria standard da cui sono state rimosse le funzioni che potrebbero creare problemi di sicurezza. Ad esempio, le librerie "io" (accesso ai file e ai processi di avvio), "package" (accesso ai file e caricamento dei moduli), "os" (le funzioni per accedere ai file e modificare le variabili di ambiente sono state rimosse), "Debug" (non sicuro gestione della memoria), "dofile" e "loadfile" (accesso al file system).
- Fornire strumenti per l'analisi del codice statico, il rilevamento degli errori (Linter) e la convalida dell'uso dei tipi.
- Analizzatore, interprete di bytecode e compilatore proprietario ad alte prestazioni.
- Luau non supporta ancora la compilazione JIT, ma si sostiene che l'interprete Luau sia abbastanza paragonabile in termini di prestazioni a LuaJIT in alcune situazioni.
Infine se sei interessato a saperne di più, puoi controllare i dettagli nel seguente link