Приложен "юникодный Lua-интерпретатор" lflua.exe, который динамически слинкован не только с lua5.1.dll, но и с luafar3.dll. Интерпретатор работает как стандартный lua.exe, но обладает дополнительными возможностями:
* дополнительные библиотеки: bit64, unicode, win
* юникодная версия библиотеки io
* юникодные версии функций loadfile, require, package.loadlib
Работа данных библиотек и функций описана в мануале LuaFAR. Интерпретатор является самостоятельной аппликацией, то-есть работает независимо от Фара. Ограничение: интерфейс командной строки - не юникодный.
LuaFAR — библиотека для создания плагинов на языке Lua
Оба работают! Виноват, поспешил: нормально работает только первый вариант [lflua64.exe]. (Соответственно, попеременно переименовывал их в lflua.exe.) Большое спасибо!
Естественно, надо расположить lflua.exe в одной папке с библиотеками от x86.
Поясните, пожалуйста, что в данном случае имеется ввиду?
Я (как по инструкции) кладу lflua.exe в %farhome%.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sun 06 Sep, 2015 11:55
by John Doe
sToLp wrote: в %farhome%.
lflua.exe использует библиотеки lua5.1.dll, lua51.dll, luafar3.dll.
Если вы кладёте 32-битный lflua.exe в папку с 64-битными dll, то ничего не сработает.
Если же разместить lflua.exe в одной папке с dll из дистрибутива far x86, то можно вызывать и из far x64.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sun 06 Sep, 2015 12:02
by Shmuel
John Doe wrote: lflua.exe использует библиотеки lua5.1.dll, lua51.dll, luafar3.dll.
Нет надобности в зависимости от lua5.1.dll.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sun 06 Sep, 2015 12:11
by John Doe
Shmuel wrote: Нет надобности в зависимости от lua5.1.dll.
Эта зависимость есть у lflua.exe по ссылке в шапке.
Если собрать новый, то не будет.
LuaFAR — библиотека для создания плагинов на языке Lua
2) Когда в качестве lflua.exe используется lflu64.exe, то в консоль выводится:
Checking Shell_AltX.lua OK
Checking Shell_CtrlShiftF1.lua OK
Checking Shell_CtrlShiftX.lua OK
Checking Shell_Delete.lua OK
Checking Shell_Esc.lua OK
Checking Shell_F9.lua OK
Checking Shell_RCtrlUpDown.lua OK
Total: 0 warnings / 0 errors in 7 files
Это в FARx64 под Win10x64ent.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sun 06 Sep, 2015 13:09
by sToLp
John Doe wrote:
sToLp wrote: в %farhome%.
lflua.exe использует библиотеки lua5.1.dll, lua51.dll, luafar3.dll.
Если вы кладёте 32-битный lflua.exe в папку с 64-битными dll, то ничего не сработает.
Если же разместить lflua.exe в одной папке с dll из дистрибутива far x86, то можно вызывать и из far x64.
Посмотрел как это работает в FARx64, запущенном из под Win10x64ent, и убедился, что Вы правы:
"старый" lflua.exe, работающий в FARx86, может работать и в x64, но только если рядом с ним лежат также и "старые" lua5.1.dll, lua51.dll, luafar3.dll (непременно все три).
Благодарю Вас за полезную информацию и за новый lflua.exe!
LuaFAR — библиотека для создания плагинов на языке Lua
Так себя ведёт lflua собранный с помощью tdm64 (32-битная версия аналогично, и не имеет значения используется ли lua.c или luajit.c).
В чём может быть проблема я понятия не имею.
Если же собирать mingw-64, то такой проблемы нет.
Но есть другая: не получается собрать 64-битную версию luajit.c:
D:/Development/LuaJIT-2.0.4/src/lj_arch.h:319:2: error: #error "Need a C compiler with native exception handling on x64"
#error "Need a C compiler with native exception handling on x64"
^
Makefile64jit:20: recipe for target 'luajit.o' failed
Т.е. не подходит SJLJ-модель исключений, а в mingw64 других вариантов нет...
(update: есть ещё SEH, но для компиляции нужна x64-машина, которой у меня нет)
P.S.
В приложенном архиве рабочие lfjit.exe, lflua.exe, lflua64.exe.
По описанным выше причинам lfjit64.exe нет, но врядли это проблема.
lflua — "юникодный Lua-интерпретатор"
Posted: Mon 07 Sep, 2015 14:23
by sToLp
Спасибо! Очень любопытно посмотреть.
Сегодня под руками у меня были только машины с 32-разрядными системами.
Поэтому наблюдал пока только работу "lfjit.exe" и "lflua.exe".
Возможно, из-за скудности материала, скармлимового им, разницу в их работе я не увидел. Обе работали одинаково хорошо (и с .lua, и с .moon).
Обе программы не требовали наличия "lua5.1.dll".
Позже намерен проверить работу всех трёх программ в 64-разрядной винде.
lflua — "юникодный Lua-интерпретатор"
Posted: Mon 07 Sep, 2015 14:53
by John Doe
sToLp wrote: Позже намерен проверить работу всех трёх программ в 64-разрядной винде.
Смысла нет.
sToLp wrote: разницу в их работе я не увидел.
Возможно незначительная разница проявится при интерактивном использовании интерпретатора (REPL).
Ключи командной строки немного отличаются:
usage: lfjit.exe [options]... [script [args]...].
Available options are:
-e chunk Execute string 'chunk'.
-l name Require library 'name'.
-b ... Save or list bytecode.
-j cmd Perform LuaJIT control command.
-O[opt] Control LuaJIT optimizations.
-i Enter interactive mode after executing 'script'.
-v Show version information.
-E Ignore environment variables.
-- Stop handling options.
- Execute stdin and stop handling options.
usage: lflua.exe [options] [script [args]].
Available options are:
-e stat execute string 'stat'
-l name require library 'name'
-i enter interactive mode after executing 'script'
-v show version information
-- stop handling options
- execute stdin and stop handling options
lflua — "юникодный Lua-интерпретатор"
Posted: Mon 07 Sep, 2015 17:55
by sToLp
John Doe wrote:
sToLp wrote: разницу в их работе я не увидел.
Возможно незначительная разница проявится при интерактивном использовании интерпретатора (REPL).
Ключи командной строки немного отличаются
Благодарю за полезную информацию! Будем осваивать.
sToLp wrote: Позже намерен проверить работу всех трёх программ в 64-разрядной винде.
Смысла нет.
Мозгом то я это предполагал. Но таков уж у меня менталитет, что вместе с тем надо мне и на практике ещё попробовать, опыт получить.
И, разумеется, Вы были правы: в 64 системе все три программы работают отлично (и из под x86-го Фара, и из под x64-го).
При этом ввиду того же менталитета я на основе luacheck_cmdline.lua сделал себе добавочный префикс luacheckJ: соответственно для последующих опытов и с lfjit.exe.
lflua — "юникодный Lua-интерпретатор"
Posted: Thu 04 May, 2017 22:49
by Shmuel
В связи с обновлением LuaJIT до 2.0.5 в шапку добавлен файл lfjit-2.0.5.7z, содержащий обе версии (x86 и x64) интерпретатора.
lflua — "юникодный Lua-интерпретатор"
Posted: Tue 08 Aug, 2017 12:53
by Shmuel
В шапку добавлен файл lfjit-2.1.0-beta3.7z, содержащий обе версии (x86 и x64) интерпретатора.