Wydanie języka programowania Lua 5.4

Po pięciu latach rozwoju dostępny wydanie Lua 5.4, szybki i kompaktowy język programowania skryptowego, który stał się szeroko stosowany jako język osadzony (na przykład do definiowania konfiguracji lub pisania rozszerzeń). Kod interpretera Lua został napisany w języku C i dystrybuowane przez na licencji MIT.

Lua łączy prostą składnię proceduralną z zaawansowanymi możliwościami opisu danych poprzez zastosowanie tablic asocjacyjnych i rozszerzalnej semantyki języka. Lua wykorzystuje dynamiczne typowanie, a konstrukcje języka są konwertowane na kod bajtowy, który jest uruchamiany na wirtualnej maszynie opartej na rejestrach z automatycznym zbieraniem śmieci. Sam interpreter został zaprojektowany jako biblioteka, którą można łatwo zintegrować z projektami w językach C i C++.

Głównym innowacje:

  • Wprowadzono nowy tryb zbierania śmieci — „pokoleniowy„, który uzupełniał poprzednio dostępny tryb przyrostowego zbierania śmieci. Nowy tryb obejmuje częstsze uruchamianie krótszego indeksowania, obejmującego tylko ostatnio utworzone obiekty. Pełne przeglądanie wszystkich obiektów jest wykonywane tylko wtedy, gdy pożądane wartości zużycia pamięci nie zostały osiągnięte po skróconym przeglądaniu. Takie podejście pozwala na wyższą wydajność i mniejsze zużycie pamięci w sytuacjach, w których przechowywana jest duża liczba krótkotrwałych obiektów.
  • Dodano możliwość definiowania zmiennych stałych, zdefiniowanych za pomocą atrybutu „const”. Takie zmienne można przypisać tylko raz i nie można ich zmienić po inicjalizacji.
  • Dodano obsługę zmiennych „do zamknięcia", które są przypisywane za pomocą atrybutu "close" i przypominają stałe zmienne lokalne (z atrybutem const), różniąc się od nich tym, że wartość jest zamykana (wywoływana jest metoda "__close") za każdym razem, gdy następuje wyjście z zakresu, np. po normalnym zakończeniu bloku, przejściu za pomocą break/goto/return lub wyjściu w przypadku wystąpienia błędu.
  • Typ "dane użytkownika", która zapewnia możliwość przechowywania dowolnych danych C w zmiennych Lua (reprezentuje blok danych w pamięci lub zawiera wskaźnik C), może teraz zawierać wiele wartości (posiadać wiele metatabel).
  • Zaprezentowano nową implementację funkcji generowania liczb pseudolosowych — math.random.
  • Dodano system ostrzeżeń definiowanych za pomocą wyrażenia ostrzec i, w przeciwieństwie do błędów, nie mają wpływu na dalsze wykonywanie programu.
  • Dodano informacje debugowania dotyczące argumentów funkcji i wartości zwracanych w poleceniu „return”.
  • Zaproponowano nową semantykę iterowania po liczbach całkowitych w pętlach.dla". Liczba iteracji jest obliczana przed rozpoczęciem pętli, co pozwala uniknąć przepełnienia zmiennej i pętli. Jeśli wartość początkowa jest większa od wartości granicznej, wyświetlany jest błąd.
  • W funkcji 'ciąg.gmatchdodano nowy opcjonalny argument „init”, który określa, od której pozycji rozpocząć wyszukiwanie (domyślnie od 1 znaku).
  • Dodano nowe funkcje 'lua_resetthread' (resetuje wątek, czyści cały stos wywołań i zamyka wszystkie zmienne „do zamknięcia”) i 'coroutine.zamknij(zamyka współprogram i wszystkie powiązane zmienne „do zamknięcia”).
  • Funkcje konwertujące ciągi znaków na liczby zostały przeniesione do biblioteki „string”.
  • Wywołanie funkcji alokacji pamięci może teraz zakończyć się niepowodzeniem, jeśli rozmiar bloku pamięci zostanie zmniejszony.
  • W funkcji 'format ciągudodano obsługę nowego specyfikatora formatu '%p' (wskaźnik zwrócony przez lua_topointer).
  • Biblioteka utf8 zapewnia obsługę kody znaków z liczbami do 2^31.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster