2010-06-06 17 views
32

Ho giocato con node.js (nodejs) negli ultimi giorni ed è fantastico. Per quanto ne so, lua non ha un'integrazione simile di libev e libio che consente di evitare quasi tutte le chiamate di blocco e di interagire con la rete e il filesystem in modo asincrono.Node.js per lua?

che sto lentamente porting mia implementazione Java di nodejs, ma io sono scioccato che luajit è molto più veloce di JavaScript V8 e usa molto meno memoria!

Immagino che scrivere il mio server in un tale ambiente (molto veloce e reattivo, utilizzo della memoria molto basso, molto espressivo) migliorerà immensamente il mio progetto.

Essendo nuovo a lua, non sono sicuro se esiste una cosa del genere. Apprezzerò qualsiasi suggerimento.

Grazie

risposta

2

È possibile ottenere node.js stile non-blocking IO con lua-handlers.

Ha anche un asincrono. Client HTTP, che rende davvero facile avviare richieste HTTP parallele. Vedere il file test_http_client.lua come un esempio dell'interfaccia client HTTP.

23

Un recente progetto corrispondente è Luvit "(Lua + libUV + jIT = pure awesomesauce) ".

Dal announcement:

questo è fondamentalmente luajit2 + libuv (biblioteca ciclo di eventi dietro nodejs). Si compila come un singolo eseguibile proprio come nodejs e può eseguire file .lua. Ciò che lo rende diverso dalla distribuzione luajit è che ha diversi moduli incorporati aggiunti e alcuni semantica leggermente diversa.

Si noti che non stiamo in esecuzione come uno script CGI per Apache o qualcosa di simile . Lo script lua è il server http. La chiamata viene richiamata ogni volta che viene effettuata una richiesta http sul server.

3

luvit si propone di essere a Lua esattamente ciò che Node.js è in Javascript. Sicuramente un progetto promettente.

6

Si potrebbe anche dare un'occhiata a luv:

https://github.com/richardhundt/luv

dalla lua mailing list:

Come si luv riguardano Luvit - LuaJIT + libuv (Node.js : s/JavaScript/Lua /)?

Non proprio. Luvit prende in prestito pesantemente dall'architettura di node.js (callbacks del reattore, ecc.), I link staticamente contro luajit, fornisce il proprio sistema di moduli ed eseguibile. Luv è solo un modulo Lua che si lega a libuv. La differenza principale è che Luv è più simile a un motore di threading m-n che combina coroutine e thread del sistema operativo mentre si utilizza il ciclo di eventi libuv sotto il cofano.

Quindi, a parte il fatto che entrambi si legano a libuv, non hanno molto in comune lo .

1

Si dovrebbe anche controllare Lapis. È una struttura molto leggera e veloce per OpenResty: http://leafo.net/lapis/

Mi sono davvero divertito e prevedo che avrà un futuro radioso!

Come ci si aspetterebbe con qualsiasi cosa costruita per sfruttare OpenResty, è parametri di riferimento sono spaventosamente bene: https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query

L'autore di Lapis anche scritto un linguaggio CoffeeScript simile per Lua chiamato MoonScript che è piuttosto bella: http://moonscript.org/