Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rubinius X
Search
brixen
September 04, 2014
Technology
310
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubinius X
Presented at WindyCityRails 2014
brixen
September 04, 2014
More Decks by brixen
See All by brixen
Stop making mud pies!
brixen
0
140
Papers We Love - Immix mark-region garbage collector
brixen
2
780
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
320
Types As Premature Optimization
brixen
2
610
Code Is What Code Does
brixen
0
440
Augmented Ruby: The Rubinius Language Platform
brixen
2
190
The Future of Ruby
brixen
1
360
Rubinius, and the Future of Ruby
brixen
2
300
So you want to design a programming language
brixen
1
190
Other Decks in Technology
See All in Technology
ひとりで始めた AI駆動開発、チームに広げて何が変わったのか
kenichiodo
1
210
20261031_IoTLT_vol140_kitazaki_v1.pdf
kitazaki
0
150
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
430
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
540
Systems Manager AgentがインストールされたPCを紛失した時の対策を考えてみた
amarelo_n24
1
110
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
110
バックオフィスに染み出すTypeScript ── clasp で安全に仕組みを作る
nealle
1
160
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
560
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
150
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
6.8k
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
400
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
160
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
480
Designing for Performance
lara
612
70k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
340
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
550
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
380
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Statistics for Hackers
jakevdp
799
230k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
460
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
510
Transcript
Rubinius X @brixen
Good morning!
None
None
None
None
None
"You can't have your cake and eat it, too"
Professional possibility finders
improveffect.com
Yes, and...
We <3 Ruby
None
None
I'd rather be...
None
What is the biggest risk to Ruby?
Ruby is stuck in the past
Why isn't Ruby the right tool?
Rubinius is Ruby
Rubinius is Ruby ~2.1 and 1.8.7
Rubinius X is Ruby 10
Ruby 2.1 is really
Ruby 2.1 is really, really
Ruby 2.1 is really, really, really
Ruby 2.1 is really, really, really, really
Ruby 2.1 is really, really, really, really legacy Ruby
Rubinius X is Rubinius
Network 1
Network 1 Performance 2
Network 1 Performance 2 Experience 3
Network 1 Performance 2 Experience 3 Context 4
Network 1 Socket • Concurrency • String
None
None
None
None
None
None
None
! require "socket"!
None
bit.ly/RubyHTTPClients
Go Node.js Elixir
Can we have networks?
Yes, and we can have one that just works
Rubinius has no global interpreter lock
Threads are fine
Locks are the problem
Shared mutable state
HAMT Hash Array Mapped Trie
HAMT ReTrieval
1 2 3 #hash value 12
1 ... 3 #hash value 14 4 5
Can we have simple data structures?
Yes, and we can have useful concurrent ones
String and Symbol
! irb> obj.method "to_s"! => #<Method: Object(Kernel)#to_s>!
! irb> obj.method :to_s! => #<Method: Object(Kernel)#to_s>!
irb> "to_s" == :to_s ! => false
irb> :to_s == "to_s"! => false
None
HashWithIndifferentAccess
Erb • HAML • Slim • Moustache
JSON • YAML • XML/HTML
Strings are immutable
HashWithIndifferentAccess
Hash
Performance 2
Fences make good neighbors
Fences make poor friends
Compilation is usually lossy
def add(a, b)! c = a + b! end
push_local 0! # a! push_local 1 ! # b! send
:+, 1! set_local 2! ! # c
add r1, r2, r3! # ^a ^b ^c! set_local r3,
2
Can we have stack bytecode?
Yes, and we can have register bytecode
assert_gte r1, r2, 0! add r1, r2, r3! # ^a
^b ^c! set_local r3, 2
and we can have assertion bytecode
record r1, r2! add r1, r2, r3! # ^a ^b
^c! set_local r3, 2
and we can have instrumentation bytecode
PEG
LPEG
and we can have parser bytecode
and we can have system bytecode
Experience 3
Run coverage in production
Smalltalk
def add(a, b)! a + b! end
Can we have file system support?
Yes, and we can have a dynamic code database
Rubinius::Console
Context 4
! puts "Hello, Chicago!"!
! "Hello, Chicago!".puts!
module Kernel! def puts(*args)! # ...! end! ! module_function :puts!
end
! puts "Hello, Chicago!"!
fun puts(*args)! # ...! end
module Kernel! def puts(*args)! # ...! end! ! module_function :puts!
end
fun puts(*args)! # ...! end
Can we have objects?
Yes, and we can have functions
destroyallsoftware.com
None
fun add(a, b)! a + b! end
fun add(a: int, b: int)! a + b! end
load_int 0, r1! load_int 1, r2! add r1, r2, r3!
# ^a ^b ^c! store_int r3, 2
Can we have dynamic types?
Yes, and we can have static types
(gradually)
Clay vs concrete
CLIs
parsers JSON • YAML • XML/HTML
HTTP parsers
Garbage collectors
Rubinius X is Rubinius
Rubinius X
Rubinius X 2.1
Source-to-source compiler
Try Rubinius github.com/rubinius/rubinius
# Gemfile! platforms :mri do! gem "ruby-debug"! end!
$ bundle update
$ bundle exec puma
@brixen
Thank you!
• http://scienceblogs.com/startswithabang/2011/11/18/the-new-opera- faster-than-ligh/ • http://www.todayinsci.com/Books/MechApp/chap23/page36.htm • http://www.urgentevoke.com/profiles/blogs/a-new-ecosystem-of- information • https://www.destroyallsoftware.com/talks/boundaries
• http://www.cleanposts.com/index.php/Win311file • https://bit.ly/RubyHTTPClients • http://www.amusingplanet.com/2009/03/impossible-illusions-made- possible.html Credits