From: Edmond Dantes
Subject: What is the best Open-Source Lisp?
Date: 
Message-ID: <1140532016_5693@news-east.n>
I am looking to delve deeply into Lisp to solve some rather esoteric
problems and to do mathematical research into set-theoretic issues. And
more.

Here are my questions:

1) What is considered the best "most supported" Open Source Lisp for Linux?

2) Are there very wide variations in functionality with all the offers that
would create incompatibility issues?

3) How's the database support for Lisp? Is MySQL well supported, and is the
API across different implementations of Lisp consistent?

4) How does Lisp function in a web environment? Is is basically CGI? Or are
there alternatives, like a 'mod_lisp' module for Apache?

5) Any other helpful injections on your part will be greatly appreciated.

6) Thanks!

-Edmond

-- 
-- Edmond Dantes
Shameless plugs:
  http://www.HardIndustry.com
  http://www.giftsantiquescollectables.com
  http://www.sillylife.com
  http://www.BankOrLoan.com
  http://www.PetzFriendz.com

From: netytan
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <1140541902.181031.167820@g43g2000cwa.googlegroups.com>
On the CL front I like Steal Bank Common Lisp; it's free and well
supported, works great with emacs & slime and I've read that in the
next version you'll be able to produce stand-alone exe's.

In it's favor its fast and stable. I've never had any problems with
deviation from the standard which is always good :).

It's a really nice piece of software: it's a clean up version of CMUCL,
which is itself a very nice CL.

I'm not a fan of CLisp, GCL is coming along nicely but I don't think
its reached the CL standard yet.

http://sbcl.sourceforge.net/
http://www.cons.org/cmucl/
http://clisp.cons.org/
http://www.gnu.org/software/gcl/gcl.html


On the Scheme front I like Petite Chez Scheme; it's free but it's
commercial so not open source, that said it's very clean and stable
which is why I use it.

It's standard compliant and then adds a little but as long as you stick
to the standard you can use any of the well known and stable Scheme
compilers to compile to an exe.

http://scheme.com/
http://www.call-with-current-continuation.org/


Finally there's also newLisp. I haven't used it but I've head some good
things about it. You can't compile but it's certainly fast enough for
most things but you can call C code if you need to work faster - it's
in the same speed league as other interpreted languages.

In it's favor it comes with all the libraries and functions you need
for everyday things, which is always useful, I think :).

http://www.newlisp.org/

Not much support here though, it's quite a small community.


Take care,

Mark.
From: Harald Hanche-Olsen
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <pcoacckutqz.fsf@shuttle.math.ntnu.no>
+ "netytan" <·······@gmail.com>:

| On the CL front I like Steal Bank Common Lisp;

That's steel, not steal - in spite of the fact that

| it's free

The reason for the name can be found on the SBCL website, I'm sure.

-- 
* Harald Hanche-Olsen     <URL:http://www.math.ntnu.no/~hanche/>
- It is undesirable to believe a proposition
  when there is no ground whatsoever for supposing it is true.
  -- Bertrand Russell
From: netytan
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <1140576331.802015.198170@g14g2000cwa.googlegroups.com>
Typo's; sometimes my fingers run away from me. Apology for the mistake,
I know it's steel.
From: Thomas A. Russ
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <ymioe10d0zk.fsf@sevak.isi.edu>
Edmond Dantes <······@le-comte-de-monte-cristo.biz> writes:

Taking a few of these

> Here are my questions:
> 
> 1) What is considered the best "most supported" Open Source Lisp for Linux?

I would go with CMUCL or SBCL for this.

> 2) Are there very wide variations in functionality with all the offers that
> would create incompatibility issues?

Not really.  If you keep to the standard, your code should run on any
Common Lisp implementation.   Now, some lisp implementations are better
at particular optimizations than others, but that only affects runtime,
not program correctness.

CMUCL and SBCL are execellent at numeric code optimization.  CLISP has a
very fast BIGNUM implementation.

> 3) How's the database support for Lisp? Is MySQL well supported, and is the
> API across different implementations of Lisp consistent?

Yes.  And the database API is pretty standard if you use CL-SQL as your
access layer.

> 4) How does Lisp function in a web environment? Is is basically CGI? Or are
> there alternatives, like a 'mod_lisp' module for Apache?

There are several alternatives.  One is to just run the lisp as the
server application.  Two of the approaches that I've used are
  CL-HTTP and  Portable AllegroServer (portable aserve)
I believe there are perhaps one or two others.

There is a mod_lisp available.

> 5) Any other helpful injections on your part will be greatly appreciated.
> 
> 6) Thanks!
> 
> -Edmond
> 
> -- 
> -- Edmond Dantes
> Shameless plugs:
>   http://www.HardIndustry.com
>   http://www.giftsantiquescollectables.com
>   http://www.sillylife.com
>   http://www.BankOrLoan.com
>   http://www.PetzFriendz.com
> 

-- 
Thomas A. Russ,  USC/Information Sciences Institute
From: Edmond Dantes
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <1140567180_1487@news-east.n>
Thomas A. Russ wrote:

> Edmond Dantes <······@le-comte-de-monte-cristo.biz> writes:
...
>> 2) Are there very wide variations in functionality with all the offers
>> that would create incompatibility issues?
> 
> Not really.  If you keep to the standard, your code should run on any
> Common Lisp implementation.   Now, some lisp implementations are better
> at particular optimizations than others, but that only affects runtime,
> not program correctness.
> 
> CMUCL and SBCL are execellent at numeric code optimization.  CLISP has a
> very fast BIGNUM implementation.

Interesting.

I take it that CMUCL and SBCL can compile Lisp as well? And is the
compilation to native or intermediate "bytecode"? Not sure if I will run
into  a need for really large numbers, but you never know. ;-)
 
>> 3) How's the database support for Lisp? Is MySQL well supported, and is
>> the API across different implementations of Lisp consistent?
> 
> Yes.  And the database API is pretty standard if you use CL-SQL as your
> access layer.

Nice.
 
>> 4) How does Lisp function in a web environment? Is is basically CGI? Or
>> are there alternatives, like a 'mod_lisp' module for Apache?
> 
> There are several alternatives.  One is to just run the lisp as the
> server application.  Two of the approaches that I've used are
>   CL-HTTP and  Portable AllegroServer (portable aserve)
> I believe there are perhaps one or two others.

Know if they are capable of performing in a high load environment?
 
> There is a mod_lisp available.

Ok, that's good to know. I'll take a look.

Though, I am leaning strongly towards using Lisp for the backend decision
making and processing/intelligence, and let PHP/Apache do what it does
best.

Thanks for the tips.

-- 
-- "Edmond Dantes - CMC"
Shameless plugs:
  http://www.weddingbelljoy.com
  http://www.ideas4yourhome.com
  http://www.GardeningWorm.com
  http://www.workappliance.com
  http://www.InteriorWorkz.com


 Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
    ** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------        
                http://www.usenet.com
From: Rob Warnock
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <OOKdnavWbayCtWHeRVn-tg@speakeasy.net>
Edmond Dantes  <······@@le-comte-de-monte-cristo.biz> wrote:
+---------------
| I take it that CMUCL and SBCL can compile Lisp as well?
| And is the compilation to native or intermediate "bytecode"?
+---------------

    cmu> (cons (lisp-implementation-type) (lisp-implementation-version))

    ("CMU Common Lisp" . "19a")
    cmu> (machine-type)

    "X86"
    cmu> (defun foo (a b c)
	   (declare (optimize (speed 3) (safety 0) (debug 0))
		    (fixnum a b c))
	   (the fixnum (* (the fixnum (+ a b)) c)))

    FOO
    cmu> (compile 'foo)
    ; Compiling LAMBDA (A B): 
    ; Compiling Top-Level Form: 

    FOO
    NIL
    NIL
    cmu> (disassemble 'foo)
    58972CA8:       .ENTRY FOO()                 ; FUNCTION
	  C0:       POP     DWORD PTR [EBP-8]
	  C3:       LEA     ESP, [EBP-32]
	  C6:       ADD     EDX, EDI             ; No-arg-parsing entry point
	  C8:       SAR     EDX, 2
	  CB:       IMUL    EDX, ESI
	  CE:       MOV     ECX, [EBP-8]
	  D1:       MOV     EAX, [EBP-4]
	  D4:       ADD     ECX, 2
	  D7:       MOV     ESP, EBP
	  D9:       MOV     EBP, EAX
	  DB:       JMP     ECX
	  DD:       NOP
	  DE:       NOP
	  DF:       NOP
    cmu> 


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Didier Verna
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <muxirr7ah9r.fsf@uzeb.lrde.epita.fr>
····@rpw3.org (Rob Warnock) wrote:

> Edmond Dantes  <······@@le-comte-de-monte-cristo.biz> wrote:
> +---------------
> | I take it that CMUCL and SBCL can compile Lisp as well?
> | And is the compilation to native or intermediate "bytecode"?
> +---------------
>
>     cmu> (cons (lisp-implementation-type) (lisp-implementation-version))
>
>     ("CMU Common Lisp" . "19a")
>     cmu> (machine-type)
>
>     "X86"
>     cmu> (defun foo (a b c)
> 	   (declare (optimize (speed 3) (safety 0) (debug 0))
> 		    (fixnum a b c))
> 	   (the fixnum (* (the fixnum (+ a b)) c)))
>
>     FOO
>     cmu> (compile 'foo)
>     ; Compiling LAMBDA (A B): 
>     ; Compiling Top-Level Form: 
>
>     FOO
>     NIL
>     NIL
>     cmu> (disassemble 'foo)
>     58972CA8:       .ENTRY FOO()                 ; FUNCTION
> 	  C0:       POP     DWORD PTR [EBP-8]
> 	  C3:       LEA     ESP, [EBP-32]
> 	  C6:       ADD     EDX, EDI             ; No-arg-parsing entry point
> 	  C8:       SAR     EDX, 2
> 	  CB:       IMUL    EDX, ESI
> 	  CE:       MOV     ECX, [EBP-8]
> 	  D1:       MOV     EAX, [EBP-4]
> 	  D4:       ADD     ECX, 2
> 	  D7:       MOV     ESP, EBP
> 	  D9:       MOV     EBP, EAX
> 	  DB:       JMP     ECX
> 	  DD:       NOP
> 	  DE:       NOP
> 	  DF:       NOP
>     cmu> 

        But one should be aware that CMUCL's compile-file will silently
produce bytecode instead of native code by default, under particular settings
for speed and debug (see also the :byte-compile argument).

-- 
Didier Verna, ······@lrde.epita.fr, http://www.lrde.epita.fr/~didier

EPITA / LRDE, 14-16 rue Voltaire   Tel.+33 (1) 44 08 01 85
94276 Le Kremlin-Bic�tre, France   Fax.+33 (1) 53 14 59 22   ······@xemacs.org
From: Rob Warnock
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <78GdnZulStb_smHeRVn-qw@speakeasy.net>
Didier Verna  <······@lrde.epita.fr> wrote:
+---------------
| ····@rpw3.org (Rob Warnock) wrote:
| >     cmu> (disassemble 'foo)
| >     58972CA8:       .ENTRY FOO()                 ; FUNCTION
| > 	  C0:       POP     DWORD PTR [EBP-8]
| > 	  C3:       LEA     ESP, [EBP-32]
| > 	  C6:       ADD     EDX, EDI             ; No-arg-parsing entry point
...
| 
| But one should be aware that CMUCL's compile-file will silently
| produce bytecode instead of native code by default, under particular
| settings for speed and debug (see also the :byte-compile argument).
+---------------

Doesn't the phrase "by default" here conflict with the phrase
"under particular settings for speed and debug"?  When will
CMUCL fail to produce native code with COMPILE-FILE when using
*completely* default settings? The only case I know of is top-level
forms *not* in a DEFUN[1] or DEFMETHOD. Do you know of others?


-Rob

[1] Yes, in the CMUCL REPL you can't[2] simply COMPILE DEFUNs that are
    inside a non-null lexical environment, but COMPILE-FILE works fine.

[2] And there's even a way around that! See my posting
    <·········································@speakeasy.net>
    and the associated thread, and the suggested COMPILE* macro.

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Didier Verna
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <muxd5hfafv7.fsf@uzeb.lrde.epita.fr>
····@rpw3.org (Rob Warnock) wrote:

> Didier Verna  <······@lrde.epita.fr> wrote:
> +---------------
> | ····@rpw3.org (Rob Warnock) wrote:
> | >     cmu> (disassemble 'foo)
> | >     58972CA8:       .ENTRY FOO()                 ; FUNCTION
> | > 	  C0:       POP     DWORD PTR [EBP-8]
> | > 	  C3:       LEA     ESP, [EBP-32]
> | > 	  C6:       ADD     EDX, EDI             ; No-arg-parsing entry point
> ...
> | 
> | But one should be aware that CMUCL's compile-file will silently
> | produce bytecode instead of native code by default, under particular
> | settings for speed and debug (see also the :byte-compile argument).
> +---------------
>
> Doesn't the phrase "by default" here conflict with the phrase "under
> particular settings for speed and debug"?

        OK. What I meant was that the exact same call to (compile-file "foo")
(no further argument) will silently produce either byte-code or compiled code,
depending on proclamations that you might have in the file itself. I find that
somewhat misleading and I've been bitten by this once (thinking I had native
code, and incredibly poor performance).


> When will CMUCL fail to produce native code with COMPILE-FILE when using
> *completely* default settings ?

        So, when you have the proper proclamations in your file.

-- 
Didier Verna, ······@lrde.epita.fr, http://www.lrde.epita.fr/~didier

EPITA / LRDE, 14-16 rue Voltaire   Tel.+33 (1) 44 08 01 85
94276 Le Kremlin-Bic�tre, France   Fax.+33 (1) 53 14 59 22   ······@xemacs.org
From: ···············@yahoo.com
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <1140621082.449973.243340@z14g2000cwz.googlegroups.com>
To clarify this part of the thread for the original poster: one key to
the results of Rob's first post is the

  (declare (optimize ...))

form.  I often put

  (declaim (optimize (speed 3) (safety 0) (debug 0)))

at the top of my files to get the same result for all functions.  But
only after they are thorougly debugged, and I'm sure the integer
arithmetic won't overflow.

Also note Rob's use of the forms

  (declare ... (fixnum a b c))

and

  (the fixnum ...)
From: Rob Warnock
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <-JOdnXJ9DJZiAWDeRVn-ig@speakeasy.net>
<···············@yahoo.com> wrote:
+---------------
| To clarify this part of the thread for the original poster:
| one key to the results of Rob's first post is the
|   (declare (optimize ...))
+---------------

Actually, my *main* reason for making that little toy example so
highly optimized was simply to shorten the size of the native
machine code to be displayed in the article!!  ;-}  ;-}

I apologize if I gave anyone the impression that you need a bunch of
declarations to get native code from CMUCL's compiler -- you don't.
Without all the declarations, CMUCL still compiles to native code,
only without omitting the safety checks there's a *lot* more of it:  ;-}

    cmu> (defun foo (a b c)
	   (* (+ a b) c))

    FOO
    cmu> (compile 'foo)
    ; Compiling LAMBDA (A B C): 
    ; Compiling Top-Level Form: 

    FOO
    NIL
    NIL
    cmu> (disassemble 'foo)
    48942418:       .ENTRY FOO(a b c)            ; (FUNCTION (T T T) NUMBER)
	  30:       POP     DWORD PTR [EBP-8]
	  33:       LEA     ESP, [EBP-32]

	  36:       CMP     ECX, 12              ; [:NON-LOCAL-ENTRY]
	  39:       JNE     L0
	  3B:       MOV     [EBP-12], EDX
	  3E:       MOV     [EBP-16], EDI
	  41:       MOV     [EBP-20], ESI

	  44:       MOV     EDX, [EBP-12]        ; No-arg-parsing entry point
						 ; [:NON-LOCAL-ENTRY]
	  47:       MOV     EDI, [EBP-16]

    ;;; [5] (+ A B)

	  4A:       CALL    #x100001D0           ; #x100001D0: GENERIC-+
						 ; [:CALL-SITE]
	  4F:       MOV     ESP, EBX             ; [:SINGLE-VALUE-RETURN]
	  51:       MOV     EDI, [EBP-20]

    ;;; [4] (* (+ A B) C)

	  54:       CALL    #x100002D0           ; #x100002D0: GENERIC-*
						 ; [:CALL-SITE]
	  59:       MOV     ESP, EBX             ; [:SINGLE-VALUE-RETURN]

	  5B:       MOV     ECX, [EBP-8]         ; [:BLOCK-START]
	  5E:       MOV     EAX, [EBP-4]
	  61:       ADD     ECX, 2
	  64:       MOV     ESP, EBP
	  66:       MOV     EBP, EAX
	  68:       JMP     ECX
	  6A:       NOP
	  6B:       NOP
	  6C:       NOP
	  6D:       NOP
	  6E:       NOP
	  6F:       NOP
	  70: L0:   BREAK   10                   ; Error trap
	  72:       BYTE    #x02
	  73:       BYTE    #x19                 ; INVALID-ARGUMENT-COUNT-ERROR
	  74:       BYTE    #x4D                 ; ECX
    cmu> 


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Thomas A. Russ
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <ymiaccjco36.fsf@sevak.isi.edu>
Edmond Dantes <······@@le-comte-de-monte-cristo.biz> writes:


> >> 4) How does Lisp function in a web environment? Is is basically CGI? Or
> >> are there alternatives, like a 'mod_lisp' module for Apache?
> > 
> > There are several alternatives.  One is to just run the lisp as the
> > server application.  Two of the approaches that I've used are
> >   CL-HTTP and  Portable AllegroServer (portable aserve)
> > I believe there are perhaps one or two others.
> 
> Know if they are capable of performing in a high load environment?

I'm pretty sure that both of them perform well in a high load
environment.

CL-HTTP had as one of its initial deployments, the US White House web
site, so it was able to handle heavy-duty action.  Portable Aserve is
derived from AllegroServe, which is Franz' commercial lisp server.  It
is also able to handle large volumes of traffic.

> > There is a mod_lisp available.
> 
> Ok, that's good to know. I'll take a look.
> 
> Though, I am leaning strongly towards using Lisp for the backend decision
> making and processing/intelligence, and let PHP/Apache do what it does
> best.

I suppose that depends on how much of the site is expected to be
dynamically generated.  The advantage to running the Lisp server is that
it all runs in the same address space and you don't have to worry about
process switching or inter-process communication.

-- 
Thomas A. Russ,  USC/Information Sciences Institute
From: Stefan Nobis
Subject: Re: What is the best Open-Source Lisp?
Date: 
Message-ID: <874q2sy8mr.fsf@snobis.de>
--=-=-=
Content-Transfer-Encoding: quoted-printable

Edmond Dantes <······@le-comte-de-monte-cristo.biz> writes:

> 1) What is considered the best "most supported" Open Source Lisp for Linu=
x?

Hmmm... I would say SBCL (very good Linux support, native
threads,...). But others, like CLisp, have also some strengths.

> 2) Are there very wide variations in functionality with all the offers th=
at
> would create incompatibility issues?

I miss portability layers for threads and sockets (there are some
libs, but no single very full featured and widley adopted one), so in
these areas there might be some more portability issues. Most other
areas (MOP, databases, file handling,...) seem to be not much of a
problem (to me at least).

> 3) How's the database support for Lisp? Is MySQL well supported, and is t=
he
> API across different implementations of Lisp consistent?

There is CLSQL (http://clsql.b9.com/). Only CLisp seems to suffer from
not be supported (but there is CFFI with an UFFI compatibility
layer -- CFFI supports CLisp and CLSQL uses UFFI).

> 4) How does Lisp function in a web environment? Is is basically CGI? Or a=
re
> there alternatives, like a 'mod_lisp' module for Apache?

There are quite a few choises: There is mod_lisp and mod_lisp2,
Araneida, portalbe AllegroServe and maybe more (as a basis for an
application server). And there are quite some libraries/frameworks
like UCW (uncommon web), TBNL, WebActions,...

Have a look at

http://cliki.net
http://common-lisp.net
http://cl-user.net

=2D-=20
Stefan.

--=-=-=
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQBD+0DRcJGorHL1+IIRAgn9AJ9A+Z/AxGJjXSpMX1NTtf2PaumPNwCfXccE
UA5I4YkxviYpZC1n+0O63DU=
=KR8q
-----END PGP SIGNATURE-----
--=-=-=--