Hi Erik,
thank you for committing the changes I submitted.
Deadlines and timeouts are of particular importance to me, so let me describe what the difference between the two are:
A stream timeout, as it is commonly available (i.e. in Lispworks or CCL), is usually implemented by setting low-level timeouts on the file descriptors underlying the stream. The result of this is that I/O operations on the stream level may take a lot longer than the timeouts specified, as stream operations may map to a series of low-level file descriptor calles that are governed by a timeout.
Stream deadlines, as implemented in CCL 1.2, are specified as absolute time in the future. The meaning of a stream deadline is that no I/O operation on the stream should be possible after the deadline time.
Deadlines are useful if one wants to limit overall request execution times in systems that initiate outgoing network transactions without having to resort to asynchronous mechanisms which are inherently risky and less robust than synchronous ones. I hope that other Lisp implementors can be convinced to support them in the future, but for the moment, I'd be fine if usocket supports deadlines for CCL, as that is what the application I am working on runs on.
I can revisit my patch so that the deadline argument is supported on all platforms, generating an error for those platforms that can't support it.
Just as an unrelated heads up: I am going to port the Hunchentoot http server over to usocket for the same reason. We want to have a fixed upper bound on http request reading and response writing as well.
Thanks again! Hans