Open source per Luau, una variante di cuntrollu di tipu di a lingua Lua

Annunziata a fonte aperta è a publicazione di a prima liberazione standalone di a lingua di prugrammazione Luau, cuntinuendu u sviluppu di a lingua Lua è cumpatibile cù u Lua 5.1. A lingua Luau hè principalmente destinata à incrustà i motori di scripting in l'applicazioni è hà u scopu di ottene prestazioni elevate è cunsumu di risorse bassu. U codice di u prugettu hè scrittu in C++ è hè apertu sottu a licenza MIT.

Luau estende Lua cù capacità di cuntrollu di tipu è alcune novi custruzzioni sintattiche cum'è i letterali di stringa. A lingua hè retrocompatibile cù Lua 5.1 è in parte cù e versioni più recenti. L'API Lua Runtime hè supportata, chì vi permette di utilizà Luau cù u codice esistenti è i vincoli. U runtime di a lingua hè basatu annantu à un codice Lua runtime 5.1 assai riformulatu, ma l'interprete hè completamente riscritto. Duranti u sviluppu, qualchi novi tecnichi ottimisazione sò stati usati per ottene un rendimentu più altu paragunatu à Lua.

U prugettu hè statu sviluppatu da Roblox è hè utilizatu in u codice di a piattaforma di ghjocu, i ghjoculi è l'applicazioni d'utilizatori di sta cumpagnia, cumpresu l'editore Roblox Studio. In principiu, Luau hè statu sviluppatu daretu à e porte chjuse, ma à a fine hè statu decisu di trasfiriri à a categuria di prughjetti aperti per u sviluppu cumuni cù a participazione di a cumunità.

Principi caratteristiche:

  • Digitazione graduale, occupendu una pusizioni intermedia trà a digitazione dinamica è statica. Luau vi permette di utilizà a tipografia statica cum'è necessariu specificendu l'infurmazioni di tipu per mezu di annotazioni speciali. I tipi integrati "qualsiasi", "nil", "boolean", "number", "string" è "thread" sò furniti. À u listessu tempu, a pussibilità di utilizà un typing dinamicu senza definisce esplicitamente u tipu di variàbili è funzioni hè cunservata. funzione foo(x: numeru, y: stringa): boolean local k: stringa = y: rep (x) return k == "a" end
  • Supportu per i letterali di stringa (cum'è in Lua 5.3) cum'è "\0x**" (numeru esadecimale), "\u{**}" (carattere Unicode) è "\z" (fine di linea), è ancu capacità di visualizà u furmatu di numeri (pudete scrive 1_000_000 invece di 1000000), letterali per numeri esadecimali (0x...) è numeri binari (0b......).
  • Supportu per l'espressione "cuntinuà", cumplementendu a chjave esistente "break", per saltà à una nova iterazione di ciclu.
  • Supportu per l'operatori di assignazione cumposti (+=, -=, *=, /=, %=, ^=, ..=).
  • Supportu per l'usu di i blocchi cundiziunali "se-then-else" in forma di espressioni chì tornanu u valore calculatu durante l'esekzione di u bloccu. Pudete specificà un numeru arbitrariu di espressioni elseif in un bloccu. local maxValue = if a > b then a else b sign local = if x < 0 then -1 elseif x > 0 then 1 else 0
  • A prisenza di un modu di isolamentu (sandbox), chì vi permette di eseguisce codice untrustworthy. Questa funzione pò esse aduprata per urganizà u lanciu à fiancu à u vostru propiu codice è u codice scrittu da un altru sviluppatore, per esempiu, biblioteche di terzu per a sicurità di quale ùn pò micca esse garantita.
  • Una limitazione di a biblioteca standard da quale e funzioni chì puderanu creà prublemi di sicurezza sò state eliminate. Per esempiu, e librerie "io" (accessu à i fugliali è prucessi di lanciamentu), "pacchettu" (accessu à i fugliali è moduli di carica), "os" (funzioni per accede à i fugliali è cambiante variabili di l'ambiente), "debug" (operazione micca sicura cù memoria) , "dofile" è "loadfile" (accessu FS).
  • Fornisce strumenti per l'analisi di codice staticu, rilevazione di errore (linter) è verificate l'usu currettu di i tipi.
  • Prupriu parser high-performance, interprete di bytecode è compilatore. Luau ùn supporta ancu a compilazione JIT, ma hè dichjaratu chì l'interprete Luau hè abbastanza paragunabile in prestazioni à LuaJIT in alcune situazioni.

Source: opennet.ru

Add a comment