[1] https://github.com/fukamachi/woo (4x faster than nodejs) [2] https://lparallel.org/
[1] https://github.com/fukamachi/woo (4x faster than nodejs) [2] https://lparallel.org/
In other words, its main asset, speed, is bottlenecked as soon as you need to do things.
Wookie, the original server for Turtl, was built on top of cl-async which gave it access to all the other async libs built for CL. Woo wouldn't have been particularly useful for us.
It seems to me you're using Woo as an Nginx replacement, not as a CL app server, which makes total sense to me after you described the model you're using.
I've been asked multiple times why I "didn't just use Woo" by people who don't understand that Turtl's server was async and Woo doesn't support async.
High level, yes. Mid/low-level, it really depends on what you're doing. If you're serving static files, sure, use Nginx/Woo. If you're running an evented CL application that deals mostly with network i/o, threading is going to be a tank when you need a hummingbird.
I built cl-async/wookie as parallels for nodejs/express in common lisp.
If so, I agree a lot with what you said!
I asked for clarification on the distinction between "async" and "using threading at a lower level", which, for me, are equivalent things. The distinction, to the extent there is one, being that "async" often means "an existing library or language feature versus rolling it myself".
This is distinct from thread pool models where you still block the entire thread for an IO call. While a sufficiently smart scheduler can probably then context switch out of this thread onto something else as the thread waits for an IO response, this is distinct from having the event directly wake up a handler.
That's usually what I associate as the difference between an event loop model and a threaded model. You can certainly make your threads highly granular and isolate each distinct blocking operation to its own thread pool, but it's different from actually being notified and woken up for events.
> I think you're responding to the wrong person as I didn't "try to talk them into using granular thread pools".
Yeah I think my wires got a bit crossed there. Apologies. That's what I get for being snarky while not paying full attention.