Size: a a a

2020 October 24

EV

Eduard Voronkin in pro.lua
и что внутри таких функций нельзя звать функции, которые делают yield
источник

EV

Eduard Voronkin in pro.lua
а я то из обычной функции делаю lua_pcall, которая делает yield
т.е., как я понял из доки, проблема возникает, когда последовательность вызовов такая:
Lua -> C -> Lua.yield
источник

EV

Eduard Voronkin in pro.lua
А у меня
С -> Lua.yield
sleep(n);
С-> Lua.resume
источник

EV

Eduard Voronkin in pro.lua
ну и error`a у меня никакого от lua_pcall нет. Как сказано в доке
источник

EV

Eduard Voronkin in pro.lua
Lua raises an error whenever it tries to yield across an API call
источник

S

Snusmumriken in pro.lua
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов.
Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
источник

S

Snusmumriken in pro.lua
Правда, coco делает корутины немного тяжелее чем были. Но это принципиально только если у нас модные функциональные техники "а давайте наплодим стотыщ короткоживущих лямбдокорутин на каждый чих".
источник

AM

Alexey Melnichuck in pro.lua
Snusmumriken
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов.
Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
Можно начиная с Lua 5.2.
источник

N

Nikita in pro.lua
Всем привет, как скомпилировать lua, при попытке это сделать, я на выходе получаю исполняемый файл для винды, но он не работает
источник

AZ

Aydar Zarifullin in pro.lua
Nikita
Всем привет, как скомпилировать lua, при попытке это сделать, я на выходе получаю исполняемый файл для винды, но он не работает
Чем компилируешь?
источник

N

Nikita in pro.lua
Aydar Zarifullin
Чем компилируешь?
lyac
источник

AZ

Aydar Zarifullin in pro.lua
Nikita
lyac
luac создает файл с байткодом, без lua его не запустить
источник

AZ

Aydar Zarifullin in pro.lua
Nikita
lyac
Если нужно прям exe собрать то

Качаешь https://github.com/noahp/srlua-mingw/archive/master.zip
Распаковываешь
Кидаешь glue.exe и srlua.exe в папку со скриптом
Открываешь консоль
Переходишь в ней в папку со скриптом
Выполняешь команду glue.exe srlua.exe имя_скрипта.lua имя_экзешника.exe
источник

N

Nikita in pro.lua
Aydar Zarifullin
luac создает файл с байткодом, без lua его не запустить
а как через lua его запустить тогда?
источник

AZ

Aydar Zarifullin in pro.lua
Nikita
а как через lua его запустить тогда?
lua luac.out (или как там файлик на выходе называется)
источник

N

Nikita in pro.lua
Aydar Zarifullin
lua luac.out (или как там файлик на выходе называется)
Спасибо
источник

EV

Eduard Voronkin in pro.lua
Snusmumriken
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов.
Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
я победил свою проблему с помощью lua_newthread + lua_resume
источник

AZ

Aydar Zarifullin in pro.lua
Nikita
Спасибо
Несколько сообщений выше переписал инструкцию, для совсем простых скриптов подойдет.
источник

VM

Vadim Misbakh-Solovi... in pro.lua
Nikita
Всем привет, как скомпилировать lua, при попытке это сделать, я на выходе получаю исполняемый файл для винды, но он не работает
а зачем тебе компилировать?
источник

VM

Vadim Misbakh-Solovi... in pro.lua
если хочешь скрыть исходники, то ты этого не сделаешь
источник