Узел.js для lua?
Я играл с узлом.js (nodejs) за последние несколько дней, и это фантастика. Насколько я могу судить, lua не имеет аналогичной интеграции libev и libio, что позволяет избежать почти любых блокирующих вызовов и взаимодействовать с сетью и файловой системой асинхронно.
Я медленно портирую свою реализацию java на nodejs, но я в шоке, что luajit намного быстрее, чем V8 JavaScript, и использует гораздо меньше памяти!
Я представляю, что писать мой сервер в такой среде (очень быстрый и отзывчивый, очень низкое использование памяти, очень выразительный) значительно улучшит мой проект.
будучи новым для lua, я просто не уверен, существует ли такая вещь. Я ценю любые советы.
спасибо
9 ответов
недавний соответствующий проект Luvit " (Lua + libUV + jIT = pure awesomesauce)".
с объявление:
Это в основном luajit2 + libuv (библиотека цикла событий позади nodejs). Он компилируется как один исполняемый файл, как nodejs и может бежать.файлы lua. Что отличает его от запаса luajit дистрибутив имеет несколько встроенных модулей, добавленных и некоторые немного разный семантика.
обратите внимание, что мы не работаем как скрипт CGI для apache или что-то еще как это. Сценарий lua is сервер http. Ты получишь ... обратный вызов вызывается каждый раз при выполнении http-запроса на сервер.
похоже, что следующее-Это именно то, что я искал: LuaNode https://github.com/ignacio/LuaNode
вы также можете посмотреть на luv:
https://github.com/richardhundt/luv
из списка рассылки lua:
Как luv относится к Luvit-LuaJIT + libuv (Node.js: S/JavaScript/Lua/)?
на самом деле нет. Luvit сильно заимствует из узла.архитектура и JS-это (обратные вызовы реактора и т. д.), ссылки статически против luajit, обеспечивает это собственная модульная система и исполняемый файл. Luv это просто модуль Lua, который связывается с libuv. Ключевое различие заключается в том, что Luv больше похож на m-n threading engine, объединяющий потоки coroutines и OS при использовании цикл событий libuv под капотом.
таким образом, кроме того, что они оба привязываются к libuv, у них нет много общего.
возможно, вы захотите взглянуть на Luvit или Гусак на Lua Github сайт. Я думаю, что он использует подход реализации Node.функциональность js прямо внутри Lua. Вы пишете код Lua на стороне клиента и на стороне сервера. Вот описание подход Luvit к узлу doing.функциональность js в Lua.
luvit стремится быть к Lua точно, какой узел.js - это Javascript. Определенно перспективный проект.
вы можете сделать узел.JS стиль неблокирующий IO с lua-обработчики.
Он даже имеет асинхронный. HTTP-клиент, что упрощает запуск параллельных 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/