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, and the Future of Ruby
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
brixen
March 01, 2013
Technology
290
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubinius, and the Future of Ruby
Presentation at Elemental
http://www.elementaltechnologies.com/
on 1 March 2013.
brixen
March 01, 2013
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
Rubinius X
brixen
3
310
Code Is What Code Does
brixen
0
440
Augmented Ruby: The Rubinius Language Platform
brixen
2
180
The Future of Ruby
brixen
1
360
So you want to design a programming language
brixen
1
190
Other Decks in Technology
See All in Technology
ゲームのリアルタイム通信から見た QUIC と MoQ
segadevtech
0
110
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
140
しろおびから始める!ログ活用の第一歩
shumei_ito
0
910
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
130
FOSS4Gを活用した自治体業務DXの試み
470715
0
150
自主式軟體工廠
philipz
0
260
【Data Engineering Summit2026_登壇資料】医療ビッグデータ×AIエージェントを支えるデータ基盤とハーネスエンジニアリング
jmdc_presentation
0
140
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
320
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
860
DGX Spark でどこまでハッキングができるのか?
kash1064
0
1k
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
150
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
The Curse of the Amulet
leimatthew05
3
15k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Crafting Experiences
bethany
1
380
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
620
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
940
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
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