:SOCKETS

This is a package for SBCL which implements a lot of what is commonly known as the BSD sockets API, as FFI calls to the C library. I don't know what the exact scope of "BSD sockets" is, but I've taken all the bits that make sense. Development and testing thus far has mostly been done on ix86 and Alpha GNU/Linux; feedback from users of other platforms is solicited

Current status

Mon Jan 7 23:33:46 GMT 2002 version 0.5 supports the "file" (a.k.a. unix) domain for sockets, as well as a bundle of other fixes. Get it from cCLan

Sun Jan 7 01:48:37 GMT 2001 version 0.41 (first of the new millennium) is mostly bugfixes and updates to make it work with more recent SBCL versions. User-visible change: SOCKET-ERROR conditions now have ERROR rather than CONDITION as superclass

Mon Jul 3 17:09:16 BST 2000 version 0.4 has more portability fixes (now runs on Solaris with CMUCL, and may work on FreeBSD with SBCL), and returns more meaningful error messages for name service errors. Thanks to Brad Chapman for FreeBSD, Eric Marsden (Solaris), Graham Ward (name service), and my employers for keeping Sparc boxes around that still run Solaris. Linux/Alpha in 0.4.x one day soon

Sat May 20 18:28:21 BST 2000 version 0.3.7b has no functional changes, but thanks to patches from Martin Atzmueller should build more cleanly on SBCL.

Thu May 11 00:51:21 BST 2000 version 0.3.6 lets you set non-blocking mode on a socket.

Mon May 1 02:29:42 BST 2000 version 0.3.5 corrects a nasty bug in the CMUCL version. If you're running 0.3 (and I know you're not, so don't pretend) you will almost certainly want to upgrade

Mon Apr 17 19:22:32 BST 2000 version 0.3 released; get it at sockets-0.3.tar.gz. Changes -

If you want to build it on SBCL you'll need a working defsystem for said platform first. This involves some fiddling around: first you need to get it from CLOCC on Sourceforge then you need to patch it with this diff. Unless you're looking at a version newer than 1.12, in which case they might have patched it already before you got to it.

As of Sat Mar 25 15:54:51 GMT 2000, the system exists to the extent that TCP clients and servers can both be implemented, but its only real advantage over the CMUCL code is the ability to set SO_REUSEADDR. Development directions actively being pursued right now can be seen by looking at the TODO file

Implementation continues. You can find a window onto the current CVS repository at http://loaclhost.telent.net/cgi-bin/cvsweb/telent/sockets, and often an update of what's changed lately at http://www.advogato.org/person/dan/

Motivation

The motive behind developing another sockets support library is twofold:

Design Principles

The initial ideas for API design were provided by Perl's IO::Socket functions, but the perspective shifted somewhat during design; we ended up probably nearer the C API than the Perl one. So: