Open source til Luau, en typekontrolvariant af Lua-sproget

Annoncerede open source og offentliggørelse af den første selvstændige udgivelse af Luau-programmeringssproget, fortsætter udviklingen af ​​Lua-sproget og bagudkompatibel med Lua 5.1. Luau er primært designet til at indlejre script-motorer i applikationer og sigter mod at opnå høj ydeevne og lavt ressourceforbrug. Projektkoden er skrevet i C++ og er åben under MIT-licensen.

Luau udvider Lua med typekontrolfunktioner og nogle nye syntaktiske konstruktioner såsom strenge bogstaver. Sproget er bagudkompatibelt med Lua 5.1 og delvist med nyere versioner. Lua Runtime API er understøttet, så du kan bruge Luau med eksisterende kode og bindinger. Sprogets runtime er baseret på en stærkt omarbejdet Lua runtime 5.1-kode, men tolken er fuldstændig omskrevet. Under udviklingen blev nogle nye optimeringsteknikker brugt for at opnå højere ydeevne sammenlignet med Lua.

Projektet er udviklet af Roblox og bruges i koden til spilplatformen, spil og brugerapplikationer fra denne virksomhed, inklusive Roblox Studio-editoren. I første omgang blev Luau udviklet bag lukkede døre, men i sidste ende blev det besluttet at overføre det til kategorien åbne projekter for yderligere fælles udvikling med deltagelse af fællesskabet.

Hovedtræk:

  • Gradvis skrivning, der indtager en mellemposition mellem dynamisk og statisk skrivning. Luau giver dig mulighed for at bruge statisk skrivning efter behov ved at specificere typeoplysninger gennem specielle anmærkninger. De indbyggede typer "any", "nul", "boolean", "number", "string" og "thread" leveres. Samtidig bevares muligheden for at anvende dynamisk indtastning uden eksplicit at definere typen af ​​variabler og funktioner. funktion foo(x: tal, y: streng): boolesk lokal k: streng = y:rep(x) returner k == "a" ende
  • Understøttelse af strengliteraler (som i Lua 5.3) såsom "\0x**" (hexadecimalt tal), "\u{**}" (Unicode-tegn) og "\z" (slutningen af ​​linjen), samt evne til at visualisere talformatering (du kan skrive 1_000_000 i stedet for 1000000), bogstaver for hexadecimale (0x...) og binære tal (0b......).
  • Understøttelse af "fortsæt"-udtrykket, der supplerer det eksisterende "break"-nøgleord, for at springe til en ny loop-iteration.
  • Understøttelse af sammensatte tildelingsoperatorer (+=, -=, *=, /=, %=, ^=, ..=).
  • Understøttelse af brug af betingede "hvis-så-andet"-blokke i form af udtryk, der returnerer den værdi, der er beregnet under udførelsen af ​​blokken. Du kan angive et vilkårligt antal elseif-udtryk i en blok. local maxValue = hvis a > b så a else b lokalt tegn = hvis x < 0 så -1 elseif x > 0 så 1 else 0
  • Tilstedeværelsen af ​​en isolationstilstand (sandbox), som giver dig mulighed for at køre upålidelig kode. Denne funktion kan bruges til at organisere lanceringen side om side af din egen kode og kode skrevet af en anden udvikler, for eksempel tredjepartsbiblioteker, hvis sikkerhed ikke kan garanteres.
  • En begrænsning af standardbiblioteket, hvorfra funktioner, der potentielt kan skabe sikkerhedsproblemer, er blevet fjernet. For eksempel bibliotekerne "io" (adgang til filer og lanceringsprocesser), "pakke" (adgang til filer og indlæsning af moduler), "os" (funktioner til at få adgang til filer og ændre miljøvariabler), "debug" (usikker drift med hukommelse) , "dofile" og "loadfile" (FS-adgang).
  • Levering af værktøjer til statisk kodeanalyse, identifikation af fejl (linter) og kontrol af korrekt brug af typer.
  • Egen højtydende parser, bytekodefortolker og compiler. Luau understøtter endnu ikke JIT-kompilering, men det hævdes, at Luau-fortolkeren er ret sammenlignelig i ydeevne med LuaJIT i nogle situationer.

Kilde: opennet.ru

Tilføj en kommentar