Узел.js для lua?

Я играл с узлом.js (nodejs) за последние несколько дней, и это фантастика. Насколько я могу судить, lua не имеет аналогичной интеграции libev и libio, что позволяет избежать почти любых блокирующих вызовов и взаимодействовать с сетью и файловой системой асинхронно.

Я медленно портирую свою реализацию java на nodejs, но я в шоке, что luajit намного быстрее, чем V8 JavaScript, и использует гораздо меньше памяти!

Я представляю, что писать мой сервер в такой среде (очень быстрый и отзывчивый, очень низкое использование памяти, очень выразительный) значительно улучшит мой проект.

будучи новым для lua, я просто не уверен, существует ли такая вещь. Я ценю любые советы.

спасибо

9 ответов


посмотреть lualibevent и lua-ev и Lua Gem #27


недавний соответствующий проект 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.


Если я правильно понял вопрос, взгляните на http://openresty.com/


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/