SlideShare une entreprise Scribd logo
1  sur  80
Télécharger pour lire hors ligne
Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
Last things first,
first things last.
                   What is the endgame?

                   In a word..




            Evan Phoenix - RubyConf 2007
Total



        Evan Phoenix - RubyConf 2007
Total world



              Evan Phoenix - RubyConf 2007
Total world domination



              Evan Phoenix - RubyConf 2007
For Ruby!
     Evan Phoenix - RubyConf 2007
375 days ago...
In a galaxy far far away...
                     (aka Denver)




                 Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
The end of Sydney

The beginning of Rubinius


                Evan Phoenix - RubyConf 2007
Enormous progress



           Evan Phoenix - RubyConf 2007
class Rubinius < Smalltalk
   # form
   include Ruby::Syntax
   # function
   include Ruby::Behavior
   # elbow grease
   include Google.search(“crazy cs papers”)
end

                           Evan Phoenix - RubyConf 2007
CS Nerd Attack Mode!
       (blitznerdo)




                      Evan Phoenix - RubyConf 2007
Generational
  Garbage Collection!
(with heap compaction)

              Evan Phoenix - RubyConf 2007
Bytecode execution!



            Evan Phoenix - RubyConf 2007
Stackless!
(uses no C stack)


           Evan Phoenix - RubyConf 2007
Self-hosted
kernel and compiler!


             Evan Phoenix - RubyConf 2007
Pre-compiled files!
      (.rbc)


            Evan Phoenix - RubyConf 2007
Builtin packaging!
  (.rba == .jar)


            Evan Phoenix - RubyConf 2007
Oh my!



     Evan Phoenix - RubyConf 2007
Audience
Participation


          Evan Phoenix - RubyConf 2007
Runtime and Kernel



            Evan Phoenix - RubyConf 2007
kernel
noun
a softer, usually edible part of a nut, seed, or fruit stone contained
within its hard shell.
• the seed and hard husk of a cereal, esp. wheat.
• [in sing. ] the central or most important part of
something : this is the kernel of the argument.
• the most basic level or core of an operating system of a
computer, responsible for resource allocation, file management,
and security.
• [as adj. ] Linguistics denoting a basic unmarked linguistic string.



                                             Evan Phoenix - RubyConf 2007
1.8



      Evan Phoenix - RubyConf 2007
84,516 lines of C
     0 lines of Ruby


             Evan Phoenix - RubyConf 2007
1.9



      Evan Phoenix - RubyConf 2007
128,786 lines of C
      0 lines of Ruby


               Evan Phoenix - RubyConf 2007
IronRuby
(pre-alpha1)



         Evan Phoenix - RubyConf 2007
48,282 lines of .cs
     0 lines of Ruby


             Evan Phoenix - RubyConf 2007
JRuby 1.0.2



        Evan Phoenix - RubyConf 2007
114,507 lines of .java
      0 lines of Ruby


              Evan Phoenix - RubyConf 2007
Rubinius



       Evan Phoenix - RubyConf 2007
25,398 lines of C
13,946 lines of Ruby


             Evan Phoenix - RubyConf 2007
NOT Ruby                 Ruby

150,000


125,000


100,000


 75,000


 50,000


 25,000


     0
          1.8        1.9   ironruby         jruby     rubinius


                                      Evan Phoenix - RubyConf 2007
Junior High
  Analysis


        Evan Phoenix - RubyConf 2007
1.8 and 1.9

Ruby for C programmers

              Evan Phoenix - RubyConf 2007
JRuby

Ruby for Java programmers

                 Evan Phoenix - RubyConf 2007
IronRuby

Ruby for C# programmers


              Evan Phoenix - RubyConf 2007
Rubinius

Ruby for Ruby programmers


               Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
Eating your own dog food
         ==
    Feedback loop

               Evan Phoenix - RubyConf 2007
Optimized Rubinius
   kernel / VM
       ==
Optimization for all
    Ruby code
             Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
You’re a Ruby developer,
 I’m a Ruby developer


               Evan Phoenix - RubyConf 2007
Of the rubists,
by the rubists,
for the rubists

           Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
Road, rubber,
all that jazz.


          Evan Phoenix - RubyConf 2007
Faster in 24 of 31 tests
        (yarv micro benchmarks against 1.8)




                        Evan Phoenix - RubyConf 2007
Moving quickly



          Evan Phoenix - RubyConf 2007
so why isn’t it done?



              Evan Phoenix - RubyConf 2007
Architecture/design is
  quite important


              Evan Phoenix - RubyConf 2007
but hard to create in a
       vacuum


              Evan Phoenix - RubyConf 2007
Mistakes were made.



            Evan Phoenix - RubyConf 2007
“Practice makes perfect”
             -- Ryan Davis (RubyConf 2007)




                    Evan Phoenix - RubyConf 2007
“A person who never made a
mistake never tried anything new”
                        -- Albert Einstein


 “You will do foolish things,
 but do this with enthusiasm”
                            -- Collete



                     Evan Phoenix - RubyConf 2007
-Ofun

    Evan Phoenix - RubyConf 2007
Rarely a burden,
 always a treat.


           Evan Phoenix - RubyConf 2007
Community



       Evan Phoenix - RubyConf 2007
57 committers
17 with 20 or more commits

36 with 100+ lines changed

                 Evan Phoenix - RubyConf 2007
Weekend patchers
       &
Code junkies alike

            Evan Phoenix - RubyConf 2007
Free flowing commit bit



              Evan Phoenix - RubyConf 2007
Marcus Crafter

     Pat Eyler




                 David Waite
Shane Becker          Evan Phoenix - RubyConf 2007
Eric Hodel
 Adam Gardiner




                    Brian Ford
Kevin Clark
                   Evan Phoenix - RubyConf 2007
Wilson Bilkovich
Ryan Davis




             Yehuda Katz    Evan Phoenix - RubyConf 2007
Abigail Phoenix
 John Hornbeck          (official wife)




                           Fog
                       (official mascot)

Eero Saynatkari   Evan Phoenix - RubyConf 2007
Thanks EY!

        Evan Phoenix - RubyConf 2007
Evan Phoenix
<evan@fallingsnow.net>



              Evan Phoenix - RubyConf 2007
Evan Phoenix - RubyConf 2007
Backtraces!

An exception has occurred:
    User requested termination with Control-C (Interrupt)

Backtrace:
        Readline.readline   at   kernel/core/readline.rb:52
          main.__script__   at   lib/bin/sirb.rb:78
                main.load   at   kernel/core/compile.rb:78
             main.require   at   kernel/core/compile.rb:129
               Array#each   at   kernel/core/array.rb:526
    Integer(Fixnum)#times   at   kernel/core/integer.rb:19
               Array#each   at   kernel/core/array.rb:526
             main.require   at   kernel/core/compile.rb:112
               Array#each   at   kernel/core/array.rb:526
    Integer(Fixnum)#times   at   kernel/core/integer.rb:19
               Array#each   at   kernel/core/array.rb:526
             main.require   at   kernel/core/compile.rb:111
          main.__script__   at   kernel/loader.rb:159




                                                 Evan Phoenix - RubyConf 2007
C extensions can
   misbehave




            Evan Phoenix - RubyConf 2007
VALUE test_segfault(VALUE self) {
                              // Get a pointer to address 4.
                              char *i = (char*)4;
                              // Attempt to read from address 4
                              // which is definitely not allowed.
                              x = *i;
                              // Never get this far.
                              return Qnil;
                            }

                     Raises an exception!
Segfault detected in function 0x90a00 (accessing 0x4) (MemorySegmentionError)


 SomeExtension#test_segfault         at   extensions/test/test.c
             main.__script__         at   extensions/test/test.rb:38
                   main.load         at   kernel/core/compile.rb:95
             main.__script__         at   kernel/loader.rb:122




                                                          Evan Phoenix - RubyConf 2007
Time lost to segfaults

                   1.8             rubinius
                                                       200
200


150


100
                              70


 50       30

                                                       10
                              6
          2


      1                   3                        5




                                      Evan Phoenix - RubyConf 2007
Memory usage




         Evan Phoenix - RubyConf 2007
• 1.8 garbage collector is
 simple, but too simple.

• Rubinius uses modern
 techniques to decrease
 memory usage and increase
 throughput



                      Evan Phoenix - RubyConf 2007
Fork you!



       Evan Phoenix - RubyConf 2007
In 1.8...

• Start up a program.
• Require all your code.
• fork() the process.
• Watch your memory double.

                    Evan Phoenix - RubyConf 2007
In Rubinius...

• Start up a program.
• Require all your code.
• fork() the process.
• Watch (virtually) NO change in the memory
  footprint!




                             Evan Phoenix - RubyConf 2007
Memory change per
    additional instance




1            2    3               4

       1.8       rubinius




                       Evan Phoenix - RubyConf 2007
Thank You!



       Evan Phoenix - RubyConf 2007

Contenu connexe

Similaire à rubyconf 2007 - Rubinius 1.0

Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemevanphx
 
Using rbenv in Production
Using rbenv in ProductionUsing rbenv in Production
Using rbenv in ProductionNic Benders
 
Linux Kernel - Let's Contribute!
Linux Kernel - Let's Contribute!Linux Kernel - Let's Contribute!
Linux Kernel - Let's Contribute!Levente Kurusa
 
Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Jean-Michel Garnier
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0Jan Sifra
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executablesJeremy Hinegardner
 

Similaire à rubyconf 2007 - Rubinius 1.0 (7)

Rubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystemRubinius - Improving the Rails ecosystem
Rubinius - Improving the Rails ecosystem
 
Using rbenv in Production
Using rbenv in ProductionUsing rbenv in Production
Using rbenv in Production
 
Linux Kernel - Let's Contribute!
Linux Kernel - Let's Contribute!Linux Kernel - Let's Contribute!
Linux Kernel - Let's Contribute!
 
Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0
 
Quick and Solid - Baremetal on OpenStack | Rico Lin
Quick and Solid - Baremetal on OpenStack | Rico LinQuick and Solid - Baremetal on OpenStack | Rico Lin
Quick and Solid - Baremetal on OpenStack | Rico Lin
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executables
 

Plus de evanphx

Rubinius For You - GoRuCo
Rubinius For You - GoRuCoRubinius For You - GoRuCo
Rubinius For You - GoRuCoevanphx
 
Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?evanphx
 
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me LatelyRubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Latelyevanphx
 
Staking Your Claim In Open Source
Staking Your Claim In Open SourceStaking Your Claim In Open Source
Staking Your Claim In Open Sourceevanphx
 
Rubinius 1.0 and more!
Rubinius 1.0 and more!Rubinius 1.0 and more!
Rubinius 1.0 and more!evanphx
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009evanphx
 
Accelerating Ruby with LLVM
Accelerating Ruby with LLVMAccelerating Ruby with LLVM
Accelerating Ruby with LLVMevanphx
 
Rubinius - A Tool of the Future
Rubinius - A Tool of the FutureRubinius - A Tool of the Future
Rubinius - A Tool of the Futureevanphx
 

Plus de evanphx (8)

Rubinius For You - GoRuCo
Rubinius For You - GoRuCoRubinius For You - GoRuCo
Rubinius For You - GoRuCo
 
Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?Rubinius - What Have You Done For Me Lately?
Rubinius - What Have You Done For Me Lately?
 
Rubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me LatelyRubinius - What Have You Done For Me Lately
Rubinius - What Have You Done For Me Lately
 
Staking Your Claim In Open Source
Staking Your Claim In Open SourceStaking Your Claim In Open Source
Staking Your Claim In Open Source
 
Rubinius 1.0 and more!
Rubinius 1.0 and more!Rubinius 1.0 and more!
Rubinius 1.0 and more!
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009
 
Accelerating Ruby with LLVM
Accelerating Ruby with LLVMAccelerating Ruby with LLVM
Accelerating Ruby with LLVM
 
Rubinius - A Tool of the Future
Rubinius - A Tool of the FutureRubinius - A Tool of the Future
Rubinius - A Tool of the Future
 

Dernier

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 

Dernier (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 

rubyconf 2007 - Rubinius 1.0

  • 1. Evan Phoenix - RubyConf 2007
  • 2. Evan Phoenix - RubyConf 2007
  • 3. Last things first, first things last. What is the endgame? In a word.. Evan Phoenix - RubyConf 2007
  • 4. Total Evan Phoenix - RubyConf 2007
  • 5. Total world Evan Phoenix - RubyConf 2007
  • 6. Total world domination Evan Phoenix - RubyConf 2007
  • 7. For Ruby! Evan Phoenix - RubyConf 2007
  • 8. 375 days ago... In a galaxy far far away... (aka Denver) Evan Phoenix - RubyConf 2007
  • 9. Evan Phoenix - RubyConf 2007
  • 10. Evan Phoenix - RubyConf 2007
  • 11. The end of Sydney The beginning of Rubinius Evan Phoenix - RubyConf 2007
  • 12. Enormous progress Evan Phoenix - RubyConf 2007
  • 13. class Rubinius < Smalltalk # form include Ruby::Syntax # function include Ruby::Behavior # elbow grease include Google.search(“crazy cs papers”) end Evan Phoenix - RubyConf 2007
  • 14. CS Nerd Attack Mode! (blitznerdo) Evan Phoenix - RubyConf 2007
  • 15. Generational Garbage Collection! (with heap compaction) Evan Phoenix - RubyConf 2007
  • 16. Bytecode execution! Evan Phoenix - RubyConf 2007
  • 17. Stackless! (uses no C stack) Evan Phoenix - RubyConf 2007
  • 18. Self-hosted kernel and compiler! Evan Phoenix - RubyConf 2007
  • 19. Pre-compiled files! (.rbc) Evan Phoenix - RubyConf 2007
  • 20. Builtin packaging! (.rba == .jar) Evan Phoenix - RubyConf 2007
  • 21. Oh my! Evan Phoenix - RubyConf 2007
  • 22. Audience Participation Evan Phoenix - RubyConf 2007
  • 23. Runtime and Kernel Evan Phoenix - RubyConf 2007
  • 24. kernel noun a softer, usually edible part of a nut, seed, or fruit stone contained within its hard shell. • the seed and hard husk of a cereal, esp. wheat. • [in sing. ] the central or most important part of something : this is the kernel of the argument. • the most basic level or core of an operating system of a computer, responsible for resource allocation, file management, and security. • [as adj. ] Linguistics denoting a basic unmarked linguistic string. Evan Phoenix - RubyConf 2007
  • 25. 1.8 Evan Phoenix - RubyConf 2007
  • 26. 84,516 lines of C 0 lines of Ruby Evan Phoenix - RubyConf 2007
  • 27. 1.9 Evan Phoenix - RubyConf 2007
  • 28. 128,786 lines of C 0 lines of Ruby Evan Phoenix - RubyConf 2007
  • 29. IronRuby (pre-alpha1) Evan Phoenix - RubyConf 2007
  • 30. 48,282 lines of .cs 0 lines of Ruby Evan Phoenix - RubyConf 2007
  • 31. JRuby 1.0.2 Evan Phoenix - RubyConf 2007
  • 32. 114,507 lines of .java 0 lines of Ruby Evan Phoenix - RubyConf 2007
  • 33. Rubinius Evan Phoenix - RubyConf 2007
  • 34. 25,398 lines of C 13,946 lines of Ruby Evan Phoenix - RubyConf 2007
  • 35. NOT Ruby Ruby 150,000 125,000 100,000 75,000 50,000 25,000 0 1.8 1.9 ironruby jruby rubinius Evan Phoenix - RubyConf 2007
  • 36. Junior High Analysis Evan Phoenix - RubyConf 2007
  • 37. 1.8 and 1.9 Ruby for C programmers Evan Phoenix - RubyConf 2007
  • 38. JRuby Ruby for Java programmers Evan Phoenix - RubyConf 2007
  • 39. IronRuby Ruby for C# programmers Evan Phoenix - RubyConf 2007
  • 40. Rubinius Ruby for Ruby programmers Evan Phoenix - RubyConf 2007
  • 41. Evan Phoenix - RubyConf 2007
  • 42. Eating your own dog food == Feedback loop Evan Phoenix - RubyConf 2007
  • 43. Optimized Rubinius kernel / VM == Optimization for all Ruby code Evan Phoenix - RubyConf 2007
  • 44. Evan Phoenix - RubyConf 2007
  • 45. You’re a Ruby developer, I’m a Ruby developer Evan Phoenix - RubyConf 2007
  • 46. Of the rubists, by the rubists, for the rubists Evan Phoenix - RubyConf 2007
  • 47. Evan Phoenix - RubyConf 2007
  • 48. Road, rubber, all that jazz. Evan Phoenix - RubyConf 2007
  • 49. Faster in 24 of 31 tests (yarv micro benchmarks against 1.8) Evan Phoenix - RubyConf 2007
  • 50. Moving quickly Evan Phoenix - RubyConf 2007
  • 51. so why isn’t it done? Evan Phoenix - RubyConf 2007
  • 52. Architecture/design is quite important Evan Phoenix - RubyConf 2007
  • 53. but hard to create in a vacuum Evan Phoenix - RubyConf 2007
  • 54. Mistakes were made. Evan Phoenix - RubyConf 2007
  • 55. “Practice makes perfect” -- Ryan Davis (RubyConf 2007) Evan Phoenix - RubyConf 2007
  • 56. “A person who never made a mistake never tried anything new” -- Albert Einstein “You will do foolish things, but do this with enthusiasm” -- Collete Evan Phoenix - RubyConf 2007
  • 57. -Ofun Evan Phoenix - RubyConf 2007
  • 58. Rarely a burden, always a treat. Evan Phoenix - RubyConf 2007
  • 59. Community Evan Phoenix - RubyConf 2007
  • 60. 57 committers 17 with 20 or more commits 36 with 100+ lines changed Evan Phoenix - RubyConf 2007
  • 61. Weekend patchers & Code junkies alike Evan Phoenix - RubyConf 2007
  • 62. Free flowing commit bit Evan Phoenix - RubyConf 2007
  • 63. Marcus Crafter Pat Eyler David Waite Shane Becker Evan Phoenix - RubyConf 2007
  • 64. Eric Hodel Adam Gardiner Brian Ford Kevin Clark Evan Phoenix - RubyConf 2007
  • 65. Wilson Bilkovich Ryan Davis Yehuda Katz Evan Phoenix - RubyConf 2007
  • 66. Abigail Phoenix John Hornbeck (official wife) Fog (official mascot) Eero Saynatkari Evan Phoenix - RubyConf 2007
  • 67. Thanks EY! Evan Phoenix - RubyConf 2007
  • 68. Evan Phoenix <evan@fallingsnow.net> Evan Phoenix - RubyConf 2007
  • 69. Evan Phoenix - RubyConf 2007
  • 70. Backtraces! An exception has occurred: User requested termination with Control-C (Interrupt) Backtrace: Readline.readline at kernel/core/readline.rb:52 main.__script__ at lib/bin/sirb.rb:78 main.load at kernel/core/compile.rb:78 main.require at kernel/core/compile.rb:129 Array#each at kernel/core/array.rb:526 Integer(Fixnum)#times at kernel/core/integer.rb:19 Array#each at kernel/core/array.rb:526 main.require at kernel/core/compile.rb:112 Array#each at kernel/core/array.rb:526 Integer(Fixnum)#times at kernel/core/integer.rb:19 Array#each at kernel/core/array.rb:526 main.require at kernel/core/compile.rb:111 main.__script__ at kernel/loader.rb:159 Evan Phoenix - RubyConf 2007
  • 71. C extensions can misbehave Evan Phoenix - RubyConf 2007
  • 72. VALUE test_segfault(VALUE self) { // Get a pointer to address 4. char *i = (char*)4; // Attempt to read from address 4 // which is definitely not allowed. x = *i; // Never get this far. return Qnil; } Raises an exception! Segfault detected in function 0x90a00 (accessing 0x4) (MemorySegmentionError) SomeExtension#test_segfault at extensions/test/test.c main.__script__ at extensions/test/test.rb:38 main.load at kernel/core/compile.rb:95 main.__script__ at kernel/loader.rb:122 Evan Phoenix - RubyConf 2007
  • 73. Time lost to segfaults 1.8 rubinius 200 200 150 100 70 50 30 10 6 2 1 3 5 Evan Phoenix - RubyConf 2007
  • 74. Memory usage Evan Phoenix - RubyConf 2007
  • 75. • 1.8 garbage collector is simple, but too simple. • Rubinius uses modern techniques to decrease memory usage and increase throughput Evan Phoenix - RubyConf 2007
  • 76. Fork you! Evan Phoenix - RubyConf 2007
  • 77. In 1.8... • Start up a program. • Require all your code. • fork() the process. • Watch your memory double. Evan Phoenix - RubyConf 2007
  • 78. In Rubinius... • Start up a program. • Require all your code. • fork() the process. • Watch (virtually) NO change in the memory footprint! Evan Phoenix - RubyConf 2007
  • 79. Memory change per additional instance 1 2 3 4 1.8 rubinius Evan Phoenix - RubyConf 2007
  • 80. Thank You! Evan Phoenix - RubyConf 2007