A portable socket library for Common Lisp that provides a unified API across multiple Lisp implementations.
USOCKET is a universal socket library for Common Lisp that provides a portable, consistent API for network programming across diverse Common Lisp implementations. It abstracts away implementation-specific differences in socket functionality, allowing developers to write network code that works reliably on 15+ different Lisp environments including SBCL, Clozure CL, Allegro CL, LispWorks, and ABCL.
Common Lisp developers who need to write portable network applications that must run across multiple Lisp implementations without modification. This includes developers maintaining cross-platform Lisp applications, library authors who want their networking code to work everywhere, and teams using different Lisp implementations in production.
Developers choose USOCKET because it's the most portable socket library for Common Lisp, offering a minimal abstraction layer that works consistently across 15+ implementations while avoiding implementation-specific features that would compromise cross-platform compatibility. It provides comprehensive error handling with specific error conditions and integrates seamlessly with ASDF for easy installation.
Universal socket library for Common Lisp
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports over 15 Common Lisp implementations including SBCL, Clozure CL, and Allegro CL, ensuring network code runs consistently across diverse Lisp environments.
Provides unified functions like socket-connect and socket-listen, abstracting away vendor-specific differences for portable network programming with minimal code changes.
Defines specific error conditions such as connection-refused-error and timeout-error, enabling robust error management in cross-platform applications.
Fully integrated with ASDF for easy installation and dependency management, simplifying project setup and deployment.
Explicitly does not handle external-format, requiring developers to layer additional libraries like flexi-streams for character encoding and newline translation, adding complexity.
On implementations like CMUCL and ABCL, error conditions are poorly mapped; CMUCL raises only simple-errors, and ABCL lacks proper error handling, limiting debugging.
The test suite requires manual setup of variables like host addresses and ports, indicating it's not fully automated or mature, which can hinder development workflows.