

Luajit IO framework - fcambus
http://luajit.io

======
fasteo
Looks 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
Also check it:

[3] [http://tarantool.org](http://tarantool.org)

------
malkia
Recently 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
errno is supposed to thread local, so it should be thread safe.

------
fcambus
Announcement with more details can be found here :
[http://permalink.gmane.org/gmane.comp.lang.lua.general/11626...](http://permalink.gmane.org/gmane.comp.lang.lua.general/116266)

------
ishtu
Speaking 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_co...](http://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp)

~~~
tete
That whole thread is really interesting. Lot's of amazing code bases to read.

------
sciurus
At 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.

------
espadrine
The code features some extensive use of coroutines:
[https://github.com/kingluo/luajit.io/blob/master/lib/ljio/so...](https://github.com/kingluo/luajit.io/blob/master/lib/ljio/socket/tcp.lua#L23)

I wonder how nice they are to use compared to threads, or even to node-style
CPS.

~~~
adrusi
It's basically the same as fibers in node. Also quite similar to goroutines
running on just one cpu.

~~~
charliesome
And also quite similar to kernel threads

~~~
felixgallo
Not at all like kernel threads, which are preemptive and in kernel space.

------
ben_pr
Very nice! I was looking for something like this a year or two ago, on my next
lua/web project I'll try it out.

------
jhawk28
Site appears to be having performance issues. Never good PR for a new IO
framework.

~~~
trynumber9
I 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.

