Pull to refresh
93
0
Александр Гладыш @agladysh

User

Send message
Выложили lua-5.2.0-work2:

www.lua.org/work/
Куда уж быстрей-то? Есть подозрение, что без JIT-а сильно быстрее уже не получится. А с JIT-ом — см. LuaJIT 2, в среднем всего в 2.37 раза медленнее C++. 5.2, конечно, пока LuaJIT не поддерживает, но ближе к релизу, скорее всего, будет.

Если говорить про стандартную реализацию 5.2, то, говорят, стало где-то чуть медленнее, где-то чуть быстрее. Существенной разницы с 5.1 нет.
Тут уже всё сильно зависит от деталей конкретной ситуации.
В отличие от «некоторых других» динамических языков, в Луа можно параллельно работать одновременно с несколькими стейтами в одном процессе.

Если нужно организовать параллельную работу логики на Луа, обычно создаётся по стейту на поток и организуется механизм обмена данными между стейтами. Например, налаживается система посылки сообщений между потоками или данные просто расшариваются тем или иным способом между стейтами с обеспечением синхронизации доступа кодом движка.

Почему разработчики отдельных игр пренебрегают такой возможностью мне сказать сложно. Может быть считают, что овчинка не стоит выделки, и игровая логика отлично будет работать и на одном ядре…
После анализа этого поста внёс следующие дополнения в статью:

  • Подтверждено, что в 5.2 можно будет делать yield через метаметоды, итераторы цикла for и функции pcall() и xpcall()!
  • Новые коды ошибок: LUA_ERRGCMM и LUA_OK.
  • Функцию lua_arith() теперь считаем документированной.
  • Упомянута функция lua_len(), уважающая, в отличие от lua_rawlen(), метаметод __len у таблиц.
  • Новые функции: lua_copy() и luaL_tolstring().
  • Функции lua_pushstring() и lua_pushlstring() теперь возвращают указатель на внутреннюю копию строки.
  • Если файл был открыт при помощи io.popen(), file:close() вернёт код завершения соответствующего ему процесса.
  • Теперь file:write() возвращает file.
  • Теперь можно узнать, был ли остановлен GC.
  • У корутин больше нет отдельных окружений
  • Тип символа при компиляции теперь не зависит от локали.
  • Увеличено максимальное число констант на функцию (чанк).
  • Парсер теперь отъедает гораздо меньше сишного стека.
  • Улучшена хэш-функция для чисел с плавающей запятой.
  • Улучшена загрузка динамических библиотек под никсами

Опубликован дополненный список изменений от авторов: http://article.gmane.org/gmane.comp.lang.lua.general/61505.
Хочу уточнить на всякий случай, что проблемы с Юникодом под Windows возникают в основном при работе с юникодной файловой системой через io.* (что всё равно обычно отдаётся на откуп движку — так что не страшно). Сами юникодные строки можно использовать — так же как и на других платформах.
Поддерживаю, хорошая статья.

Вот ещё есть паттерн Alternate Hard and Soft Layers, там есть несколько полезных мыслей по поводу использования скриптовых языков вообще. Там, правда довольно сумбурно написано.
Выложили билд Луа 5.2-work1 под Windows, можно играться.

http://article.gmane.org/gmane.comp.lang.lua.general/61528
Распараллеливание кода в Луа отлично получается и без поддержки системных потоков самим языком. (Понятное дело, что для этого нужны изолированные стейты, но это и хорошо, лучше масштабируется.)
Вот, специально уточнил позицию авторов (хотя и так было примерно понятно).

http://article.gmane.org/gmane.comp.lang.lua.general/61523

Там дальше в треде народ пошёл ещё раз перечислять проблемы с Юникодом у тех, кто использует Луа под Windows… Можно излить свои печали, иногда это работает.
Не забыли, но и не добрались пока.

С другой стороны, UTF-8 вполне можно пользоваться (стиснув зубы).

http://penlight.luaforge.net/FAQ/#T9
Если подробнее, то, как минимум вот в этих (на самом деле список далеко не полон):

en.wikipedia.org/wiki/Category:Lua-scripted_video_games

Вот неигровые приложения, использующие Луа, про которые знает Википедия:

en.wikipedia.org/wiki/Lua_(programming_language)#Applications

Не знаю, правда, что это доказывает. :-)
Да, используется.
А по поводу «быстрых и лёгких» дохрена — это спорное заявление. К тому же, фишка Луа в том, что в языке достигнут хороший баланс по всем перечисленным показателям, не только по быстроте и скорости.

Но мне холиваров по поводу языка разводить здесь совсем не хочется. Я никого Луа использовать не заставляю. Те, кто использует — те обычно знают «в чём фишка». ;-)
Ну так на то это и новая версия, чтобы минусы исправлять, разве нет?
Спасибо на добром слове. Увы, не угадал с катом. :-)
Спасибо, дополнил.
Пардон, кат потерялся по дороге :-)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity