luajit в фаре

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 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 в папке фара.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

1. Подходит
2. Ещё тут http://luarocks.org/repositories/rocks/
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

3. ffi в составе luajit весьма функционален.


4. есть в природе ещё luaffi, по интерфейсу должен быть как и ffi из luajit.
Собрал бы кто dll.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Попробуйте приложенную DLL (LuaJIT 2.0, x86).
Attachments
lua5.1.dll.7z
(167.41 KiB) Downloaded 157 times
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

К сожалению та же серия диалогов с ошибками, что и с другими dll, которые я пробовал.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

А почему у меня никаких ошибок?
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Хотел бы я знать...
Windows 7, фар из ночных сборок.
Сейчас попытаюсь исключить окружение...
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Окружение не при чём, разница действительно в работе Lua.
Вот пример кода, приводящего к ошибке invalid escape sequence near '"/[A-Z0-9,<ю>;:'"':

Code: Select all

NoMacro {
  area="Shell"; key="/[A-Z0-9,<ю>;:\'\"\[{\\]}`~_!@#$%^&*()]/";
  action=function()
    mf.msgbox(akey(1))
  end;
}
Вот ещё: invalid escape sequence near '".. as destination [toggle ..'

Code: Select all

Macro {
  description=".. as destination [toggle ..\..]";
Другие проблемные места сейчас тоже найду.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Это - баги в вашем коде. Стандартный Lua просто глотает одиночные бэкслеши, а LuaJIT выдаёт ошибку.

А экранировать в Lua-паттернах надо не бэкслешем, а процентом.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Вот я и говорю, что иначе работает :-)
В данном случае это хорошо, исправлю баги (хотя работало же как-то?)
Проще всего заменить кавычки на [[ ]].

А процент тут разве поможет? key="/regex/" ведь фар разбирает?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Да, в данном случае процент ни при чём.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Есть ли у вас эти файлы?
lua51.dll
luajit.exe

Версия 2.0, не 2.0.1?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Нет, да, да.
User avatar
HaRT
Moderator
Posts: 10863
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

Спросить вот хотел,

почему LuaMacro.dll и luafar3.dll линкуются к lua5.1.dll (с точкой)

Code: Select all

C:\Far3>objdump -p "luafar3.dll"   | grep "DLL Name:" 
	DLL Name: KERNEL32.dll
	DLL Name: USER32.dll
	DLL Name: ADVAPI32.dll
	DLL Name: SHELL32.dll
	DLL Name: lua5.1.dll
	DLL Name: RPCRT4.dll
в то время, как все остальные примочки (в виде сорсов с Makefile т.д.) линкуются к lua51.dll? (без точки)

Code: Select all

C:\Far3\lua>for /F %i in ('dir /b /s *.dll') do objdump -p "%i" | grep "DLL Name:"

C:\Far3\lua>objdump -p "C:\Far3\lua\lsqlite3.dll"   | grep "DLL Name:"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: lua51.dll

C:\Far3\lua>objdump -p "C:\Far3\lua\luacom.dll"   | grep "DLL Name:"
        DLL Name: KERNEL32.dll
        DLL Name: USER32.dll
        DLL Name: GDI32.dll
        DLL Name: ADVAPI32.dll
        DLL Name: ole32.dll
        DLL Name: OLEAUT32.dll
        DLL Name: SHLWAPI.dll
        DLL Name: lua51.dll

C:\Far3\lua>objdump -p "C:\Far3\lua\lanes\core.dll"   | grep "DLL Name:"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: lua51.dll

C:\Far3\lua>cd \DEV\LuaJIT

C:\DEV\LuaJIT>objdump -p "luajit.exe" | grep "DLL Name:"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: lua51.dll
даже сам Lua.exe:

Code: Select all

C:\DEV\Lua>objdump -p "lua.exe"   | grep "DLL Name:" 
	DLL Name: KERNEL32.dll
	DLL Name: msvcrt.dll
	DLL Name: lua51.dll
Не будет ли правильнее их так же, как и все, к lua51.dll линковать? Иначе, чтобы пользоваться такими примочками, приходится класть копию с другим именем...
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

EGez wrote:Спросить вот хотел, почему LuaMacro.dll и luafar3.dll линкуются к lua5.1.dll (с точкой) в то время, как все остальные примочки (в виде сорсов с Makefile т.д.) линкуются к lua51.dll? (без точки)
Насчёт "всех остальных примочек": утверждение неверное, основанное на той небольшой выборке, которая у вас оказалась.
EGez wrote:даже сам Lua.exe:
Зависит, откуда вы взяли этот "сам" lua.exe. Тот, который лежит на Far SVN, линкуется с lua5.1.dll.
EGez wrote:Иначе, чтобы пользоваться такими примочками, приходится класть копию с другим именем...
Этого делать ни в коем случае нельзя - наличие более одной копии Lua в процессе приводит к падениям. Что можно, это использовать "прокси" DLL, переадресовывающую обращения на "основную". В следующей ночной сборке будет.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Shmuel wrote:
EGez wrote:даже сам Lua.exe:
Зависит, откуда вы взяли этот "сам" lua.exe.
http://www.lua.org/ftp/lua-5.1.5.tar.gz
Makefile wrote:

Code: Select all

mingw:
	$(MAKE) "LUA_A=lua51.dll" "LUA_T=lua.exe" \
Подскажите как собрать самостоятельно proxy dll.
И можно ли поступить наоборот - в качестве прокси использовать lua-5.1.dll

Это оно? http://lua-users.org/wiki/LuaProxyDllВижу что не то...
Post Reply

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