2010-06-06 32 views
32

過去幾天我一直在玩node.js(nodejs),這太棒了。據我所知,lua沒有類似libev和libio的集成,這使得我們幾乎可以避免任何阻塞調用,並以異步方式與網絡和文件系統進行交互。Node.js for lua?

我正在慢慢地將我的java實現移植到nodejs,但我很震驚luajit比v8 JavaScript快得多,並且使用的內存少得多!

我想象在這樣的環境中寫入我的服務器(非常快速和響應,內存使用率非常低,非常富有表現力)可以提高我的項目水平。

作爲lua的新手,我不確定這樣的事情是否存在。我會欣賞任何指針。

感謝

回答

2

你可以得到的node.js風格非阻塞IO與lua-handlers

它甚至有一個異步。 HTTP客戶端,這使得啓動並行HTTP請求變得非常簡單。請參閱test_http_client.lua文件作爲HTTP客戶端界面的示例。

23

最近的一個相應的項目是Luvit「(LUA + libUV + jIT = pure awesomesauce)「。

announcement

這基本上是luajit2 + libuv(事件循環後面 的NodeJS庫)。它像nodejs一樣編譯爲單個可執行文件,並且可以運行.lua文件。是什麼使它不同於股票luajit 分佈是它有幾個內置模塊添加和一些略有不同的語義。

請注意,我們沒有像CGI腳本那樣運行到apache或任何類似的東西 。 lua腳本是http服務器的。每次向服務器發出http請求時,都會調用您的 回調。

3

luvit的目標是要Lua究竟是什麼Node.js到Javascript。絕對是一個有前途的項目。

6

你也可以看看LUV:

https://github.com/richardhundt/luv

從LUA郵件列表:

如何LUV涉及到Luvit - LuaJIT + libuv(Node.js的:S /的JavaScript /的Lua /)?

它並不是真的。 Luvit借用node.js的體系結構 (反應器回調等),靜態鏈接到luajit,提供 它自己的模塊系統和可執行文件。 Luv只是一個與libuv綁定的Lua模塊。關鍵的區別在於Luv更像是一個m-n線程引擎,結合了協程和操作系統線程,同時在底層使用了libuv事件循環。

因此,除了它們都綁定到libuv的事實之外,它們沒有很多共同之處。