[Openmcl-devel] 0.13.x vs. 0.14.x

Gary Byers gb at clozure.com
Mon Jan 5 02:23:50 PST 2004

On Mon, 5 Jan 2004, Sven Van Caekenberghe wrote:
> A quick fix seems to be to comment out the :type spec in
> acl-compat/mcl/acl-socket-openmcl.lisp works:
> (defclass server-socket ()
>    ((socket :initarg :socket :reader socket
>             :initform (error "No value supplied for socket"))
>     (port ;; :type fixnum
> 	 :initarg :port
> 	 :reader port
>           :initform (error "No value supplied for port"))))

That would prevent the type error; it's not clear if anything might
depend on the server-socket having a valid PORT slot.  (The
PRINT-OBJECT method for SERVER-SOCKET does; it doesn't appear that
anything more critical in that file does, but I haven't looked at
other files yet.) It might be preferable to fix the MAKE-SOCKET
function a little further down in the file.

> I would think this is related to the bug I reported earlier.

I actually suspected that as well, but was mistaken.

In this case, an initarg (:PORT) was explicitly provided with a NIL
value, and the slot in question had a :TYPE of fixnum.

The bug you reported earlier (which is fixed in CVS, BTW) occurred
when no initarg was provided and an initform was; rather than
type-checking the initform, it typechecked a similarly-named local
variable whose value would always be NIL in that situation.

> >
> >> Note that I get the same error if I execute:
> >>
> >> (aserve-example::start-server :port 2001)
> >>
> >> that is, without the suggested :chunking nil, so I think the error has
> >> nothing to do with the suggestion in INSTALL.lisp that start-server be
> >> called with :chunking nil under openmcl.
> >>
> >
> > Someone seems to have added chunking support for openmcl recently.
> > The CVS checkin comment notes that they accepted a speed loss in
> > doing so; in my model of things, that seems to defeat one of the
> > main purposes of using chunked transfer encoding.
> That troubles me as well - performance loss is never good, and
> openmcl+paserve was quite fast *and* reliable!

As I read the code, the primary reason for the SERVER-SOCKET class to
exist is to enable its ACCEPT-CONNECTION method to wrap a chunking layer
around the stream that the underlying socket's method returns.  This
seems to happen unconditionally; if so, that's probably a good argument
for doing http chunking at a lower level.

> > Some of these changes seem to have been made just before the holidays;
> > that's certainly my excuse for bugs in 0.14-031220 ...
> Sven

More information about the Openmcl-devel mailing list