[ON] Доступен язык программирования Lua 5.5

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Доступен язык программирования Lua 5.5

Сообщение rssbot »

После пяти лет разработки доступен релиз Lua 5.5, быстрого и компактного скриптового языка программирования, получившего большое распространение в качестве встраиваемого языка для определения конфигурации и для написания расширений. Код интерпретатора Lua написан на языке Си и распространяется под лицензией MIT.


Lua сочетает простой процедурный синтаксис с возможностями описания данных через использование ассоциативных массивов и расширяемой семантики языка. В Lua используется динамическая типизация, а языковые конструкции преобразуются в байт-код, выполняющийся поверх регистровой виртуальной машины с автоматическим сборщиком мусора. Интерпретатор оформлен в виде библиотеки, интегрируемой в проекты на языках Си и Си++.



Основные новшества:
  • В режиме "generational" полный цикл сборки мусора (major collection), перебирающий все объекты, переведён на использование инкрементальной обработки, при которой сборка мусора разбивается на отдельные шаги, чередующиеся с выполнением программы, что позволяет избавиться от длительных приостановок выполнения приложений с большим числом объектов в памяти.
  • Предложена компактная реализация массивов, требующая на 60% меньше памяти для массивов с однотипными данными (экономия достигается благодаря тому, что данные о типе сохраняются не для каждого элемента, а для группы элементов).
  • Добавлена возможность явного объявления глобальных переменных в любых блоках кода при помощи ключевого слова "global". При указании в блоке кода выражений с ключевым словом "global", все переменные обязательно должны объявляется явно. Если объявление "global" отсутствует, то неявно выставляется выражение "global *" при котором сохраняется старое поведение и все переменные трактуются, как глобальные. Также добавлено выражение "global‹const› *" при котором все неявно определённые глобальные переменные становятся доступны в режиме только для чтения.

    Код:

    X = 1
    -- Ok, X - глобальная переменная, старое поведение по умолчанию.
    do
    global Y -- объявление переменой Y как глобальной, все остальные переменные в блоке должны объявляться явно
    Y = 1
    -- Ok, переменная Y ранее определена
    X = 1
    -- Ошибка, переменная X не определена
    end
    X = 2
    -- Ok, вне блока с global действует старое поведение
  • Указываемые в циклах "for" управляющие переменные теперь доступны только для чтения и не могут быть изменены в теле цикла. Например, переменная i, объявленная в цикле "for i = 1, 5 do", не может быть изменена в теле цикла.
  • При выводе чисел с плавающей запятой через функцию print теперь выводится достаточное число цифр для корректного обратного преобразования из строки в исходное представление.
  • Увеличено допустимое число уровней вложенности конструкторов таблиц.
  • Добавлена функция table.create(nseq, nrec) для добавления пустой таблицы и предварительного выделения памяти для указанного числа элементов.
  • В функции utf8.offset обеспечен возврат не только байтового смещения до начала символа, но и позиции конца символа.
  • Добавлена поддержка создания внешних строк, размещаемых в памяти, не управляемой сборщиком мусора Lua.
  • Добавлена функция luaL_openselectedlibs для загрузки выбранной библиотеки, а также функция luaL_makeseed, формирующая seed-затравку для функции lua_newstate.
  • В lua.c обеспечена динамическая загрузка библиотеки 'readline' при её наличии (если библиотека есть в системе - она загружается и становятся доступны функции редактирования строк).
  • Включена оптимизация для экономии памяти при загрузке предварительно скомпилированного байткода - Lua теперь может повторно использовать память в некоторых внутренних структурах без создания дубликатов при загрузке дублирующегося байткода.
  • Обеспечено повторное использование всех строк в операциях "dump" и "undump".
  • Во вспомогательных буферах обеспечено повторное использование буферов (без копирования в новый буфер) при создании финальной строки.


Источник: https://www.opennet.ru/opennews/art.shtml?num=64476
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 23.12.2025 08:33, всего редактировалось 3 раза.
Причина: Updated upstream
Спасибо сказали: