- 22 декабря 2025 года вышла новая стабильная версия языка программирования Lua 5.5 — первый релиз за пять лет.
- В Lua 5.5 введён более эффективный инкрементальный сборщик мусора, уменьшено потребление памяти и обновлён синтаксис для управления глобальными переменными.
- Расширены функции стандартной библиотеки, добавлены возможности по работе с таблицами, строками и динамической загрузке библиотек.
22 декабря 2025 года состоялся релиз стабильной версии языка программирования Lua 5.5, который стал первым крупным обновлением с января 2020 года. Lua — это компактный, быстрый и гибкий скриптовый язык с динамической типизацией, широко применяемый как встроенный язык для конфигурации и расширений в различных проектах. Интерпретатор Lua написан на языке C и доступен на GitHub под лицензией MIT.
Основные изменения в версии 5.5 связаны с улучшением производительности и управляемости памяти. В частности, сборщик мусора перешёл на инкрементальный режим обработки, что сокращает паузы в работе программ с большим объёмом объектов в памяти. Также реализована новая компактная структура массивов, позволяющая экономить до 60% памяти при хранении однотипных данных. Это достигается за счёт хранения информации о типах элементов группами, а не по отдельности для каждого элемента.
Важное новшество — введение ключевого слова global для явного объявления глобальных переменных в любых блоках кода. Если объявление отсутствует, сохраняется прежнее поведение с автоматическим определением глобальных переменных. Ключевое слово global позволяет объявлять глобальные переменные в режиме только для чтения. Такой подход повышает контроль за областью видимости и помогает избежать ошибок неявных глобальных переменных.
Были также внесены изменения в управление переменными циклов for: управляющие переменные теперь доступны только для чтения в теле цикла, что препятствует их случайному изменению. Кроме того, улучшен вывод чисел с плавающей точкой — функция print теперь показывает число цифр, необходимое для точного обратного преобразования в исходное значение.
Расширены возможности стандартной библиотеки Lua. Добавлена функция table.create(nseq, nrec) для создания и предварительного выделения памяти под таблицы, что оптимизирует работу с большими структурами данных. В функции utf8.offset теперь возвращается смещение не только до начала символа, но и до его конца, что облегчает обработку UTF-8 строк.
Также реализована поддержка внешних строк — данных, размещённых в памяти вне зоны управления сборщиком мусора Lua, что может повысить эффективность в определённых сценариях. В стандартном файле lua.c появилась возможность динамической загрузки библиотеки readline, если она установлена в системе, что добавляет удобные функции редактирования строк.
Оптимизации коснулись и работы с байткодом: теперь Lua может повторно использовать внутренние структуры памяти при загрузке дублирующегося предкомпилированного кода, а все строки резервируются и повторно применяются при операциях дампа и восстановления. Вспомогательные буферы также оптимизированы для избежания лишних копирований при формировании конечных строк.
Таким образом, выпуск Lua 5.5 представляет собой значительный шаг вперёд с точки зрения повышения производительности, экономии ресурсов и расширения возможностей языка, что важно для разработки эффективных и надёжных приложений с использованием этого популярного скриптового языка.
