Dostępny jest język programowania Lua 5.5

Po pięciu latach prac programistycznych zadebiutowała wersja Lua 5.5, szybkiego i kompaktowego języka skryptowego, który zdobył dużą popularność jako wbudowany język do definiowania konfiguracji oraz do pisania rozszerzeń. Kod interpretera Lua jest napisany w języku C i jest dostępny na licencji MIT.

Lua łączy prostą składnię proceduralną z możliwościami opisywania danych poprzez użycie tablic asocjacyjnych oraz rozszerzalnej semantyki języka. W Lua stosuje się dynamiczne typowanie, a konstrukcje językowe są przekształcane w bajt-kod, który jest wykonywany na wirtualnej maszynie obsługującej rejestry z automatycznym zbieraniem śmieci. Interpreter dostępny jest w formie biblioteki, którą można integrować w projektach napisanych w językach C i C++.

Główne nowości:

  • W większości operacji zbierania śmieci zastosowano tryb inkrementalny, w którym cykl zbierania śmieci dzieli się na poszczególne kroki przeplatane z wykonywaniem programu, co pozwala uniknąć długich przerw w działaniu aplikacji z dużą ilością obiektów w pamięci.
  • Proponowana jest kompaktowa implementacja tablic, która wymaga o 60% mniej pamięci dla tablic z jednorodnymi danymi (oszczędność ta wynika z faktu, że dane o typie nie są przechowywane dla każdego elementu, lecz dla grupy elementów).
  • Dodano możliwość jawnego deklarowania zmiennych globalnych w dowolnych blokach kodu za pomocą słowa kluczowego „global”. Przy zdefiniowaniu w bloku kodu wyrażeń z użyciem słowa kluczowego „global”, wszystkie zmienne muszą być obligatoryjnie deklarowane jawnie. Jeśli deklaracja „global” jest nieobecna, to niejawnie ustawiane jest wyrażenie „global *”, które zachowuje wcześniejsze zachowanie, traktując wszystkie zmienne jako globalne. Wprowadzono również wyrażenie „global<const> *”, dzięki któremu wszystkie niejawnie zdefiniowane zmienne globalne stają się dostępne w trybie tylko do odczytu. X = 1 — Ok, X — zmienna globalna, stare zachowanie domyślne. do global Y — deklaracja zmiennej Y jako globalnej, wszystkie pozostałe zmienne w bloku muszą być deklarowane jawnie Y = 1 — Ok, zmienna Y wcześniej zdefiniowana X = 1 — Błąd, zmienna X nie została zdefiniowana end X = 2 — Ok, poza blokiem global ze starego zachowania.
  • Zmienne kontrolne podane w pętlach „for” są teraz dostępne tylko do odczytu i nie mogą być zmieniane w ciele pętli. Na przykład, zmienna i zadeklarowana w pętli „for i = 1, 5 do” nie może być zmieniana w ciele pętli.
  • Podczas wyjścia liczb zmiennoprzecinkowych za pomocą funkcji print, teraz wyświetlane są wystarczające liczby cyfr do poprawnej konwersji z łańcucha do pierwotnej postaci.
  • Zwiększono dozwoloną liczbę poziomów zagnieżdżenia konstruktorów tabel.
  • Dodano funkcję table.create(nseq, nrec) do tworzenia pustej tabeli i zarezerwowania pamięci dla określonej liczby elementów.
  • W funkcji utf8.offset zapewniono zwrot nie tylko przesunięcia bajtowego do początku znaku, ale również pozycji końca znaku.
  • Dodano wsparcie dla tworzenia zewnętrznych łańcuchów, umieszczanych w pamięci, nad którą nie ma kontroli zbieracz śmieci Lua.
  • Dodano funkcję luaL_openselectedlibs do ładowania wybranej biblioteki oraz funkcję luaL_makeseed, która tworzy nasiona do funkcji lua_newstate.
  • W lua.c zapewniono dynamiczne ładowanie biblioteki ‘readline’, jeśli jest dostępna (jeśli biblioteka jest w systemie — jest ładowana i funkcje edycji łańcuchów stają się dostępne).
  • Wprowadzono optymalizację oszczędzającą pamięć podczas ładowania wstępnie skompilowanego kodu bajtowego — Lua może teraz wielokrotnie wykorzystywać pamięć w niektórych wewnętrznych strukturach bez tworzenia duplikatów podczas ładowania duplikowanego kodu bajtowego.
  • Zapewniono ponowne wykorzystanie wszystkich łańcuchów w operacjach „dump” i „undump”.
  • W pomocniczych buforach zapewniono ponowne wykorzystanie buforów (bez kopiowania do nowego bufora) podczas tworzenia końcowego łańcucha.

Ź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