Re: ArmedBear Common Lisp relicensed!

From: Adam Warner (usenet_at_consulting.net.nz)
Date: 07/31/04


Date: Sun, 01 Aug 2004 00:22:32 +1200

Hi Andras Simon,

> Adam Warner <usenet@consulting.net.nz> writes:
>
>> Addendum: A lot of CMUCL and SBCL code was reused in implementing ABCL,
>> which helps explain how Peter Graves was able to achieve so much so
>> relatively quickly. Potentially the most time consuming and platform
>> specific parts of Common Lisp implementation are the compiler and
>> garbage collector. You get these for free with a Java virtual machine
>> (and some of the garbage collection options may even be more
>> sophisticated).
>
> While I mostly agree with what you write in your OP, I'm puzzled by this
> "get the compiler for free" bit. I guess you mean the JIT.

Yes; the JIT along with new architecture support and performance spillover
benefits. For example if one looks at the recent benchmarks comparing the
Sun JDK 1.4.2 and the 1.5.0 Beta 2 running ABCL one finds FFT is three
times as fast; PUZZLE almost twice as fast; MANDELBROT/DFLOAT almost twice
as fast; and BENCH-STRINGS twice as fast. The essential point is that the
implementor had to do very little extra work to benefit from these
performance improvements (note however that this particular JVM is neither
Free software nor open source and there may be a cost to becoming
dependent upon advanced proprietary JIT compilers over simpler and Free
ahead of time native code compilers such as CMUCL's Python).

Some Common Lisp implementations receive negligible software spillover
benefits. These implementations will never run faster on the same hardware
without internal resources being devoted to explicitly improving the
compiler (e.g. adding new assembly instruction support for SSE2). Also
significant resources have to be devoted to port such implementations to a
new architecture.

Some Common Lisp implementations do receive spillover benefits from being
written in or generating C (i.e. as C compilers improve so does an
implementation's performance). Also external developers port C compilers
to new architectures, lessening the cost of porting such implementations.

> But it's indeed nice that, with a little help from Peter Graves, the
> good folks at Sun and IBM put a lot of effort into making a fast,
> cross-platform implementation of Common Lisp :-)

I'm not sure how absolutely fast it is yet even on the more advanced Java
virtual machines. I do know its relative performance will improve and new
architectures will get support through spillover benefits. Common Lisp
implementors have limited resources and little institutional backing. And
some have to devote resources just to match the spillover benefits that
programmers of popular languages receive for free.

>> Lisp.java: // Adapted from SBCL.
>
> This is a bit misleading, I'm afraid.

Yes :-) Sorry for not culling that file from the list.

To reinforce the point consider loop.lisp. This is 77kB and 2071 lines of
code. When I diff it against an arbitrarily selected version of loop.lisp
from SBCL (0.8.6.34) I find 63 lines have been added and 33 lines have
been removed. 29 of the 33 lines removed are due to the packages sb!*
being replaced. Of the 63 lines added 16 are a copyright and GPL licensing
notice.

Regards,
Adam