Have You Ever Wondered How Ruby Works Internally?
Everyone knows that Ruby is a powerful language. Its dynamic nature allows you to concisely write the code you need to actually solve a problem instead of burying yourself under mountains of boilerplate. You don't have to fight it; you just get to enjoy the ride.
But how is the magic created? And can you trust it? After all, MRI is written in C - a statically typed, compiled language which is pretty much the antithesis of Ruby. What dark voodoo is breathed into C to enable Ruby's features - closures, metaprogramming, and so much more?
Find out with Science!
Ruby Under a Microscope will guide you through the internals of some of Ruby's most-used facets. Using experimentation, theory, and two truckloads of diagrams, you'll clearly see how Ruby is implemented.
Here's a science fact for you: before they understood the nature of combustion, Enlightenment chemists believed fire resulted from the release of a negative-weight particle called "phlogiston". Then Antoine-Laurent Lavoisier knocked that theory on its derrière by discovering oxygen and proving how combustion really works.
This book will offer you the same clarity. Instead of pointing at a Ruby block and yelling, "Phlogiston!", you'll be able to lucidly explain how Ruby copies variables from the stack to the heap in order to allow access to them even after a function has returned.
Have no clue what that means? Well, that's exactly why you need to read this book.
And good news: you don't need to know a lick of C! If you can't tell your pointers from your pointers to pointers, then have no fear. Ruby Under a Microscope is accessible to anyone with an interest in learning how Ruby works internally.
People Already Love It
Here's what people are already saying about Ruby Under a Microscope:
Many people have dug into the Ruby source code but few make it back out and tell the tale as elegantly as Pat does in Ruby Under A Microscope! I particularly love the diagrams - and there are lots of them - as they make many opaque implementation topics a lot easier to understand, especially when coupled with Pat's gentle narrative. This book is a delight for language implementation geeks and Rubyists with a penchant for digging into the guts of their tools.
going to proofread a draft of @pat_shaughnessy's "Ruby Under a Microscope", man this book was missing in the Ruby landscape, awesome content
Pat Shaughnessy did a tremendous job writing THE book about Ruby internals. Definitely a must read, you won't find information like this anywhere else.
I really enjoyed the book and now know have a far better understanding of both Ruby and CS - thanks. Your writing made very complex topics (at least for me) very accessible and I found the book hard to put down. Diagrams were awesome and already are popping in my head as I code. This is by far one of my top 3 favourite Ruby books written.
While I'm not usually digging into Ruby Internals, your book was an absolute awesome read. Best $20 I've spent in ages.
Table of Contents
Foreword by Aaron Patterson | xv |
Acknowledgments | vi |
Introduction | ix |
Chapter 1: Tokenization and Parsing | 3 |
Chapter 2: Compilation | 31 |
Chapter 3: How Ruby Executes Your Code | 55 |
Chapter 4: Control Structures and Method Dispatch | 83 |
Chapter 5: Objects and Classes | 105 |
Chapter 6: Method Lookup and Constant Lookup | 133 |
Chapter 7: The Hash Table: The Workhorse of Ruby Internals | 167 |
Chapter 8: How Ruby Borrowed a Decades-Old Idea from Lisp | 191 |
Chapter 9: Metaprogramming | 219 |
Chapter 10: JRuby: Ruby on the JVM | 251 |
Chapter 11: Rubinius: Ruby Implemented with Ruby | 273 |
Chapter 12: Garbage Collection in MRI, JRuby, and Rubinius | 295 |
Index | 327 |
About Pat
Pat Shaughnessy writes a blog about Ruby development here on this web site, patshaughnessy.net. Pat's articles and presentations have been featured multiple times on the Ruby Weekly newsletter, the Ruby5 podcast and the Ruby Show.
When he's not at the keyboard, Pat enjoys spending time with his wife and two kids. Pat is also a fluent Spanish speaker and travels frequently to Spain to visit his wife's family.