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
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.
+ "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
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
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
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
····@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
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 ...)
<···············@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
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-----
--=-=-=--