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
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
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
250
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
520
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
160
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
940
Kiro Crewをはじめよう
kizawa2020
1
140
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
2
840
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
230
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
480
パッチ更新でterraform initが落ちた日
grimoh
1
120
Loop Engineering これくらいでいい
mikanichinose
0
220
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
410
WasmをRustにする
sansantech
PRO
0
160
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
720
Git: the NoSQL Database
bkeepers
PRO
433
67k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
400
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
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