IOLib vs usocket

common-lisp, network-programming

Solution

I think, this blogpost answers your question.

To sum up, if you're writing a library, which should work on all platforms and implementations (with a reasonable definition of "all"), use usocket. For other use-cases on the Unix platform, IOLib is probably more versatile. For example, it supports Unix domain sockets, as well as non-blocking IO.

By the way, I had ported cl-redis from usocket to IOLib and back - the API is very similar, although slightly different.

Problem

In my understanding, IOLib and usocket have almost same abstraction level. IOLib uses OS-backend sockets, on the other hand usocket uses Lisp-runtime-backend socket. I just wonder which is a better choice for particular use cases. For example, a server which needs great concurrency, or a client which focuses on portability, etc.

Original source