lflua — "юникодный Lua-интерпретатор"

Здесь обсуждается всё, что касается макросов.
Post Reply
Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

lflua — "юникодный Lua-интерпретатор"

Post by Shmuel » Wed 16 May, 2012 14:14

Приложен "юникодный Lua-интерпретатор" lflua.exe, который динамически слинкован не только с lua5.1.dll, но и с luafar3.dll. Интерпретатор работает как стандартный lua.exe, но обладает дополнительными возможностями:

* дополнительные библиотеки: bit64, unicode, win
* юникодная версия библиотеки io
* юникодные версии функций loadfile, require, package.loadlib

Работа данных библиотек и функций описана в мануале LuaFAR. Интерпретатор является самостоятельной аппликацией, то-есть работает независимо от Фара. Ограничение: интерфейс командной строки - не юникодный.
Attachments
lfjit-2.1.0-beta3.7z
(15.25 KiB) Downloaded 13 times
lfjit-2.0.5.7z
(24.97 KiB) Downloaded 38 times
lflua.7z
Юникодный Lua-интерпретатор
(5.61 KiB) Downloaded 199 times
Last edited by Shmuel on Tue 08 Aug, 2017 12:51, edited 1 time in total.

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by sToLp » Sun 06 Sep, 2015 09:56

Shmuel wrote: Приложен "юникодный Lua-интерпретатор" lflua.exe
В Win10x64ent из под FARx86 работает, а из под FARx64 не запускается: "Ошибка при запуске приложения (0c000007b)".

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 06 Sep, 2015 10:49

sToLp wrote: В Win10x64ent из под FARx86 работает, а из под FARx64 не запускается: "Ошибка при запуске приложения (0c000007b)".
Естественно, надо расположить lflua.exe в одной папке с библиотеками от x86.

Или так:
lflua64.7z
(17.99 KiB) Downloaded 44 times
(не проверял, сообщите какой из двух рабочий)

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by sToLp » Sun 06 Sep, 2015 11:47

John Doe wrote: Или так:
[url=http://forum.farmanager.com/download/file.php?id=7036]lflua64.7z[/url]
(не проверял, сообщите какой из двух рабочий)
Оба работают! Виноват, поспешил: нормально работает только первый вариант [lflua64.exe]. (Соответственно, попеременно переименовывал их в lflua.exe.) Большое спасибо!
Естественно, надо расположить lflua.exe в одной папке с библиотеками от x86.
Поясните, пожалуйста, что в данном случае имеется ввиду?
Я (как по инструкции) кладу lflua.exe в %farhome%.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 06 Sep, 2015 11:55

sToLp wrote: в %farhome%.
lflua.exe использует библиотеки lua5.1.dll, lua51.dll, luafar3.dll.
Если вы кладёте 32-битный lflua.exe в папку с 64-битными dll, то ничего не сработает.

Если же разместить lflua.exe в одной папке с dll из дистрибутива far x86, то можно вызывать и из far x64.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Sun 06 Sep, 2015 12:02

John Doe wrote: lflua.exe использует библиотеки lua5.1.dll, lua51.dll, luafar3.dll.
Нет надобности в зависимости от lua5.1.dll.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 06 Sep, 2015 12:11

Shmuel wrote: Нет надобности в зависимости от lua5.1.dll.
Эта зависимость есть у lflua.exe по ссылке в шапке.
Если собрать новый, то не будет.

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by sToLp » Sun 06 Sep, 2015 12:33

John Doe wrote:
[url=http://forum.farmanager.com/download/file.php?id=7036]lflua64.7z[/url]
(не проверял, сообщите какой из двух рабочий)
Перепроверил. Это в FARx64 под Win10x64ent.

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by sToLp » Sun 06 Sep, 2015 13:09

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!

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 06 Sep, 2015 20:06

sToLp wrote: Checking *.lua I/O error

Total: 0 warnings / 0 errors in 0 files, couldn't check 1 file
А вот это прелюбопытно.

Так себя ведёт lflua собранный с помощью tdm64 (32-битная версия аналогично, и не имеет значения используется ли lua.c или luajit.c).
В чём может быть проблема я понятия не имею.

Если же собирать mingw-64, то такой проблемы нет.
Но есть другая: не получается собрать 64-битную версию luajit.c:

Code: Select all

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 нет, но врядли это проблема.
Attachments
lflua.7z
(16.73 KiB) Downloaded 48 times

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

lflua — "юникодный Lua-интерпретатор"

Post by sToLp » Mon 07 Sep, 2015 14:23

Спасибо! Очень любопытно посмотреть.

Сегодня под руками у меня были только машины с 32-разрядными системами.
Поэтому наблюдал пока только работу "lfjit.exe" и "lflua.exe".
Возможно, из-за скудности материала, скармлимового им, разницу в их работе я не увидел. Обе работали одинаково хорошо (и с .lua, и с .moon).
Обе программы не требовали наличия "lua5.1.dll".

Позже намерен проверить работу всех трёх программ в 64-разрядной винде.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

lflua — "юникодный Lua-интерпретатор"

Post by John Doe » Mon 07 Sep, 2015 14:53

sToLp wrote: Позже намерен проверить работу всех трёх программ в 64-разрядной винде.
Смысла нет.
sToLp wrote: разницу в их работе я не увидел.
Возможно незначительная разница проявится при интерактивном использовании интерпретатора (REPL).
Ключи командной строки немного отличаются:

Code: Select all

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.

Code: Select all

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

User avatar
sToLp
Posts: 712
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

lflua — "юникодный Lua-интерпретатор"

Post by sToLp » Mon 07 Sep, 2015 17:55

John Doe wrote:
sToLp wrote: разницу в их работе я не увидел.
Возможно незначительная разница проявится при интерактивном использовании интерпретатора (REPL).
Ключи командной строки немного отличаются
Благодарю за полезную информацию! Будем осваивать.
sToLp wrote: Позже намерен проверить работу всех трёх программ в 64-разрядной винде.
Смысла нет.
Мозгом то я это предполагал. Но таков уж у меня менталитет, что вместе с тем надо мне и на практике ещё попробовать, опыт получить.

И, разумеется, Вы были правы: в 64 системе все три программы работают отлично (и из под x86-го Фара, и из под x64-го).

При этом ввиду того же менталитета я на основе luacheck_cmdline.lua сделал себе добавочный префикс luacheckJ: соответственно для последующих опытов и с lfjit.exe.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

lflua — "юникодный Lua-интерпретатор"

Post by Shmuel » Thu 04 May, 2017 22:49

В связи с обновлением LuaJIT до 2.0.5 в шапку добавлен файл lfjit-2.0.5.7z, содержащий обе версии (x86 и x64) интерпретатора.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

lflua — "юникодный Lua-интерпретатор"

Post by Shmuel » Tue 08 Aug, 2017 12:53

В шапку добавлен файл lfjit-2.1.0-beta3.7z, содержащий обе версии (x86 и x64) интерпретатора.
Last edited by Shmuel on Tue 08 Aug, 2017 12:53, edited 1 time in total.

Post Reply

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