[hunchentoot-devel] Hunchentoot and OpenMCL
Lennart Staflin
lstaflin at gmail.com
Fri May 25 16:07:33 UTC 2007
On 5/25/07, Edi Weitz <edi at agharta.de> wrote:
> Hi,
>
> You're asking at the right moment... :)
>
> It seems we currently have problems with OpenMCL and I can't do much
> about it as I don't have a Mac. If you check the mailing list
> archives of tbnl-devel and flexi-streams-devel of this month, you'll
> find all the details.
>
Flexi-streams passes all its tests on the latest OpenMCL, I don't
think that is the problem.
> I was close to removing OpenMCL support from Hunchentoot, but if you
> can help fixing the issues, that's fine of course.
>
> > Any experience converting a project from aserve to Hunchentoot?
>
> Not me.
>
> > Probably the timer functions have been removed in some of the later
> > versions of OpenMCL. Unless someone has a fix already I will dig
> > into this.
Or possibly these functions where never in OpenMCL. I think these
functions (ccl::make-timer-request etc.) are defined in acl-compat,
and some how never made it over to port-mcl. They are in a file called
mcl-timers.lisp in acl-compat. Perhaps, if licensing allows, you could
include that file.
Reading the mailing list archive, I noticed another problem that I also had.
... i get an error that says: Unknown http return code: 500
I have tracked this down. It is not related to flexi-streams, but to a
defconstant in specials.lisp:
(defconstant +http-reason-phrase-map+ (make-hash-table)
When the file is complied and loaded that hash table is empty. I
haven't checked with the OpenMCL developers, but I think this might be
invoking undefined behavior.
CLHS: "An implementation may choose to evaluate the value-form at
compile time, load time, or both."
If the compiler evaluates the (make-hash-table) both at compile time
and load time, and optimizes away the constant lookup (directly uses
that hash table as a literal) in the setter forms. The result would be
as observed in openmcl.
I think either of these would work:
(defparameter +http-reason-phrase-map+ (make-hash-table)
(defconstant +http-reason-phrase-map+ '#.(make-hash-table)
With these changes I can now get the test examples to work.
--
//Lennart Staflin
More information about the Tbnl-devel
mailing list