Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Brief History of Ruby
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Danielle Smith
November 12, 2019
Programming
0
40
A Brief History of Ruby
An Exploration of How Ruby's Interpreter
Has Changed over the Years
Danielle Smith
November 12, 2019
Tweet
Share
More Decks by Danielle Smith
See All by Danielle Smith
Ruby Ruby
daninithepanini
0
140
Static Type Inferencing ... in Ruby?
daninithepanini
0
23
Off the Rails
daninithepanini
0
30
Action Game
daninithepanini
0
37
RubyGL
daninithepanini
0
28
YeSQL
daninithepanini
0
25
Game Dev in Ruby
daninithepanini
0
38
Euler vs Hamilton
daninithepanini
0
44
Other Decks in Programming
See All in Programming
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
ぼくの開発環境2026
yuzneri
0
240
AgentCoreとHuman in the Loop
har1101
5
240
Raku Raku Notion 20260128
hareyakayuruyaka
0
340
Architectural Extensions
denyspoltorak
0
290
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
CSC307 Lecture 05
javiergs
PRO
0
500
組織で育むオブザーバビリティ
ryota_hnk
0
180
2026年 エンジニアリング自己学習法
yumechi
0
140
dchart: charts from deck markup
ajstarks
3
1k
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
140
Featured
See All Featured
Designing for Timeless Needs
cassininazir
0
130
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
97
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Test your architecture with Archunit
thirion
1
2.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
76
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
66
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
Transcript
A Brief History of Ruby An Exploration of How Ruby's
Interpreter Has Changed over the Years Ruby The Object-Oriented Scripting Language
Ruby was “Born” February 24, 1993 0.95 2.7 2.6 2.2
2.1 2.0 1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
Yukihiro “Matz” Matsumoto 0.95 2.7 2.6 2.2 2.1 2.0 1.0
1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
MRI (Matz’ Ruby Interpreter) 0.95 2.7 2.6 2.2 2.1 2.0
1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
0.95 0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9
1995 2019 2018 2015 2014 2013 1996 2003 2007
Object Oriented 0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8
1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
Mark-and-Sweep Garbage Collection 0.95 2.7 2.6 2.2 2.1 2.0 1.0
1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
Parses source into Abstract Syntax Tree (AST) 0.95 2.7 2.6
2.2 2.1 2.0 1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
Bison (derivative of YACC) 0.95 2.7 2.6 2.2 2.1 2.0
1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 def foo(a, b) a + b end Source
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 def foo(a, b) a + b end Source
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 def foo(a, b) a + b end Tokens
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 AST DEFN ARGS BLOCK OPCALL LVAR [:a, :b] :+ :a :foo LVAR :b def foo(a, b) a + b end
“Runs” the AST 0.95 2.7 2.6 2.2 2.1 2.0 1.0
1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
rb_eval in eval.c 0.95 2.7 2.6 2.2 2.1 2.0 1.0
1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 1.0
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 Christmas 1996
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 1.8
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 1.9
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 “Lazy Sweep” Garbage Collection
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 Introduced YARV “Yet Another Ruby VM”
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 Compiles AST to VARV Instruction Sequences (ISEQ)
AST DEFN ARGS BLOCK OPCALL LVAR [:a, :b] :+ :a
:foo LVAR :b def foo(a, b) a + b end 0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
YARV ISEQ DEFN ARGS BLOCK OPCALL LVAR [:a, :b] :+
:a :foo LVAR :b == ISeq:<main> putobject :foo putiseq foo opt_send :define_method, argc: 2 leave == ISeq:foo local table (size: 2, argc: 2) [ 2] a@0<Arg> [ 1] b@1<Arg> getlocal a@0 getlocal b@1 opt_plus :+, argc: 1 leave 0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995 2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 iseq_compile_each in compile.c
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 2.0
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 “Bitmap Marking” Garbage Collection
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 2.1
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 “Generational” Garbage Collection
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 2.2
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 “Incremental” Garbage Collection
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 2.6
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 MJIT
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 Generates C code from ISEQ
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 2.7
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 “Compacting” Garbage Collection
0.95 2.7 2.6 2.2 2.1 2.0 1.0 1.8 1.9 1995
2019 2018 2015 2014 2013 1996 2003 2007 3.0?
Pat Shaughnessy Ruby Under a Microscope Matias Korhonen Ruby Like
it’s 1995 Nate Bekropen A People’s History of the Ruby Garbage Collector References