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, and the Future of Ruby
Search
brixen
March 01, 2013
Technology
2
250
Rubinius, and the Future of Ruby
Presentation at Elemental
http://www.elementaltechnologies.com/
on 1 March 2013.
brixen
March 01, 2013
Tweet
Share
More Decks by brixen
See All by brixen
Stop making mud pies!
brixen
0
110
Papers We Love - Immix mark-region garbage collector
brixen
2
710
An Ensemble of Programming Languages: How to Build a Platform for Collaboration
brixen
0
220
Types As Premature Optimization
brixen
2
520
Rubinius X
brixen
3
270
Code Is What Code Does
brixen
0
410
Augmented Ruby: The Rubinius Language Platform
brixen
2
130
The Future of Ruby
brixen
1
330
So you want to design a programming language
brixen
1
140
Other Decks in Technology
See All in Technology
持続可能なドキュメント運用のリアル: 1年間の成果とこれから
akitok_
1
220
ビジネスとデザインとエンジニアリングを繋ぐために 一人のエンジニアは何ができるか / What can a single engineer do to connect business, design, and engineering?
kaminashi
2
360
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
170
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
0
280
【Λ(らむだ)】最近のアプデ情報 / RPALT20250422
lambda
0
120
Making a MIDI controller device with PicoRuby/R2P2 (RubyKaigi 2025 LT)
risgk
1
310
Cursor AgentによるパーソナルAIアシスタント育成入門―業務のプロンプト化・MCPの活用
os1ma
15
5.3k
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
4
2.4k
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
320
OpenLane-V2ベンチマークと代表的な手法
kzykmyzw
0
110
「経験の点」の位置を意識したキャリア形成 / Career development with an awareness of the “point of experience” position
pauli
4
110
Featured
See All Featured
A better future with KSS
kneath
239
17k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Facilitating Awesome Meetings
lara
54
6.3k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
Being A Developer After 40
akosma
91
590k
Optimising Largest Contentful Paint
csswizardry
36
3.2k
How to train your dragon (web standard)
notwaldorf
90
6k
Bash Introduction
62gerente
611
210k
Unsuck your backbone
ammeep
670
57k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Transcript
Rubinius, and the Future of Ruby ELEMENTAL 1 MARCH 2013
Brian Shirai Rubinius Developer
None
Questions Tools for thought
OSS/FOSS/CC Community of contributions
Has Ruby reached its potential?
If yes, Where do we go from here?
If no, What should we be working on?
Celluloid Actor-based concurrent object framework
None
Should Matz be the only one making decisions about Ruby?
If yes, Why?
Concurrency Performance Security Integration API
Refinements Action at a distance
Libraries Frameworks Applications
"active_model".camelize # => "ActiveModel"
Stratification Foundation vs Roof
Composition Joining together
Coordinaton Working together
class A include Enumerable def each # ... end end
a.each { |x| b x }
If no, Who?
RubyConf 12 Toward a Design for Ruby
Have you tried Rubinius?
If yes, How was your experience?
If no, When?
None
Rubinius A platform for languages
28c3 The Science of Insecurity
Flexibility Dynamically typed system language
None
None
Ruby In Ruby
class Array def [] Ruby.primitive :array_aref raise PrimitiveFailure, "Array#[] primitive
failed" end end
class Array : public Object { private: Fixnum* total_; //
slot Tuple* tuple_; // slot public: attr_accessor(total, Fixnum); attr_accessor(tuple, Tuple); }
class Array : public Object { // Ruby.primitive :array_aref Object*
aref(STATE, Fixnum* idx); }
instruction send_method(literal) [ receiver -- value ] => send flush_ip();
Object* recv = stack_top(); InlineCache* cache = reinterpret_cast<InlineCache*>(literal); Arguments args(cache->name, recv, cNil, 0, 0); Object* ret = cache->execute(state, call_frame, args); (void)stack_pop(); CHECK_AND_PUSH(ret); end
class OneArgument { public: static bool call(STATE, VMMethod* vmm, StackVariables*
scope, Arguments& args) { if(args.total() != 1) return false; scope->set_local(0, args.get_argument(0)); return true; } };
Reliability Earning trust
$ time make test test succeeded real!0m1.232s user!0m0.857s sys! 0m0.166s
$ time make test test succeeded real!0m4.868s user!0m0.937s sys! 0m0.375s
$ make test ... PASS all 951 tests
RubySpec Executable specification of Ruby
23122 examples 158698 expectations
Performance Objects and execution
Memory Generational garbage collection
Method JIT Profile & type-feedback driven
Concurrency Parallelism with no global lock
Tools Understanding execution
Debugger Built-in API and CLI
Profiler Visibility of un-optimized code
Memory Analysis Allocation tracking and histograms
Agent Runtime inspection & control
Innovation Testing the limits
Mirrors Design principles for meta facilities
"name".byte_to_character_index(2)
Capabilities Robust composition for access & concurrency control
a.b(c)
atomy-lang.org fancy-lang.org rubini.us/projects
github.com/rubinius github.com/brixen @brixen
Thank you