Koden til Luau er blevet åbnet, en variant af Lua-sprog med typekontrol.

Der er offentliggjort kildetekster og udgivet det første separate nummer af programmeringssproget Luau, som fortsætter udviklingen af Lua og er bagudkompatibelt med Lua 5.1. Luau er hovedsageligt designet til indlejring af scriptbehandlere i applikationer og sigter mod at opnå høj ydeevne og lav ressourceforbrug. Projektkoden er skrevet i C++ og er åbent under MIT-licensen.

Luau udvider Lua med muligheden for typekontrol og nogle nye syntaktiske konstruktioner, såsom strengliteral. Sproget er bagudkompatibelt med Lua 5.1 og delvist med nyere versioner. Lua Runtime API understøttes, hvilket gør det muligt at bruge Luau med eksisterende kode og bindinger. Sprogets runtime er baseret på en kraftigt omarbejdet kode fra Lua runtime 5.1, men interpretereren er helt omskrevet. Under udviklingen er der anvendt nogle nye optimeringsteknikker, som har resulteret i en højere ydeevne sammenlignet med Lua.

Projektet er udviklet af Roblox og anvendes i koden til selskabets spilplatform, spil og brugerdefinerede applikationer, herunder Roblox Studio-editoren. Luau blev oprindeligt udviklet bag lukkede døre, men det blev besluttet at gøre det til et åbent projekt for yderligere fælles udvikling med deltagelse fra fællesskabet.

Hovedfunktioner:

  • En gradvis typesystem (Gradual typing), der befinder sig mellem dynamisk og statisk typificering. Luau gør det muligt at anvende statisk typificering efter behov ved at angive typeinformation gennem specielle annotationer. Indbyggede typer som 'any', 'nil', 'boolean', 'number', 'string' og 'thread' tilbydes. Derudover forbliver muligheden for at bruge dynamisk typificering uden eksplicit at definere typerne af variabler og funktioner. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • Støtte til strengliteral (som i Lua 5.3), såsom '\0x**' (hexadecimalt tal), '\u{**}' (Unicode-tegn) og '\z' (slut på linje), samt muligheden for visuel formatering af tal (man kan skrive 1_000_000 i stedet for 1000000), litteraler til hexadecimale (0x…) og binære tal (0b…….).
  • Støtte til udtrykket 'continue', som supplerer det eksisterende nøgleord 'break', for at springe til en ny iteration af løkken.
  • Understøttelse af sammensatte tildelingsoperatorer (+=, -=, *=, /=, %=, ^=, ..=).
  • Understøttelse af brugen af betingede blokke »if-then-else« i form af udtryk, der returnerer en værdi beregnet under udførelsen af blokken. Det er muligt at angive et vilkårligt antal udtryk elseif i blokken. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Tilstedeværelsen af en isoleringstilstand (sandbox), der muliggør kørsel af usikre koder. Denne mulighed kan bruges til at organisere kørsel side om side af egen kode og kode skrevet af andre udviklere, for eksempel tredjepartsbiblioteker, hvis sikkerhed ikke kan garanteres.
  • Begrænsning af standardbiblioteket, hvor funktioner, der potentielt kan skabe sikkerhedsproblemer, er fjernet. For eksempel er bibliotekerne »io« (filadgang og processtart), »package« (filadgang og modulindlæsning), »os« (funktioner til filadgang og ændring af miljøvariabler er fjernet), »debug« (usikker håndtering af hukommelse), »dofile« og »loadfile« (adgang til FS) udelukket fra det standard sæt.
  • Tilvejebringelse af værktøjer til statisk kodeanalyse, fejlfinding (linter) og kontrol af korrekte typebrug.
  • Egne højtydende parser, bytecode-interpretator og compiler. Luau understøtter endnu ikke JIT-kompilering, men hævdes at kunne sammenlignes med LuaJIT i nogle situationer med hensyn til ydeevne.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster