Kod Luau, wariantu języka Lua z kontrolą typów, został otwarty

Ogłoszono otwarcie kodu źródłowego i publikację pierwszego osobnego wydania języka programowania Luau, który kontynuuje rozwój języka Lua i jest wstecznie kompatybilny z Lua 5.1. Język Luau jest głównie przeznaczony do wbudowywania skryptów w aplikacjach i skupia się na osiągnięciu wysokiej wydajności oraz niskiego zużycia zasobów. Kod projektu został napisany w języku C++ i udostępniony na licencji MIT.

Luau rozszerza Lua o możliwości typowania oraz wprowadza nowe konstrukcje składniowe, takie jak literały łańcuchowe. Język jest wstecznie kompatybilny z Lua 5.1 oraz częściowo z nowszymi wersjami. Wspierane jest API Lua Runtime, co pozwala na korzystanie z Luau z już istniejącym kodem i wiązaniami (binding). Zasadniczy runtime językowy oparty jest na silnie zmodyfikowanym kodzie Lua runtime 5.1, jednak interpreter został całkowicie przepisany. Podczas rozwoju zastosowano nowe techniki optymalizacji, które pozwoliły osiągnąć wyższą wydajność w porównaniu do Lua.

Projekt został opracowany przez firmę Roblox i jest używany w kodzie platformy gier, gier oraz aplikacji użytkowych tej firmy, w tym edytora Roblox Studio. Początkowo Luau rozwijano w zamkniętym kręgu, ale ostatecznie postanowiono przenieść go do kategorii otwartych projektów w celu dalszego wspólnego rozwoju przy udziale społeczności.

Kompaktowość i łatwość wbudowania w inne projekty. Kod składa się jedynie z kilku plików w języku C, które nie wymagają do kompilacji zewnętrznych zależności. Skompilowana najprostsza aplikacja zajmuje około 190 KB;

  • System typowania stopniowego (Gradual typing), znajdujący się pomiędzy dynamicznym a statycznym typowaniem. Luau umożliwia korzystanie z typowania statycznego w razie potrzeby, wskazując informacje o typach za pomocą specjalnych adnotacji. Oferowane są wbudowane typy „any”, „nil”, „boolean”, „number”, „string” oraz „thread”. Zachowana jest również możliwość korzystania z dynamicznego typowania bez jawnego określania typów zmiennych i funkcji. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == «a» end
  • Wsparcie dla literałów łańcuchowych (jak w Lua 5.3), takich jak „\0x**” (liczba szesnastkowa), „\u{**}” (symbol Unicode) oraz „\z” (koniec wiersza), a także możliwość czytelnego formatowania liczb (można pisać 1_000_000 zamiast 1000000), literały dla liczb szesnastkowych (0x…) oraz binarnych (0b…….).
  • Wsparcie dla wyrażenia „continue”, uzupełniającego istniejącą klauzulę „break”, do przechodzenia do nowej iteracji pętli.
  • Wsparcie dla złożonych operatorów przypisania (+=, -=, *=, /=, %=, ^=, ..=).
  • Wsparcie dla użycia bloków warunkowych „if-then-else” w postaci wyrażeń, zwracających wartość obliczaną w czasie wykonywania bloku. Możliwe jest wskazanie dowolnej liczby wyrażeń elseif w bloku. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Obecność trybu izolacji (sandbox), który pozwala na uruchamianie kodu, który nie jest godny zaufania. Możliwość ta może być stosowana do uruchamiania obok własnego kodu kodu napisanego przez innych programistów, na przykład zewnętrznych bibliotek, których bezpieczeństwo nie może być gwarantowane.
  • Ograniczenie standardowej biblioteki poprzez usunięcie funkcji, które potencjalnie mogą stwarzać problemy z bezpieczeństwem. Na przykład z standardowego zestawu usunięto biblioteki „io” (dostęp do plików i uruchamianie procesów), „package” (dostęp do plików i ładowanie modułów), „os” (usunięto funkcje dostępu do plików i modyfikacji zmiennych środowiskowych), „debug” (niebezpieczna praca z pamięcią), „dofile” i „loadfile” (dostęp do FS).
  • Dostarczenie narzędzi do statycznej analizy kodu, wykrywania błędów (linter) oraz sprawdzania poprawności użycia typów.
  • Własny wydajny parser, interpreter bajtkodu i kompilator. Luau obecnie nie wspiera kompilacji JIT, ale twierdzi się, że interpreter Luau w niektórych sytuacjach jest porównywalny pod względem wydajności z LuaJIT.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster