Node.js для lua?

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

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

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

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

Спасибо

Ответ 2

Недавний соответствующий проект Luvit "(Lua + libUV + jIT = pure awesomesauce)".

Из объявления :

это в основном luajit2 + libuv (библиотека цикла событий за nodejs). Он компилируется как один исполняемый файл, как nodejs, и может запускать .lua файлы. Что отличает его от акций luajit В дистрибутиве добавлено несколько встроенных модулей, а некоторые немного отличающаяся семантика.

Обратите внимание, что мы не запускаемся как CGI script для apache или что-то еще как это. Lua script является http-сервером. Вы получаете callback вызываются каждый раз, когда HTTP-запрос выполняется сервером.

Ответ 4

Вы также можете посмотреть 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, у них нет много общего.

Ответ 6

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

Ответ 7

luvit стремится быть Lua именно тем, что Node.js принадлежит Javascript. Определенно перспективный проект.

Ответ 8

Вы можете получить node.js неблокирующий IO стиль с lua-handlers.

У него даже есть асинхронный. HTTP Client, что позволяет легко запускать параллельные HTTP-запросы. См. Файл test_http_client.lua в качестве примера клиентского интерфейса HTTP.

Ответ 9

Вы также должны проверить 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/