The LLVM Compiler Infrastructure is a great technology that came out of the computer science research community and can be used to develop extensible compiler platforms. Among other things, it provides a
platform-independent assembly and object code (the "low level virtual machine" that its name is taken from), and a great object-oriented
compilation, linking, optimization and code-generation
infrastructure that you can use to efficiently target real hardware. The main idea is that LLVM provides a comprehensive back-end that you can easily build a front-end to target.
There's a huge amount of material available on the LLVM web site, including the
LLVM Assembly Language Reference Manual and
LLVM Programmer's Manual, a wide variety of
papers on LLVM, and a great walkthrough of the creation of
Stacker, a Forth front-end that targets LLVM. It shows how the budding language creator might leverage the tools available as part of the LLVM infrastructure. I fully expect that in time, "little languages" will have no excuse
not to be JIT compiled simply because targeting LLVM is actually
easier than writing your own interpreter or bytecode engine! Just walk your AST and generate naïve LLVM code for what you encounter, and let the infrastructure handle the rest. (For those who aren't developer tools weenies, an Abstract Syntax Tree is the internal representation of a program's structure before it's turned into instructions to execute.)
A couple months back, the
May 2007 LLVM Developers' Meeting was held at Apple. The proceedings from this meeting — the actual session content, both in slides and in video form — are available online, and I've even created an
LLVM Developers' Meeting podcast (including a
subscribe-directly-in-iTunes version) for easy viewing. The video may be low bit rate, but it has a 16:9 aspect ratio so you can even pretend it's HD. (I put together the podcast primarily so I could watch the sessions on my
Apple TV, since I couldn't attend the meeting.)
So if you're at all interested in compilers, language design or development, optimization, or development platforms in general, you'll be very well-served by checking out LLVM. It is a
seriously cool enabling technology.