8 ms·
Luajit IO framework
- fcambus 12y agoAnnouncement with more details can be found here : http://permalink.gmane.org/gmane.comp.lang.lua.general/116266 http://permalink.gmane.org/gmane.comp.lang.lua.general/11626...
- ben_pr 12y agoVery nice! I was looking for something like this a year or two ago, on my next lua/web project I'll try it out.
- sciurus 12y agoAt a time when nginx (at least the commercial version) is starting to emphasize nginx+javascript instead of nginx+lua, it's interesting to see a project try the opposite approach: take the nginx+lua combination and replace nginx with more lua.
- fasteo 12y agoLooks nice but, why would I use this instead of openresty ? If I were looking for a stand-alone -no nginx- solution: Why would I use this instead of lev[1] or luvit[2] ? [1] https://github.com/connectFree/lev/ https://github.com/connectFree/lev/ [2] https://luvit.io/ https://luvit.io/
- vasquque 12y agoAlso check it: [3] http://tarantool.org http://tarantool.org
- espadrine 12y agoThe code features some extensive use of coroutines: https://github.com/kingluo/luajit.io/blob/master/lib/ljio/socket/tcp.lua#L23 https://github.com/kingluo/luajit.io/blob/master/lib/ljio/so... I wonder how nice they are to use compared to threads, or even to node-style CPS.
- adrusi 12y agoIt's basically the same as fibers in node. Also quite similar to goroutines running on just one cpu.
- charliesome 12y agoAnd also quite similar to kernel threads
- felixgallo 12y agoNot at all like kernel threads, which are preemptive and in kernel space.
- jhawk28 12y agoSite appears to be having performance issues. Never good PR for a new IO framework.
- trynumber9 12y agoI wouldn't make too much of that. For all we know it could be running on a Raspberry Pi. It might be slow, but their public site is not the way to tell.
- malkia 12y agoRecently I was made aware of one gotcha of using lua/luajit from multiple threads (with lua/luajit vm context per thread). And the problem is simply due to underlying libc thread safety which I (finally) understood why Python did with it's global (per all VM's in the process) lock. Simply - things like getenv() are not-thread safe, and not guaranteed to be if there is setenv(). Not lua/luajit's fault, but might be seen as such (higher level language, supposed to guard folks from things like that). It suddenly changed my thinking of VM's in general and their interaction with the standard library and the OS. (One can say maybe every function from libc/msvcrt/etc. must be thread-safe, but then there are things like errno, or getenv() returning pointer).
- yoklov 12y agoerrno is supposed to thread local, so it should be thread safe.
- ishtu 12y agoSpeaking of Lua, here is a Lua 5.1 source code guide from creator of LuaJIT [1]. Really nice open source codebase to learn from. [1] http://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp http://www.reddit.com/comments/63hth/ask_reddit_which_oss_co...
- tete 12y agoThat whole thread is really interesting. Lot's of amazing code bases to read.