Online Mind Mapping and Brainstorming

Create your own awesome maps

Online Mind Mapping and Brainstorming

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account? Log In

What is SBCL? by Mind Map: What is SBCL?
0.0 stars - reviews range from 0 to 5

What is SBCL?

How does it work?


Source -> IR1

IR1 optimizations

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


signal handling



Worked examples

Adding a new VOP



SBCL is a high performance native compiler for ANSI Common Lisp.

What is SBCL?

One implementation among many.

...but the most popular open source implementation!

Open source: public domain / MIT and BSD licenses.

CMU heritage

Current developers

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

What is Common Lisp?

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!

Libraries: we have a lot of them, and a nice way to install them., Demo Quicklisp., Hunchentoot, cl-ppcre, cl-javascript, cl-opengl