luajit в фаре

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

luajit в фаре

Post by John Doe »

Начиная с 17.05.2012 в дистрибутив фара входит LuaJITJIT-компилятор языка Lua.

LuaJIT предоставляет несколько расширений, среди которых наиболее примечательным является библиотека FFI.

Вопросы по использованию FFI задаём тут: http://forum.farmanager.com/viewtopic.php?f=57&t=8418
  • Внимание: LuaJIT 2.0 на Windows 2000 не работает!
    В этом случае можно использовать lua5.1.dll от Lua 5.1.5, взять из старых дистрибутивов ночных сборок (билды до 3416).
    Или же можно скачать с svn файл lua5.1.rio.dll нужной разрядности, и заменить им lua5.1.dll в папке фара.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Latest post of the previous page:

John Doe wrote:Как я понял, это разделение возникло по историческим причинам, и в 5.2 будет неактуально.
Именно так.
В своё время (года три назад) количество бинарников в сети, слинкованных с lua5.1.dll значительно превышало количество слинкованных с lua51.dll. Может быть сейчас ситуация изменилась, не проверял.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Smitis »

Shmuel wrote:
EGez wrote:Иначе, чтобы пользоваться такими примочками, приходится класть копию с другим именем...
Этого делать ни в коем случае нельзя - наличие более одной копии Lua в процессе приводит к падениям. Что можно, это использовать "прокси" DLL, переадресовывающую обращения на "основную". В следующей ночной сборке будет.
У меня в данный момент в папке с ФАРом лежит две идентичные lua5.1.dll и lua51.dll и ни к каким падениям не приводит. Правда, это luajit.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

То что они ЛЕЖАТ не может привести к падению.
Вот когда они начнут ИСПОЛЬЗОВАТЬСЯ - тогда посмотрите.

P.S.
Вот было: http://forum.farmanager.com/viewtopic.p ... 646#p41646
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by EGez »

Shmuel wrote:
Это всего лишь один из вариантов.

[. . .]

1. http://lua-users.org/wiki/LuaProxyDllTwo
[. . .]
Вроде, этот вариант, как бы официальный? ;)

Насчет прокси, я так полагаю, если я использую LuaJIT, мне придется самому собирать прокси для каждой его последующей сборки? И как быть, если нету .def-файла? То, что мне выплевывает dlltool -z lua51.def lua51.dll что-то не срабатывает.

Попробовал просто список из "PE analyzer: lua51.dll [Export]" вставить в .def-файл после EXPORTS, вроде сработало, но хотелось бы автоматизировать:

Code: Select all

║lua5.1.dll                        │ 11264│ 1▓
║lua51.def                         │  2528│ 1▓
║lua51.dll                         │424513│ 1░
Кстати, раньше прсото делал hardlink на файл, пока не падал...

ADD:
John Doe wrote:То что они ЛЕЖАТ не может привести к падению.
Вот когда они начнут ИСПОЛЬЗОВАТЬСЯ - тогда посмотрите.
Используются, как показывает мое предыдущее сообщение:
luacom, lsqlite3, lanes
Может с хардлинками не падает? Тело-то одно? Не знаю, как к ним там обращаются...
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

EGez wrote:Насчет прокси, я так полагаю, если я использую LuaJIT, мне придется самому собирать прокси для каждой его последующей сборки?
С чего бы это, API же не меняется. Моя прокси собрана 6 лет назад, больше не пересобирал.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

EGez wrote:Вроде, этот вариант, как бы официальный? ;)
Ещё бы: -- Written by: Shmuel Zeigerman
Интересно что автор думает о LuaProxyDllThree и LuaProxyDllFour
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Ещё бы: -- Written by: Shmuel Zeigerman
Интересно что автор думает о LuaProxyDllThree и LuaProxyDllFour
Не хотелось бы пускать пыль в глаза: я далеко не специалист в этих вещах. Попробовал - получилось, запостил на Wiki.

Насчёт прокси других авторов - там у каждого варианта есть свои плюсы и минусы, и области применения несколько отличаются. Детали уже не помню, давно не заглядывал на эти страницы.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by EGez »

Shmuel wrote:
EGez wrote:Насчет прокси, я так полагаю, если я использую LuaJIT, мне придется самому собирать прокси для каждой его последующей сборки?
С чего бы это, API же не меняется. Моя прокси собрана 6 лет назад, больше не пересобирал.
API LuaJIT дополнен следующими функциями:
lua_loadx
lua_upvalueid
lua_upvaluejoin
luaJIT_setmode
luaJIT_version_2_0_1
luaL_execresult
luaL_fileresult
luaL_loadbufferx
luaL_loadfilex
luaL_traceback
luaopen_bit
luaopen_ffi
luaopen_jit
John Doe wrote:
EGez wrote:Вроде, этот вариант, как бы официальный? ;)
Ещё бы: -- Written by: Shmuel Zeigerman
Интересно что автор думает о LuaProxyDllThree и LuaProxyDllFour
Здесь имелись ввиду сосрсы lua и относилось к
Это всего лишь один из вариантов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Smitis wrote:У меня в данный момент в папке с ФАРом лежит две идентичные lua5.1.dll и lua51.dll и ни к каким падениям не приводит. Правда, это luajit.
Только что повторил ваш успех.
Действительно, фар (в одном месте) у меня падает с копией дистрибутивной lua5.1.dll, но не падает с luajit lua5.1.dll.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

EGez wrote:API LuaJIT дополнен следующими функциями:
Я в курсе. Но они применяются только в аппликациях, для которых использование LuaJIT - необходимое условие, и то только в тех, где есть не только Lua скрипты.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by EGez »

И да, кстати, раз уж речь пошла о LuaJIT, почему бы не переехать на него полностью?

API тот же, плюс еще некоторые вкусняшки типа оптимизации и почти безграничного доступа к функциям аля C/C++
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

EGez wrote:И да, кстати, раз уж речь пошла о LuaJIT, почему бы не переехать на него полностью?
было http://forum.farmanager.com/viewtopic.p ... 44#p100044
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by EGez »

Еще раз к dll proxy. относительно метода http://lua-users.org/wiki/LuaProxyDllTwo:
Добавляет ли такой подход лишний вызов в call stack? Т.е. влияет ли это на скорость выполнения, если напр. в цикле вызывать lua функции?
И если да, то на сколько?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Думаю, что данный подход добавляет лишний вызов в стек.
Думаю, что на скорость исполнения не влияет, так как расход времени на дополнительный вызов оцениваю величиной менее 100 наносекунд.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Aidar »

Shmuel wrote:
EGez wrote:...влияет ли это на скорость выполнения...
...менее 100 наносекунд.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by EGez »

Ок, прояснилось, вопрос параноика ;)

Спасибо! И да, статья поучительна...
Post Reply

Return to “Обсуждение макросов”