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.