On 4/10/07, Eric Baum wrote:
I'd commend to the LISP hackers' attention the compiler "Stalin" by Jeff Syskind, who last I knew was at Purdue. I'm uncertain the extent to which the compiler is available, but I imagine if you look around (for example find Syskind's home page) you will find papers or or pointers. My erstwhile collaborator Kevin Lang, initially a skeptic on the subject, ran extensive tests on Stalin and concluded the compiled code was substantially faster than compiled C and C++, even on problems where this was quite surprising. It's possible Kevin published something on these tests.
<http://community.schemewiki.org/?Stalin> <http://en.wikipedia.org/wiki/Stalin_(Scheme_implementation)> <http://cobweb.ecn.purdue.edu/~qobi/software.html> Stalin is an aggressively optimizing Scheme compiler. It is the most highly optimizing Scheme compiler, and in fact one of the most highly optimizing compilers of any sort for any language. Stalin is publicly & freely available, licensed under the GNU GPL. It was written by Jeffrey M. Siskind. In detail, Stalin is a whole-program compiler that uses advanced flow analysis & closure conversion techniques. It compiles Scheme to highly optimized C. Stalin has a few very significant limitations, however: * it takes a *long* time to compile anything including the compiler * it is not designed for interactive use or debugging * it does not support R4RS/R5RS high-level macros * it does not support the full numeric tower The compiler itself does lifetime analysis and hence does not generate as much garbage as might be expected, but global reclamation of storage is done using the Boehm garbage collector. Scheme <http://cbbrowne.com/info/scheme.html> <http://en.wikipedia.org/wiki/Scheme_(programming_language)> Scheme is a LISP "dialect" that is relatively small, nicely supports tail recursion, provides block structure and lexical scoping, and gives a variety of object types "first-class" status (e.g. - first class objects are namable and can be passed around as function arguments, results, or as list elements). If Common LISP is considered analogous to C++ (which is not entirely unreasonable), Scheme would comparatively be analogous to C. Where Common LISP requires that the "rich functionality" (such as a wide variety of data structures and the Common Lisp Object System (CLOS)) come as an intrinsic part of the language, Scheme encourages the use of "libraries" to provide these sorts of additional functionality. The Scheme libraries are small enough that programmers commonly construct functionality using primitive functions, where a LISP system might have something already defined. This gives additional opportunity either to tune performance or shoot oneself in the foot by reimplementing it poorly... BillK ----- This list is sponsored by AGIRI: http://www.agiri.org/email To unsubscribe or change your options, please go to: http://v2.listbox.com/member/?list_id=303
