i’ve started to become more and more interested in compilers, interpreters and programming language design overall, so i thought of sharing this bunch of stuff i’ve found (and mostly still have to read :< ) that might be useful to somebody… my plan is to update the list as i find more resources
i haven’t (and won’t) include links to official docs because it’s obvious to me that people should look there first ;P.
Links
LLVM
- Discussion on HN with various tutorials posted
- Creating a working compiler with LLVM (Part 2)
- Architecture of open source applications: LLVM
- LLVM Backend Design (GHC)
- The LLVM Compiler Framework and Infrastructure
- Life on an instruction in LLVM
- LLVM - An infrastructure for multi stage optimization
Virtual Machines
- Learning with Terror VM
- Virtual Machines for Programming Languages
- Sol - A sunny little virtual machine
- Fast enough VMs in fast enough times
- Virtual Machines: Abstractions and implementations
- A Virtual Machine for Multi Language execution
- Joeq - A Virtual Machine and Compiler Infrastructure
- First draft of the Falcon organic VM specification
- Parallel Scheduler for the Falcon organic VM
- A Self Bibliography
Compilers
- Compiler Design - Theory, Tools and Examples
- Compiler construction
- Compilers and Compiler generators
Interpreters
- How to write a lisp interpreter in Python
- How to write an even better lisp interpreter in Python
- Boostrapping a prototype based object model
- A micro manual for lisp implemented in C
- Small and readable scheme interpreters
Garbage Collection
Books
Compilers
Interpreters
Garbage Collection
Code
- LISP.c
- TinyClojure
- Prototype-like object system based on functions
- TinyVM
- Homoiconic JS
- TinyScheme
- Stack based VM and JIT compiler
- MiniScheme
- Kaleidoscope implementation with LLVM-C
stay tuned
PS: this blog is on github so you can actually submit an issue and i’ll add your links to this list, how cool is that?
PPS: thanks to @Bronsa_ for helping me out when i’m too stupid to grasp some stuff :P
Credits (people who contributed):
- Giancarlo Niccolai
- Rob Grainger
- Gary D. Knott