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
Rubinius X
Search
brixen
September 04, 2014
Technology
290
3
Share
Rubinius X
Presented at WindyCityRails 2014
brixen
September 04, 2014
More Decks by brixen
See All by brixen
Stop making mud pies!
brixen
0
120
Papers We Love - Immix mark-region garbage collector
brixen
2
760
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
250
Types As Premature Optimization
brixen
2
570
Code Is What Code Does
brixen
0
420
Augmented Ruby: The Rubinius Language Platform
brixen
2
150
The Future of Ruby
brixen
1
340
Rubinius, and the Future of Ruby
brixen
2
260
So you want to design a programming language
brixen
1
170
Other Decks in Technology
See All in Technology
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
4
910
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
180
AWS DevOps Agent or Kiro の使いどころを考える_20260402
masakiokuda
0
150
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
400
Kubernetesの「隠れメモリ消費」によるNode共倒れと、Request適正化という処方箋
g0xu
0
170
パワポ作るマンをMCP Apps化してみた
iwamot
PRO
0
290
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
270
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
170
MCPで決済に楽にする
mu7889yoon
0
170
AIにより大幅に強化された AWS Transform Customを触ってみる
0air
0
280
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
310
GitHub Advanced Security × Defender for Cloudで開発とSecOpsのサイロを超える: コードとクラウドをつなぐ、開発プラットフォームのセキュリティ
yuriemori
1
120
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
170
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
ラッコキーワード サービス紹介資料
rakko
1
2.9M
Visualization
eitanlees
150
17k
Deep Space Network (abreviated)
tonyrice
0
100
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
How STYLIGHT went responsive
nonsquared
100
6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
250
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
220
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