Evolving a VM
a language implementation cookbook

Welcome into the fascinating world of VM based programming language implementations! This book is a diary of a traveler who traverses the ragged landscape of language implementations and documents amazing recipes that he sees.

Ever wondered how V8 runs your JavaScript and what is the difference in design decisions made by implementors of V8 and Chakra (or SpiderMonkey, or JavaScriptCore)? What if we expand the comparison matrix and throw in LuaJIT, a few JVMs and top it up with a couple of language implementation frameworks like Truffle and RPython? What if in addition to simply comparing language implementation we also try to build a language implementation ourselves, slowly but surely evolving a VM of our own?

Seems too good to be true and too ambitious to be finished? Maybe. But don't let this stop you from reading it:


I always dreamed about a book that dissects all kinds of language implementations in attempt to describe their similarities, highlight their differences and catalog all those neat tricks hidden deep within.

Eventually I decided to try and write such book myself, and you can come and read it online as I am writing it. You can join my mailing list to be notified whenever a new chapter is going up:

Who Am I?

My name is Vyacheslav Egorov and I am a compiler engineer who contributed to V8, LuaJIT and Dart VM. Check some of my blog posts and talks.

You can always reach me at me@mrale.ph.