Вышла 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.
( читать дальше... )