2010-06-06 7 views
32

Ich habe die letzten paar Tage mit node.js (nodejs) gespielt und es ist fantastisch. Soweit ich das beurteilen kann, hat lua keine ähnliche Integration von libev und libio, wodurch man fast alle blockierenden Aufrufe vermeiden und asynchron mit dem Netzwerk und dem Dateisystem interagieren kann.Node.js für Lua?

Ich portiere langsam meine Java-Implementierung zu Nodejs, aber ich bin schockiert, dass Luajit ist viel schneller als V8 JavaScript und verwendet weit weniger Speicher!

Ich stelle mir vor, meinen Server in einer solchen Umgebung zu schreiben (sehr schnell und reaktionsschnell, sehr geringe Speicherauslastung, sehr ausdrucksvoll) wird mein Projekt immens verbessern.

Da ich neu bei Lua bin, bin ich mir einfach nicht sicher, ob so etwas existiert. Ich werde alle Hinweise zu schätzen wissen.

Dank

Antwort

2

Sie node.js Stil non-blocking IO mit lua-handlers bekommen kann.

Es hat sogar einen Async. HTTP-Client, wodurch es sehr einfach ist, parallele HTTP-Anfragen zu starten. Sehen Sie sich die Datei test_http_client.lua als Beispiel für die HTTP-Client-Schnittstelle an.

23

Ein kürzlich entsprechendes Projekt ist Luvit „(Lua + libUV + jIT = reine Awesomesauce) ".

Vom announcement:

das ist im Grunde luajit2 + libuv (die Ereignisschleife Bibliothek hinter NodeJS). Es kompiliert als eine einzelne ausführbare Datei wie Nodejs und kann 0.3..LUA-Dateien ausführen. Was unterscheidet es von der Aktie luajit Verteilung ist es mehrere eingebaute Module hinzugefügt und einige etwas andere Semantik.

Beachten Sie, dass wir nicht als CGI-Skript zu Apache oder irgendetwas so laufen. Das Lua-Skript ist der HTTP-Server. Sie erhalten Ihren Rückruf jedes Mal, wenn eine HTTP-Anfrage an den Server gestellt wird.

3

luvit soll zu Lua genau sein, was Node.js zu Javascript ist. Definitiv ein vielversprechendes Projekt.

6

Sie könnten auch einen Blick auf luv haben

Wie luv zu Luvit bezieht - luajit + libuv (Node.js : s/JavaScript/Lua /)?

Es ist nicht wirklich. Luvit lehnt sich stark an die Architektur von node.js an (Reactor-Callbacks usw.), bindet statisch gegen Luajit, stellt zur Verfügung, es ist ein eigenes Modulsystem und ausführbar. Luv ist nur ein Lua-Modul, das an libuv bindet. Der Hauptunterschied ist, dass Luv eher eine m-n Threading-Engine ist, die Coroutinen und OS-Threads kombiniert, während sie die libuv-Ereignisschleife unter der Haube verwendet.

So anders als die Tatsache, dass sie beide an libuv binden, haben sie viel gemeinsam.

1

Sie sollten auch Lapis überprüfen. Es ist ein sehr leichtes und schnelles Framework für OpenResty: http://leafo.net/lapis/

Ich habe es wirklich genossen und voraussagen, dass es eine helle Zukunft haben wird!

Wie Sie mit etwas gebaut erwarten OpenResty zu nutzen, ist es Benchmarks sind wahnsinnig gut: https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query

Der Autor von Lapis auch einen Coffeescript-ähnlichen Sprache geschrieben für Lua MoonScript genannt, was ganz schön ist: http://moonscript.org/