Hi all. I'm doing a http(s)/web framework completely in Lua. All syscalls are done directly via the FFI, this includes socket and epoll handling. SSL support is also in there :). And its actually coming along nicely, obviously faster than Tornado on Pypy. I've lately been running LuaJIT with -jdump. What I keep seeing obviously when benchmarking the framework itself (no processing in requests except push "Hello world" to socket) is that the traces are aborted frequently because of NYI bytecode. What I see most of the time is: 0004 . UGET 3 0 ; ffi 0005 . TGETS 3 3 0 ; "new" 0006 . KSTR 4 1 ; "struct epoll_event[?]" 0007 . MOV 5 2 0008 . CALL 3 2 3 0000 . . FUNCC ; ffi.new ---- TRACE 6 abort epoll_ffi.lua:144 -- NYI: unsupported C type conversion This is basically a trace starting at the top of the event loop and break at the end when the array for epoll_wait is allocated. Another one that keeps popping up is bc 51: 0008 . . . TGETS 3 0 2 ; "io_loop" 0009 . . . MOV 4 3 0010 . . . TGETS 3 3 3 ; "add_callback" 0011 . . . FNEW 5 4 ; iostream.lua:353 ---- TRACE 9 abort iostream.lua:363 -- NYI: bytecode 51 This is from creating lambda functions. My questions are; should I care if they are not implemented? Should I rewrite the framework to avoid lambdas? The API is mostly callbacks based at the moment for convinience. Is there a way to avoid the two aborts mentioned? Otherwise a great piece of engineering and many thanks to Mike! /John