usocket supports more backends than trivial-sockets. The latter implements different feature-sets for different backends while the former supplies consistent functionality for all backends.
Feature | In trivial-sockets? | In usocket? | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
ABCL | ACL | clisp | CMUCL | LispWorks | OpenMCL | SBCL | overall | |||
Client side tcp streams | :element-type | Yes | Yes* | Yes | Yes | Yes | Yes* | Yes | Yes | Yes |
:external-format | No | No | Yes | No | No | No | No | No | No | |
binding local interface/port | No | Yes | No | No | No | Yes | Yes | No | Yes | |
Server socket creation | Binding specific local port | Yes | ||||||||
Binding specific local interface | No | Yes | No | Yes | No | Yes | Yes | No | Yes | |
Selectable backlog length | No | Yes | No | Yes | No | Yes | Yes | No | Yes | |
reuse-address | Yes | Yes | No* | Yes | Yes | Yes | Yes | No* | Yes* | |
:element-type for created connections | No | Yes | ||||||||
Accepting connections | :element-type for created stream | Yes | Yes* | Yes | Yes | Yes | Yes* | Yes | Yes | Yes* |
:external-format for created stream | No | No | Yes | No | No | No | No | No | No |
In summary: there are only a very limited number of features you can depend on to work on all platforms supported by trivial-sockets. While usocket doesn't support all features, you can depend on the features to be available.