Pull to refresh

Comments 6

Видимо обновляют сайт. Я думаю, завтра этот документ переедет на своё окончательное место, и я обновлю ссылку. Пока можно попробовать начать отсюда: www.lua.org/manual/5.2/. Восьмой раздел руководства: «Incompatibilities with the Previous Version»
Для тех, кто хочет поиграться с новой Lua, но лень ее собирать — я собрал бинарники для Windows:
rghost.ru/35123231 — win32
rghost.ru/35123391 — win64

Оба собраны Visual Studio 2010, солюшен с исходниками: rghost.ru/35123681

Я не обзавелся сайтом, так что ссылки будут действительны 30 дней.
С точки зрения самого языка изменений немного. Пожалуй, наиболее видимое (с точки зрения программиста на Lua) отличие — теперь нет специальной переменной arg у функций с переменным числом аргументов, вместо нее нужно использовать многоточие. Также поменялась концепция «окружений» (environment) — функций setfenv/getfenv больше нет, и текущее окружение определяется специльной переменной с именем _ENV, находящейся в текущей области видимости.

С точки зрения реализации есть очень важное нововведние — функции lua_yieldk и lua_callk. Благодаря им можно передать управление из сопрограммы (coroutine) не только из кода на Lua, то и из C, с последующей возможностью продолжить сопрограмму. Это в том числе позволяет вызывает yield из метаметодов (что раньше делать было нельзя).

Кроме того, немного поменялось поведение таблиц со слабыми ключами (weak keys), но в большинстве случаев вам, скорее всего, это будет неважно.
Специальной переменной arg формально не было и в 5.1, она лишь поддерживалась в дефолтной конфигурации для совместимости.
Ура, yield из метаметодов! Без этого такие костыли приходилось городить.
Радует то, что я ждал 5.2 всего год, а кому-то, наверняка, пришлось ждать 5 лет.
Sign up to leave a comment.

Articles