Source -> IR1
IR1 -> IR2
IR2 optimizations (few -- we could do a lot more here, but the gains are generally smaller than working on IR1, so...)
IR2 -> machine code
Adding a new VOP
Adding a new DEFOPTIMIZER DERIVE-TYPE
Adding a new DEFTRANSFORM
One implementation among many.
...but the most popular open source implementation!
Open source: public domain / MIT and BSD licenses.
Multiplatform, but best on Linux. OS X ok except for threads. Runs on Windows too, and I know people use it for production there... but Windows is still a second-class citizen. Solaris, *BSD, etc also supported.
Competitive with C and C++, Usually within a small percentage factor, sometimes even better., Benchmark game is bad., What counts is the code you are able to produce., Admittedly newbies need some time to learn what is expensive and what not.
Examples, Arithmetic, Generic version., Fixnum version., Single-float version., Object instantiation, Slot access., Agressive inlining and PE.
Users -- both private and corporate
ANSI Standard came out just before Java, Does that make it old or not-so-old?, CLTl1 & 2 older
Not just Scheme with funny spellings, Lisp-2 (or -n), Humans are very good at this sort of contex-sensitivity, it turns out. Even though you can make a silly example like (defun listlist (list) (list list)) in practise being able to name local variables without worrying about shadowing global function names is a boon -- no need for contractions like lst., If you ask me, it's Lisp-4: variables, functions, tags, and blocks., Silly people may also count classes, throw tags, etc -- but they are not lexically scoped entities, so I don't think they count., Operators are either named or LAMBDA-expressions. You never have (((foo))) -- but instead (funcall (funcall (foo))). I think this is a good thing., Hygiene? Nope. I think hygiene is good, and implicit phasing in particular appears to solve actual problems -- but lack of hygiene isn't an issue. Seriously. Lack of implicit phasing... let's not go there right now -- but I can talk about that later to those interested., No CALL/CC -- but UNWIND-PROTECT, and a number of libraries implement CALL/CC via a code-walker., Large standard library. (Think a huge bunch of SRFIs that every single implementation implements.), Native compilation is the typical. Interpreters exist, but everyone qualifies them as exceptions., CLOS and MOP, Conditions and restarts, Programmable reader, The funny names come from older dialects like Interlisp, maclisp, and Zetalisp., Compiler macros
A mudball of strength. Buddha has hairy armpits and laughs!