GCL 2.6.2 RELEASE NOTES

The GCL team is happy to announce the release of version 2.6.2, the latest achievement in the 'stable' series.  While strictly speaking a bug-fix only release, 2.6.2 incorporates several major improvements over the last stable release, 2.5.3.  Some highlights:

The full changelog can be found in the source tree in the file 'debian/changelog'.

 
The GCL team has subjected this release to a wide variety of tests and benchmarks.  While all such results are necessarily incomplete, one can nevertheless usefully summarize the approximate state of affairs as follows:

The specific test results are arranged in the following table.  Some terms need defining:

BFD
the method of relocating compiled lisp object modules into the running executable using the BFD library
custreloc
the method of relocating compiled lisp object modules into the running executable using the native GCL code.  This method as well as the BFD method preserve the module loading across image saving and re-execution
dlopen
the method of dynamically linking in compiled lisp object modules into the existing session only via the system dynamic linker loader, ld.so.
SGC
Stratified Garbage Collection -- an optional accelerated generational garbage collection algorithm employing read-only memory
CLtL1
Common Lisp, the Language vol I, referring to the book of the same name by Steele defining a widely used lisp language standard prior to the ANSI standardization process in 1994.
ANSI
the work in progress image build attempting to eventually extend traditional GCL into full ANSI complaince
Ansi tests
the results of the work in progress ansi compliance test suite written by GCL developer Paul Dietz presented as the number of failures divided by the total number of tests run
Random tests
the results of the random 'compiler torture tester' presented as the number of tests/the size of the random forms/the number of variables passed to the random function


In the table below, green denotes a pass, yellow denotes an as yet unimplemented option, and red indicates failure.  Blank cells indicate tests that have not been run.

System
CPU
Self Build
BFD
dlopen
custreloc
Preferred
Linking
SGC
CLtL1
ANSI
ANSI tests
Random tests
Maxima 5.9.0/CLtL1

Maxima CVS/ANSI

ACL2 2.8/CLtL1

Axiom CVS/CLtL1

nqthm
CLtL1
pc-nqthm
CLtL1
Debian GNU/Linux (sid)
i386




bfd
or
custreloc



303/
10697
50000/10000/8
500000/1000/8





(setq si::*multiply-stacks* 16)
Debian GNU/Linux (sid)
sparc




bfd
or
custreloc



303/
10697







Debian GNU/Linux (sid)
powerpc




bfd



303/
10697







Debian GNU/Linux (sid)
amd64




bfd



303/
10697







Debian GNU/Linux (sid)
arm




bfd



303/
10697







Debian GNU/Linux (sid)
m68k




bfd



303/
10697







Debian GNU/Linux (sid)
s390




bfd



303/
10697







Debian GNU/Linux (sid)
ia64




dlopen



303/
10697




(1)


Debian GNU/Linux (sid)
hppa
-O0



dlopen



303/
10697




(1)


Debian GNU/Linux (sid)
mips




dlopen



303/
10697




(1)


Debian GNU/Linux (sid)
mipsel




dlopen



303/
10697




(1)


Debian GNU/Linux (sid)
alpha




dlopen



303/
10697




(1)


Fedora FC1
i386




bfd or
custreloc



303/
10697
12000/1000/8






Solaris
sparc




bfd or
custreloc



303/
10697
4000/1000/8
(4)






Windows MINGW(a)
i386




custreloc




303/
10697
57000/1000/8



(2)


MacOSX
powerpc




bfd
(3)


303/
10697







OpenBSD
i386




bfd



303/
10697







FreeBSD
i386




custreloc



303/
10697


























Notes:

(1) dlopen builds use file descriptors for each object load.  The step in the Axiom build process which regenerates its databases consumes more than the conventional maximum of 1024 file descriptors available by default on most UNIX systems.
(2) An AXIOMsys executable can be produced, and is basically functional, but experiences sporadic errors of a type as yet unknown.
(3) This problem has been recently and inadvertently introduced. We are looking into a fix, which should be straightforward.
(4) On this machine, the underlying gcc was old (3.0) and segfaulted outside of GCL when attempting to compile its produced C code after a few thousand        iterations.

(a) The preferred build environment for Mingw/Windows is gcc 3.3.1, binutils 2.14.90, and the latest msys release.



The following table presents the results of the popular gabriel benchmarks of three freely available lisp systems, GCL, CLISP and CMUCL.  Times are presented as multiples of the time GCL took in completing the tests.  Green  indicates tests on which GCL is the fastest, while red indicates tests on which GCLwas not the fastest.   The benchmark code can be found in ftp://ftp.ma.utexas.edu/gcl/gabriel.tgz.  The number of test iterations has been increased by a factor of 400 to overcome granularity issues on modern machines.  The '(print (time ...))' statements around each test iteration were removed, again due to granularity and relative i/o load.  Likewise the special init.lsp file conventionally used to preallocate GCL memory in such cases was removed as it is now mostly obsolete.  Finally the tests were modified slightly to place the optimization declamations at the top of each file being compiled as suggested by a CMUCL expert.

As with any benchmark, results can vary somewhat with the details of the executing machine.  With lisp in particular, the ratios of the cache sizes, cpu speed, and memory bandwidths can impact such tests significantly.  We present the results for two popular configurations below.  While the precise details of the differences are not as yet known, it is speculated that the first result is more dominated by in-cache cpu performance, while the latter is more dominated by memory access efficiency.

Dual Intel Xeon 2.4Ghz, 512 Mb, Linux 2.4.20
Athlon XP 3000+ (2.1Ghz), 512 Mb, Linux 2.4.26

Benchmark
GCL
2.6.2
CMUCL 18e-9
CLISP
2.33-2

BOYER

1.000

2.200

9.869

BROWSE

1.000

2.240

NA

CTAK

1.000

0.230

1.890

DDERIV

1.000

2.148

2.909

DERIV

1.000

2.083

3.640

DESTRU-MOD

1.000

2.043

9.880

DESTRU

1.000

1.168

5.743

DIV2

1.000

2.222

3.911

FFT-MOD

1.000

1.585

206.057

FFT

1.000

1.544

176.088

FPRINT

1.000

2.136

3.742

FREAD

1.000

1.746

2.111

FRPOLY

1.000

1.524

5.112

PUZZLE-MOD

1.000

10.824

41.618

PUZZLE

1.000

11.324

37.671

STAK

1.000

1.536

9.836

TAK-MOD

1.000

1.465

15.053

TAK

1.000

1.486

14.629

TAKL

1.000

1.419

14.965

TAKR

1.000

1.933

12.327

TPRINT

1.000

0.937

1.263

TRAVERSE

1.000

0.875

8.378

TRIANG-MOD

1.000

7.067

26.814

TRIANG

1.000

1.281

18.565
GEOMETRIC
AVERAGE

1.00

1.86

10.33
MEDIAN
1.00
1.67
9.87
Benchmark
GCL
2.6.2
CMUCL 18e
CLISP
2.33

BOYER

1.000

0.892

6.316

BROWSE

1.000

0.965

NA

CTAK

1.000

0.435

3.489

DDERIV

1.000

0.822

1.579

DERIV

1.000

0.651

1.639

DESTRU-MOD

1.000

0.812

4.779

DESTRU

1.000

0.550

3.239

DIV2

1.000

0.599

1.525

FFT-MOD

1.000

2.655

337.207

FFT

1.000

1.923

251.026

FPRINT

1.000

2.322

3.508

FREAD

1.000

1.890

1.900

FRPOLY

1.000

1.013

3.606

PUZZLE-MOD

1.000

5.976

20.350

PUZZLE

1.000

5.472

19.387

STAK

1.000

1.655

8.064

TAK-MOD

1.000

1.382

14.775

TAK

1.000

1.399

14.514

TAKL

1.000

1.281

12.877

TAKR

1.000

1.735

15.500

TPRINT

1.000

2.008

1.674

TRAVERSE

1.000

0.770

8.013

TRIANG-MOD

1.000

6.639

25.182

TRIANG

1.000

1.186

16.948
GEOMETRIC
AVERAGE

1.00

1.40

8.46
MEDIAN
1.00
1.33
8.01


Many improvements are planned for the 2.7.x development series time permitting, the most important of which is to complete the task of building an ANSI compliant GCL image.