私の理解では、IOLibとusocketの抽象化レベルはほぼ同じです。IOLibはOSバックエンドソケットを使用しますが、usocketはLisp-runtime-backendソケットを使用します。
特定のユースケースにはどちらが良い選択かと思います。
たとえば、優れた同時実行性を必要とするサーバーや、移植性に重点を置いたクライアントなどです。
このブログ投稿はあなたの質問に答えていると思います。
要約すると、すべてのプラットフォームと実装 (「すべて」の合理的な定義) で動作する必要があるライブラリを作成している場合は、usocket を使用します。Unix プラットフォームでの他の使用例では、おそらく IOLib の方が用途が広いでしょう。たとえば、Unix ドメイン ソケットとノンブロッキング IO をサポートします。
ところで、私は cl-redis を usocket から IOLib に、またその逆に移植しました。API は非常に似ていますが、わずかに異なります。
USOCCKET のコードは、依存関係を含め、IOLib よりもはるかに小さく単純です。IOLib は、たとえば一部の *BSD には存在しない Linux 機能への CFFI バインディングを使用します。
他のすべての条件が同じであれば、最小限のソース コードは常に望ましいものです。なぜなら、それはバグが少なく、理解しやすく、ハッキングしやすいからです。コードが単純なほど、デバッグが速くなり、デプロイがより簡単になります。
それ以外は、どちらもほぼ同じように機能するようです。どちらも、単一のスレッド内で複数の接続を処理するために kqueue/select を提供します。ソケットでUNIXファイル記述子を渡すなど、より高度な機能についてはわかりません。
Linux だけが好きな場合は IOLib または USOCKET を使用し、Linux および/または *BSD、またはその他の商用オペレーティング システムをターゲットにしている場合、またはシンプルで愚かな状態を保ちたい場合は USOCCKET を使用してください。
あなたの主な目標が移植性である場合、このページに記載されているように、明らかに usockets がより良い選択です:
USOCCKET は、BSD スタイルのソケット用のネットワークポータビリティレイヤーです。