Ответ 1
Смотрите lualibevent и lua-ev и также Lua Gem # 27
Я играл с node.js(nodejs) в течение последних нескольких дней, и это фантастика. Насколько я могу судить, lua не имеет аналогичной интеграции libev и libio, которые позволяют избежать почти любых блокирующих вызовов и взаимодействовать с сетью и файловой системой асинхронным образом.
Я медленно переношу свою реализацию java на nodejs, но я шокирован тем, что luajit намного быстрее, чем v8 JavaScript и использует гораздо меньше памяти!
Я думаю, что писать мой сервер в такой среде (очень быстрое и отзывчивое, очень малое использование памяти, очень выразительное) значительно улучшит мой проект.
Будучи новичком в lua, я просто не уверен, существует ли такая вещь. Буду признателен за любые указатели.
Спасибо
Смотрите lualibevent и lua-ev и также Lua Gem # 27
Недавний соответствующий проект Luvit "(Lua + libUV + jIT = pure awesomesauce)".
Из объявления :
это в основном luajit2 + libuv (библиотека цикла событий за nodejs). Он компилируется как один исполняемый файл, как nodejs, и может запускать .lua файлы. Что отличает его от акций luajit В дистрибутиве добавлено несколько встроенных модулей, а некоторые немного отличающаяся семантика.
Обратите внимание, что мы не запускаемся как CGI script для apache или что-то еще как это. Lua script является http-сервером. Вы получаете callback вызываются каждый раз, когда HTTP-запрос выполняется сервером.
Похоже, именно то, что я искал: LuaNode https://github.com/ignacio/LuaNode
Вы также можете посмотреть luv:
https://github.com/richardhundt/luv
из списка рассылки lua:
Как luv относится к Luvit - LuaJIT + libuv (Node.js: s/JavaScript/Lua/)?
На самом деле это не так. Luvit сильно зависит от архитектуры node.js(обратные вызовы реактора и т.д.), статические ссылки на luajit, обеспечивает это собственная модульная система и исполняемый файл. Luv - это просто модуль Lua, который связывается с libuv. Главное отличие заключается в том, что Luv больше напоминает m-n поточный двигатель, совмещающий сопрограммы и потоки ОС при использовании цикл libuv под капотом.
Иначе, чем тот факт, что они оба связываются с libuv, у них нет много общего.
Вы можете посмотреть Luvit или gander на сайте Lua Github, Я думаю, что он использует подход, реализующий функциональность Node.js прямо внутри Lua. Вы пишете код Lua на стороне клиента и на стороне сервера. Вот описание подхода Luvit к выполнению функциональных возможностей Node.js в Lua.
Если я правильно понял вопрос, посмотрите http://openresty.com/
luvit стремится быть Lua именно тем, что Node.js принадлежит Javascript. Определенно перспективный проект.
Вы можете получить node.js неблокирующий IO стиль с lua-handlers.
У него даже есть асинхронный. HTTP Client, что позволяет легко запускать параллельные HTTP-запросы. См. Файл test_http_client.lua в качестве примера клиентского интерфейса HTTP.
Вы также должны проверить Lapis. Это очень легкая и быстрая основа для OpenResty: http://leafo.net/lapis/
Я действительно наслаждался этим и предсказывал, что у него будет светлое будущее!
Как и следовало ожидать, с чем-либо, созданным для использования OpenResty, эталонные оценки безумно хороши: https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query
Автор Lapis также написал язык, подобный CoffeeScript, для Lua под названием MoonScript, который довольно приятный: http://moonscript.org/