Вышла Lua 5.2

Завершена работа над новой версией популярного встраиваемого языка програмирования Lua. Выпущены руководство (reference manual) с описанием новой версии языка (5.2), набор тестов для реализаций Lua версии 5.2 и образцовый (референсный) интерпретатор версии 5.2.0.Вот основные изменения в новой версии языка:Можно вызывать yield из защищенного вызова (pcall) и метаметодов.
Новый метод работы с окружениями и глобальными переменными. В частности, функции getfenv/setfenv больше не работают.
Появилось стандартное API для битовых операций.
Изменение в C API : появились т.н. «облегченные нативные функции» (light C functions), представляющие собой простые указатели на функции. В отличие от полноценных замыканий, они не имеют окружения, что позволяет экономить системные ресурсы.
В языке появился оператор goto.
Изменение в сборке мусора: таблицы со слабыми ссылками на ключи и с сильными ссылками на значения теперь будут работать как таблицы эфемеронов.
Теперь у таблиц могут быть финализаторы.
Помимо уже существующего инкрементного сборщика мусора, интерпретатор теперь имеет экстренный сборщик мусора, который освобождает память, если не удается выделить новую. Кроме того, появился экспериментальный сборщик мусора с учетом поколений (generational GC), но он по умолчанию отключен.
Полный список изменений можно прочитать в файле README, находящемся в дистрибутиве Lua.Нововведения в языке привели к несовместимости Lua 5.2 и 5.1. Возникшие проблемы совместимости задокументированы в руководстве. Впрочем, теоретически существует возможность написать программу так, чтобы она исполнялась и на Lua 5.1, и на 5.2. Lua не стремится сохранять обратную совместимость: например, версия 5.1 не была совместима с 5.0. Разработчики отмечают, что совершенно необязательно переводить существующие приложения со скриптингом на Lua на новую версию языка.С момента выпуска Lua 5.1 прошло около четырех лет. Первая альфа-версия 5.2 вышла примерно год назад. Образцовый интерпретатор распространяется по лицензии MIT.