Åpen kildekode for Luau, en typekontrollerende variant av Lua-språket

Annonserte åpen kildekode og publisering av den første frittstående utgivelsen av programmeringsspråket Luau, fortsetter utviklingen av Lua-språket og bakoverkompatibelt med Lua 5.1. Luau er først og fremst designet for å bygge inn skriptmotorer i applikasjoner og har som mål å oppnå høy ytelse og lavt ressursforbruk. Prosjektkoden er skrevet i C++ og er åpen under MIT-lisensen.

Luau utvider Lua med funksjoner for typekontroll og noen nye syntaktiske konstruksjoner som strenge bokstaver. Språket er bakoverkompatibelt med Lua 5.1 og delvis med nyere versjoner. Lua Runtime API støttes, slik at du kan bruke Luau med eksisterende kode og bindinger. Språkets kjøretid er basert på en kraftig omarbeidet Lua runtime 5.1-kode, men tolken er fullstendig omskrevet. Under utviklingen ble noen nye optimaliseringsteknikker brukt for å oppnå høyere ytelse sammenlignet med Lua.

Prosjektet ble utviklet av Roblox og brukes i koden til spillplattformen, spillene og brukerapplikasjonene til dette selskapet, inkludert Roblox Studio-redaktøren. I utgangspunktet ble Luau utviklet bak lukkede dører, men til slutt ble det besluttet å overføre det til kategorien åpne prosjekter for videre felles utvikling med deltakelse fra samfunnet.

Nøkkelegenskaper:

  • Gradvis skriving, inntar en mellomposisjon mellom dynamisk og statisk skriving. Luau lar deg bruke statisk skriving etter behov ved å spesifisere typeinformasjon gjennom spesielle merknader. De innebygde typene "any", "nil", "boolean", "number", "string" og "thread" er gitt. Samtidig bevares muligheten for å bruke dynamisk skriving uten å eksplisitt definere typen variabler og funksjoner. funksjon foo(x: tall, y: streng): boolsk lokal k: streng = y:rep(x) returner k == "a" slutt
  • Støtte for strengliteraler (som i Lua 5.3) som "\0x**" (heksadesimalt tall), "\u{**}" (Unicode-tegn) og "\z" (slutt av linjen), samt evne til å visualisere tallformatering (du kan skrive 1_000_000 i stedet for 1000000), bokstaver for heksadesimale (0x...) og binære tall (0b......).
  • Støtte for «fortsett»-uttrykket, som komplementerer det eksisterende «break»-nøkkelordet, for å hoppe til en ny loop-iterasjon.
  • Støtte for sammensatte tildelingsoperatorer (+=, -=, *=, /=, %=, ^=, ..=).
  • Støtte for bruk av betingede «hvis-så-anne»-blokker i form av uttrykk som returnerer verdien beregnet under utførelse av blokken. Du kan spesifisere et vilkårlig antall elseif-uttrykk i en blokk. lokal maksverdi = hvis a > b så a annet b lokalt tegn = hvis x < 0 så -1 annet hvis x > 0 så 1 annet 0
  • Tilstedeværelsen av en isolasjonsmodus (sandkasse), som lar deg kjøre upålitelig kode. Denne funksjonen kan brukes til å organisere lanseringen side om side av din egen kode og kode skrevet av en annen utvikler, for eksempel tredjepartsbiblioteker som ikke kan garanteres for sikkerheten.
  • En begrensning av standardbiblioteket som funksjoner som potensielt kan skape sikkerhetsproblemer er fjernet fra. For eksempel bibliotekene "io" (tilgang til filer og lanseringsprosesser), "pakke" (tilgang til filer og lastemoduler), "os" (funksjoner for å få tilgang til filer og endre miljøvariabler), "feilsøke" (utrygg drift med minne) , "dofile" og "loadfile" (FS-tilgang).
  • Tilbyr verktøy for statisk kodeanalyse, identifisering av feil (linter) og kontroll av riktig bruk av typer.
  • Egen høyytelses-parser, bytekode-tolk og kompilator. Luau støtter ennå ikke JIT-kompilering, men det hevdes at Luau-tolken er ganske sammenlignbar i ytelse med LuaJIT i noen situasjoner.

Kilde: opennet.ru

Legg til en kommentar