3 ms·
It's not really written in Common Lisp. "built on top of libev" The lisp part is a thin ffi wrapper on top of lots of C code. Not than an ffi wrapper around
by kjksf 12y ago
It's not really written in Common Lisp.
"built on top of libev"
The lisp part is a thin ffi wrapper on top of lots of C code.
Not than an ffi wrapper around C code isn't useful, but it's C code that does all the heavy lifting there.
- sanxiyn 12y agoIndeed, Node.js is a thin FFI wrapper on top of lots of C (and C++) code that does all the heavy lifting, but it is still useful. I think Woo is useful the same way.
- aikah 12y agothe title implies "the heavy lifting" is written in LISP. Every node user knows the net lib nodejs uses isnt written in javascript.And most also know that in order for node to be useful,scripts should do as little as possible and delegate any serious operation to C/C++.
- eudox 12y ago>the title implies "the heavy lifting" is written in LISP. Woo uses fast-http[0], quri[1], and http-body[2], all written in pure Common Lisp and very, very fast. [0]: https://github.com/fukamachi/fast-http https://github.com/fukamachi/fast-http [1]: https://github.com/fukamachi/quri https://github.com/fukamachi/quri [2]: https://github.com/fukamachi/http-body https://github.com/fukamachi/http-body
- sanxiyn 12y agoAlso note that HTTP parsing is done completely in Common Lisp, not in C. Woo uses fast-http, which is by the same author. https://github.com/fukamachi/fast-http https://github.com/fukamachi/fast-http
- sedachv 12y agoAnd libev is a C wrapper around epoll and other system calls. There's not much code needed to use epoll directly, that's what John Fremlin's TPD2 web server (the previous "world's fastest Common Lisp web server") did: https://github.com/vii/teepeedee2/blob/master/src/io/epoll.lisp https://github.com/vii/teepeedee2/blob/master/src/io/epoll.l... What libev provides is a very portable wrapper around all the different non-blocking IO system calls in all the different Unixes. That's the hard part.