I haven't compiled on SBCL before. Soon I hope to port it
(patches gladly accepted). It looks like it is having trouble
compiling the ISAAC random number generator which lives in
bundled/isaac.lisp. That error message makes it look like it
is tripping up on unsigned-byte type declarations? I'll try
to give SBCL a go soon but it's not high on my priority list,
sorry.
BTW, I think 1.0.2 is a bit dated. Maybe an upgrade would
help by fixing some old bugs but with SBCL you'll probably
have new bugs to deal with. ;)
Good luck,
Doug
PS. There are several places in the source where +cmu and
+clisp are used to target those implementations. +sbcl
clauses will need to be added when AW is ported.
> --~--~---------~--~----~------------~-------~--~----~
> You received this message because you are subscribed to the Google Groups "antiweb" group.
> To post to this group, send email to ant...@googlegroups.com
> To unsubscribe from this group, send email to antiweb+u...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/antiweb?hl=en
> -~----------~----~----~----~------~----~------~--~---
Hi Watt,
Thanks for looking into SBCL. Looks like SBCL might work if we
explicitly specify integer ranges in isaac.lisp instead of
using unsigned-byte. I promise I will look into AW portability
soonish. Now that I have a 64 bit chip I wanna run it on
ClozureCL/linux and I'll eventually try SBCL too. My biggest concern
with both these implementations is threading. Antiweb doesn't
use threads at all and it will be dangerous if you incorporate
lisp libraries that use threads. 99+% of fatal lisp crashes are
somehow related to threads. Threads (by which I mean pre-emptively
scheduled, shared-memory processes) are like heroin:
Just don't do it. ;)
AW runs great on CMUCL and CLISP for me and that's all I'm really
concerned with at the moment. I'm working on Apache compatible
axs logs now. This should be in BETA8.
Good luck,
Doug
PS. The isaac.lisp file is only needed to create session IDs
and other things that require good random numbers. If you
don't need this you can leave isaac.lisp out of build.lisp
and everything else should work (except for prolly a few
function undefined warnings when it compiles antiweb.lisp).
I'm forwarding this message to the list. Thanks for questions
but under most circumstances, it is probably best to ask
questions on the list.
On Fri, Oct 17, 2008 at 08:58:29PM -0700 or thereabouts, Watt wrote:
> I totally agree on your opinion about threads. This leads me to have
> a follow up question. Would it be a given that the code that is
> called within AWP will be donw in process and not thread by default?
Each AW process runs exactly one thread. When you are computing
things, make sure you don't do anything that will take a long time
(especially don't use the network) because it will prevent the
single thread from doing other things. For doing things like
sending email, long running computational tasks, queries that
require remote data-base access, etc, I recommend using a CGI
script. However, Antiweb's BerkeleyDB support is extremely fast
and it IS designed to work in the AW process for most workloads.
Also, AW is designed to handle many vhosts. A technique I
use is to break a site up into lots of processes. For example:
A) A main HTML generating process that compiles and serves
the AWP files.
B) A static.mydomain.com which hosts things like images,
JS libraries, etc. It has a low keepalive time because
these files are cached by the browser anyways so keepalives
aren't very important.
C) A data.mydomain.com process that handles small queries to
BerkeleyDB and replies with javascript. This has as high
a keepalive as possible for AJAX optimisation. (good
candidate process for CMUCL)
D) A contact.mydomain.com process that spawns perl scripts
for sending emails to us. (good candidate for CLISP)
E) Others depending on the exact application.
Remember that async servers like AW, lighttpd, and nginx
compared to process(or thread)-per-connection servers like
Apache have much different performance characteristics.
You can run many completely separate instances of the server
because of their low memory requirements per connection.
> On Clozure port, would that be officially released? That will be
> great.
When I get around to it, yes, it will be in the subsequent
release (probably not the next one).
Doug