Open source voor Luau, een typecontrolevariant van de Lua-taal

Kondigde de open source en publicatie aan van de eerste zelfstandige release van de Luau-programmeertaal, waarmee de ontwikkeling van de Lua-taal wordt voortgezet en achterwaarts compatibel is met Lua 5.1. Luau is voornamelijk ontworpen voor het inbedden van scripting-engines in applicaties en streeft naar hoge prestaties en een laag bronnenverbruik. De projectcode is geschreven in C++ en is open onder de MIT-licentie.

Luau breidt Lua uit met typecontrolemogelijkheden en enkele nieuwe syntactische constructies zoals letterlijke tekenreeksen. De taal is achterwaarts compatibel met Lua 5.1 en gedeeltelijk met nieuwere versies. De Lua Runtime API wordt ondersteund, zodat u Luau kunt gebruiken met bestaande code en bindingen. De taalruntime is gebaseerd op een zwaar herwerkte Lua runtime 5.1-code, maar de tolk is volledig herschreven. Tijdens de ontwikkeling zijn enkele nieuwe optimalisatietechnieken gebruikt om hogere prestaties te bereiken in vergelijking met Lua.

Het project is ontwikkeld door Roblox en wordt gebruikt in de code van het gamingplatform, games en gebruikersapplicaties van dit bedrijf, waaronder de Roblox Studio-editor. Aanvankelijk werd Luau achter gesloten deuren ontwikkeld, maar uiteindelijk werd besloten het over te brengen naar de categorie open projecten voor verdere gezamenlijke ontwikkeling met deelname van de gemeenschap.

Основные особенности:

  • Geleidelijk typen, waarbij het een tussenpositie inneemt tussen dynamisch en statisch typen. Met Luau kunt u waar nodig statisch typen gebruiken door type-informatie op te geven via speciale annotaties. De ingebouwde typen "any", "nil", "boolean", "number", "string" en "thread" zijn aanwezig. Tegelijkertijd blijft de mogelijkheid behouden om dynamisch typen te gebruiken zonder expliciet het type variabelen en functies te definiëren. functie foo(x: getal, y: string): boolean local k: string = y:rep(x) return k == “a” einde
  • Ondersteuning voor letterlijke tekenreeksen (zoals in Lua 5.3), zoals "\0x**" (hexadecimaal getal), "\u{**}" (Unicode-teken) en "\z" (einde van de regel), evenals de mogelijkheid om getalnotatie te visualiseren (u kunt 1_000_000 schrijven in plaats van 1000000), letterlijke waarden voor hexadecimale (0x...) en binaire getallen (0b......).
  • Ondersteuning voor de uitdrukking 'continu', als aanvulling op het bestaande trefwoord 'break', om naar een nieuwe lus-iteratie te springen.
  • Ondersteuning voor samengestelde toewijzingsoperatoren (+=, -=, *=, /=, %=, ^=, ..=).
  • Ondersteuning voor het gebruik van voorwaardelijke "if-then-else"-blokken in de vorm van expressies die de waarde retourneren die is berekend tijdens de uitvoering van het blok. U kunt een willekeurig aantal elseif-expressies in een blok opgeven. local maxValue = if a > b then a else b lokaal teken = if x < 0 then -1 elseif x > 0 then 1 else 0
  • De aanwezigheid van een isolatiemodus (sandbox), waarmee u onbetrouwbare code kunt uitvoeren. Deze functie kan worden gebruikt om de lancering te organiseren naast uw eigen code en code die is geschreven door een andere ontwikkelaar, bijvoorbeeld bibliotheken van derden waarvan de veiligheid niet kan worden gegarandeerd.
  • Een beperking van de standaardbibliotheek waaruit functies zijn verwijderd die mogelijk beveiligingsproblemen zouden kunnen veroorzaken. Bijvoorbeeld de bibliotheken “io” (toegang tot bestanden en starten van processen), “package” (toegang tot bestanden en laden van modules), “os” (functies voor toegang tot bestanden en wijzigen van omgevingsvariabelen), “debug” (onveilige werking met geheugen) , “dofile” en “loadfile” (FS-toegang).
  • Het bieden van tools voor statische code-analyse, het identificeren van fouten (linter) en het controleren van het juiste gebruik van typen.
  • Eigen krachtige parser, bytecode-interpreter en compiler. Luau ondersteunt JIT-compilatie nog niet, maar er wordt beweerd dat de Luau-tolk in sommige situaties qua prestaties behoorlijk vergelijkbaar is met LuaJIT.

Bron: opennet.ru

Voeg een reactie