Тема: Qlua + luajit
1) Берём luajit (тестировал со сборкой Scilua/ulua, там удобный менеджер пакетов).
2) Для связи с quik - любая библиотека RPC (remote procedure call), как минимум достаточно socket + сериализации таблиц в строку/json. Я остановился на tango-copas ([url]http://github.com/lipp/tango[/url])
3) Для проверки типов аргументов функций - annotate ([url]http://siffiejoe.github.io/lua-annotate/[/url])
Схема примерно такая:
Qlua luajit
------------- -----------------
| callback |---------->| tango server |- - - ->/--------------\
------------- ----------------- | SQLite |
^ | |
| | database |
v | |
---------------- ---------------- | logs |
| main |<-------| Main | - - - ->\--------------/
|tango server| |tango server|
---------------- ----------------
Плюсы:
Так как luajit на порядок быстрее lua, проверка типов получается "бесплатной".
Вообще можно всю логику перенести в luajit, по аналогии со связками qlua + C#/C++
Доступны все библиотеки lua, включая GUI (без танцев с бубнами вокруг dll и mainloop UI/Qlua), SQLite.
Доступна реальная многозадачность.
Можно заменить luajit на что угодно - Python, javascript, Java, C# при сохранении совместимого протокола передачи данных.
Можно заменить Qlua на эмулятор для тестирования и отладки.
Минусы:
Так как main и колбэки работают параллельно, соответствующие им процедуры на стороне luajit нужно запускать в параллельных потоках или даже в отдельных процессах. Для передачи данных между ними нужно использовать либо базу данных, либо те же sockets+json.
Усложняется процедура инициализации и восстановления после сбоев.