SlideShare uma empresa Scribd logo
1 de 100
Baixar para ler offline
Rubinius & Ruby
   A Love Story
Shane Becker
@veganstraightedge
Evan Phoenix
  @evanphx
Brian Ford
 @brixen
http://rubini.us
   @rubinius
The Next 45 Minutes
of your life
Why We Care
Why You (Should)Care
Developing with Tools
Question & Answer Time
Why We Care
Why We Care
  A Bit of History
A Bit of History
        2002
 Evan started using Ruby
A Bit of History
         2006
 Evan started to figure out
  how to improve Ruby
A Bit of History
         2006
Experimented with cleaning
  up and improvements
       in MRI 1.8.2
A Bit of History
        2006
   Realize that Ruby
  needed a fresh start
A Bit of History
       2006
   Started Rubinius
A Bit of History
        2006
    Started Rubinius
  on Honeymoon in Bali
Why We Care
 The Ruby Language
The Ruby
Language
Rubinius is a faithful
 implementation of
the Ruby Language
The Ruby
  Language
   Rubinius is a drop-in
replacement for MRI 1.8.7
Why We Care
Drop-in Replacement
Drop-in
Replacement
Full method compatibility
      via RubySpec
Drop-in
Replacement
Major C-API compatibility
Drop-in
Replacement
Major C-API compatibility
   with some caveats
Why We Care
  Improve Ruby
Improve Ruby
 Ruby should be good
enough to use as its own
    underpinnings
Improve Ruby
MRI’s core (Array, Hash, etc)
     contains no Ruby
Improve Ruby
Strive for scalability and
    performance for
  the Ruby language
Why We Care
  Performance
Performance
MRI’s implementation of
     Ruby is slow
Performance
 Prevalence of C extensions
demonstrate MRI’s slowness
Performance
 Strive to bring Ruby
  itself up to speed
Why We Care
   Fast Ruby
Fast Ruby
Use established techniques to
    make Ruby itself fast
Fast Ruby
Established Techniques
      Compile Ruby
    to machine code
Fast Ruby
Established Techniques
         Profit!
Why We Care
 Faster Ruby for All
Faster Ruby for All

Capable of running Ruby code
Faster Ruby for All

Capable of running Ruby code
 up to 100x faster than MRI
Faster Ruby for All

Helps change Ruby’s standing
  in the programming world
Why We Care
Manage Memory Better
Manage
Memory Better
Very fast object allocation
Manage
Memory Better
     All objects are
 extremely lightweight
Manage
Memory Better
     All objects are
 extremely lightweight
 56 bytes vs 500 bytes
Manage
Memory Better
 Compact and release
   memory to OS
Why We Care
Better Memory Usage
Better
Memory Usage
  MRI’s GC is broken
Better
Memory Usage
 MRI’s GC is broken
 Conservative garbage
  collection is flawed
Better
Memory Usage
Rubinius has a better way
Why We Care
Real World Memory Usage
Real World
   Memory
Made for Ruby applications
Real World
   Memory
Made for Ruby applications
    Ruby is objects
Real World
    Memory
 Made for Ruby applications
Rubinius is made for objects
Real World
   Memory
Made for Ruby applications
   LOTS of objects
Why We Care
Real World Memory Usage
     An Experiment
An Experiment
10.million.times do
  create 101 objects
  save 1 of them
end
An Experiment
https://gist.github.com/1008305
MBs
3000



2500



2000

       MRI
1500



1000



 500



   0
An Experiment
  10,000,000 times
  Create 101 objects
  Save one of them
An Experiment
1,010,000,000 objects created
   10,000,000 objects saved
MBs
3000



2500



2000

           MRI
1500



1000



 500

       Rubinius
   0
Real World
 Memory
Love your objects
Developing
with Tools
Better
Technology
For Running Ruby
Better
Technology
For Writing Ruby
Debugging
 We All Do It
PDD
p-Driven Debugging
<screencast>
 p-Driven Debugging
Steps
Locate
Instrument
Repeat
Good Tools
Go With The Flow
Good Tools
Save Time & Effort
<screencast>
Debugger Debugging
Steps
Locate
Run
Explore
Debunking
Exposing The Falseness
Testing
A Cherished Tool
Testing
 Don’t Need No
Stinkin’ Debugger
Debugging
gem install rbx-trepanning
Profiling
Refining Code
Profiling
Good Judgment
<screencast>
    Profiling
Profiling
Mind The Gap
Jump Into
 Rubinius
Ruby Swap
rvm install rbx-2.0.0pre
Ruby Swap
rbx -S bundle install
Ruby Swap
rbx -S rails s
Deploying
 On AppCloud
<screencast>
    On AppCloud
 http://ey.io/rbxdeploy
Deploying
   On AppCloud
http://ey.io/rbxdeploy
Why You
(should) Care
Why You Care
  You love Ruby
Why You Care
   You love Ruby
  We love Ruby too!
Why You Care
 You want Ruby used
   in more places
   for more things
Why You Care
You want Ruby used more
       We do too!
Use Ruby™
Rubinius & Ruby
   A Love Story
Shane Becker
@veganstraightedge
Evan Phoenix
  @evanphx
Brian Ford
 @brixen
http://rubini.us
   @rubinius
http://engineyard.com
      @engineyard
Questions &
Answers
Time
NEXT TIME on
Engine Yard webinars…


            JRuby Jam
            Session
            featuring
            Nick Seiger
                      Thursday, September 15, 2011
                                11:00-11:50am PDT
       Register: engineyard.com/developer/events

Mais conteúdo relacionado

Semelhante a Rubinius and Ruby | A Love Story

6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friendForrest Chang
 
A Ct Os Story
A Ct Os StoryA Ct Os Story
A Ct Os StoryRobbert
 
Wed Development on Rails
Wed Development on RailsWed Development on Rails
Wed Development on RailsJames Gray
 
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteBeyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteEmerson Macedo
 
Ruby Throwdown Hosted by Engine Yard
Ruby Throwdown Hosted by Engine YardRuby Throwdown Hosted by Engine Yard
Ruby Throwdown Hosted by Engine YardJacob Lehrbaum
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009pratiknaik
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Rormyuser
 
Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine
Ruby on Google App Engine: Upgrade to Google App "Turbo" EngineRuby on Google App Engine: Upgrade to Google App "Turbo" Engine
Ruby on Google App Engine: Upgrade to Google App "Turbo" EngineJoseph Ku
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsNataly Tkachuk
 
Ruby'izing iOS development
Ruby'izing iOS developmentRuby'izing iOS development
Ruby'izing iOS developmenttoamitkumar
 
Ruby Kaigi09 China Rubyupdate20090718
Ruby Kaigi09 China Rubyupdate20090718Ruby Kaigi09 China Rubyupdate20090718
Ruby Kaigi09 China Rubyupdate20090718tengu
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 
Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1James Thompson
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystemGeison Goes
 
RubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSRubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSJoseph Ku
 
The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for RubyHiroshi SHIBATA
 

Semelhante a Rubinius and Ruby | A Love Story (20)

6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend
 
A Ct Os Story
A Ct Os StoryA Ct Os Story
A Ct Os Story
 
Wed Development on Rails
Wed Development on RailsWed Development on Rails
Wed Development on Rails
 
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteBeyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 Keynote
 
Ruby Throwdown Hosted by Engine Yard
Ruby Throwdown Hosted by Engine YardRuby Throwdown Hosted by Engine Yard
Ruby Throwdown Hosted by Engine Yard
 
Cucumber in Practice(en)
Cucumber in Practice(en)Cucumber in Practice(en)
Cucumber in Practice(en)
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 
Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine
Ruby on Google App Engine: Upgrade to Google App "Turbo" EngineRuby on Google App Engine: Upgrade to Google App "Turbo" Engine
Ruby on Google App Engine: Upgrade to Google App "Turbo" Engine
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On Rails
 
Ruby'izing iOS development
Ruby'izing iOS developmentRuby'izing iOS development
Ruby'izing iOS development
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 
Ruby Kaigi09 China Rubyupdate20090718
Ruby Kaigi09 China Rubyupdate20090718Ruby Kaigi09 China Rubyupdate20090718
Ruby Kaigi09 China Rubyupdate20090718
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystem
 
RubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOSRubyMotion Gets A Cool New Friend: mruby on iOS
RubyMotion Gets A Cool New Friend: mruby on iOS
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 

Mais de Engine Yard

6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performanceEngine Yard
 
Simplifying PCI on a PaaS Environment
Simplifying PCI on a PaaS EnvironmentSimplifying PCI on a PaaS Environment
Simplifying PCI on a PaaS EnvironmentEngine Yard
 
The Tao of Documentation
The Tao of DocumentationThe Tao of Documentation
The Tao of DocumentationEngine Yard
 
Innovate Faster in the Cloud with a Platform as a Service
Innovate Faster in the Cloud with a Platform as a ServiceInnovate Faster in the Cloud with a Platform as a Service
Innovate Faster in the Cloud with a Platform as a ServiceEngine Yard
 
JRuby: Enhancing Java Developers Lives
JRuby: Enhancing Java Developers LivesJRuby: Enhancing Java Developers Lives
JRuby: Enhancing Java Developers LivesEngine Yard
 
High Performance Ruby: Evented vs. Threaded
High Performance Ruby: Evented vs. ThreadedHigh Performance Ruby: Evented vs. Threaded
High Performance Ruby: Evented vs. ThreadedEngine Yard
 
Release Early & Release Often: Reducing Deployment Friction
Release Early & Release Often: Reducing Deployment FrictionRelease Early & Release Often: Reducing Deployment Friction
Release Early & Release Often: Reducing Deployment FrictionEngine Yard
 
Rails Antipatterns | Open Session with Chad Pytel
Rails Antipatterns | Open Session with Chad Pytel Rails Antipatterns | Open Session with Chad Pytel
Rails Antipatterns | Open Session with Chad Pytel Engine Yard
 
JRuby: Apples and Oranges
JRuby: Apples and OrangesJRuby: Apples and Oranges
JRuby: Apples and OrangesEngine Yard
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby SystemsEngine Yard
 
Everything Rubinius
Everything RubiniusEverything Rubinius
Everything RubiniusEngine Yard
 

Mais de Engine Yard (12)

6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
 
Simplifying PCI on a PaaS Environment
Simplifying PCI on a PaaS EnvironmentSimplifying PCI on a PaaS Environment
Simplifying PCI on a PaaS Environment
 
The Tao of Documentation
The Tao of DocumentationThe Tao of Documentation
The Tao of Documentation
 
Innovate Faster in the Cloud with a Platform as a Service
Innovate Faster in the Cloud with a Platform as a ServiceInnovate Faster in the Cloud with a Platform as a Service
Innovate Faster in the Cloud with a Platform as a Service
 
JRuby: Enhancing Java Developers Lives
JRuby: Enhancing Java Developers LivesJRuby: Enhancing Java Developers Lives
JRuby: Enhancing Java Developers Lives
 
High Performance Ruby: Evented vs. Threaded
High Performance Ruby: Evented vs. ThreadedHigh Performance Ruby: Evented vs. Threaded
High Performance Ruby: Evented vs. Threaded
 
Release Early & Release Often: Reducing Deployment Friction
Release Early & Release Often: Reducing Deployment FrictionRelease Early & Release Often: Reducing Deployment Friction
Release Early & Release Often: Reducing Deployment Friction
 
Rails Antipatterns | Open Session with Chad Pytel
Rails Antipatterns | Open Session with Chad Pytel Rails Antipatterns | Open Session with Chad Pytel
Rails Antipatterns | Open Session with Chad Pytel
 
JRuby: Apples and Oranges
JRuby: Apples and OrangesJRuby: Apples and Oranges
JRuby: Apples and Oranges
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby Systems
 
Geemus
GeemusGeemus
Geemus
 
Everything Rubinius
Everything RubiniusEverything Rubinius
Everything Rubinius
 

Último

Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...
Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...
Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...Authentic No 1 Amil Baba In Pakistan
 
(南达科他州立大学毕业证学位证成绩单-永久存档)
(南达科他州立大学毕业证学位证成绩单-永久存档)(南达科他州立大学毕业证学位证成绩单-永久存档)
(南达科他州立大学毕业证学位证成绩单-永久存档)oannq
 
Inspiring Through Words Power of Inspiration.pptx
Inspiring Through Words Power of Inspiration.pptxInspiring Through Words Power of Inspiration.pptx
Inspiring Through Words Power of Inspiration.pptxShubham Rawat
 
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ EscortsDelhi Escorts Service
 
西伦敦大学毕业证学位证成绩单-怎么样做
西伦敦大学毕业证学位证成绩单-怎么样做西伦敦大学毕业证学位证成绩单-怎么样做
西伦敦大学毕业证学位证成绩单-怎么样做j5bzwet6
 
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilable
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 AvilableCall Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilable
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilabledollysharma2066
 
E J Waggoner against Kellogg's Pantheism 8.pptx
E J Waggoner against Kellogg's Pantheism 8.pptxE J Waggoner against Kellogg's Pantheism 8.pptx
E J Waggoner against Kellogg's Pantheism 8.pptxJackieSparrow3
 
南新罕布什尔大学毕业证学位证成绩单-学历认证
南新罕布什尔大学毕业证学位证成绩单-学历认证南新罕布什尔大学毕业证学位证成绩单-学历认证
南新罕布什尔大学毕业证学位证成绩单-学历认证kbdhl05e
 

Último (9)

Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...
Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...
Authentic No 1 Amil Baba In Pakistan Amil Baba In Faisalabad Amil Baba In Kar...
 
(南达科他州立大学毕业证学位证成绩单-永久存档)
(南达科他州立大学毕业证学位证成绩单-永久存档)(南达科他州立大学毕业证学位证成绩单-永久存档)
(南达科他州立大学毕业证学位证成绩单-永久存档)
 
Inspiring Through Words Power of Inspiration.pptx
Inspiring Through Words Power of Inspiration.pptxInspiring Through Words Power of Inspiration.pptx
Inspiring Through Words Power of Inspiration.pptx
 
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts
(No.1)↠Young Call Girls in Sikanderpur (Gurgaon) ꧁❤ 9711911712 ❤꧂ Escorts
 
西伦敦大学毕业证学位证成绩单-怎么样做
西伦敦大学毕业证学位证成绩单-怎么样做西伦敦大学毕业证学位证成绩单-怎么样做
西伦敦大学毕业证学位证成绩单-怎么样做
 
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilable
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 AvilableCall Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilable
Call Girls In Karkardooma 83770 87607 Just-Dial Escorts Service 24X7 Avilable
 
Model Call Girl in Lado Sarai Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Lado Sarai Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Lado Sarai Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Lado Sarai Delhi reach out to us at 🔝9953056974🔝
 
E J Waggoner against Kellogg's Pantheism 8.pptx
E J Waggoner against Kellogg's Pantheism 8.pptxE J Waggoner against Kellogg's Pantheism 8.pptx
E J Waggoner against Kellogg's Pantheism 8.pptx
 
南新罕布什尔大学毕业证学位证成绩单-学历认证
南新罕布什尔大学毕业证学位证成绩单-学历认证南新罕布什尔大学毕业证学位证成绩单-学历认证
南新罕布什尔大学毕业证学位证成绩单-学历认证
 

Rubinius and Ruby | A Love Story