LINUX.ORG.RU

Вышла Lua 5.2

 ,


0

0

Завершена работа над новой версией популярного встраиваемого языка програмирования 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.

>>> Сайт Lua

★★★★★

Проверено: maxcom ()
Последнее исправление: proud_anon (всего исправлений: 4)
Ответ на: комментарий от anonymous

чуть ли не половина из этих 467 приходится на комментарии или имена функций с этими словами

Еще раз - ты ищешь Си++-конструкции. Если у тебя есть исходники ядра венды, ищи в них try, finally и raise.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

find win2k/ -type f -name «*.c» -exec grep -E «try {» {} + | wc -l

2682

тоже не слишком много, и большая часть в юзерспейсе. Так что упс.

anonymous
()
Ответ на: комментарий от LamerOk

Если у тебя есть исходники ядра венды, ищи в них try, finally и raise.

facepalm.ps.gz

Это ты правильно фейспалмишь.

__try, __except и __finally

И что, греп на try не найдет __try? Правда?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

и большая часть в юзерспейсе

Так большая часть или все?

Так что упс.

Пока не вижу «упс». Если в ядре венды хоть в одном месте используется исключение, то Катлера нужно «бить по яйцам и увольнять».

tailgunner ★★★★★
()
Ответ на: комментарий от LamerOk

А что, греп на raise найдет __finally? Правда?

Нет, греп на finally найдет и __finally. Но можешь прикидываться шлангом и дальше - я давно понял, что ты органически неспособен признать ошибку.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

я давно понял, что ты органически неспособен признать ошибку.

И это говорит человек, который предлагал вместо SEH'а искать в исходникакх вендового ядра плюсатые исключения...

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.