Joy ofThe      Rubinius
AgonyThe        of      RubySpec
http://www.flickr.com/photos/sukaina/3506948906/
∞more transitions
“I lay awake at night     dreaming about how     to make developers     happy”http://dev-logger.blogspot.com/2009/01/reaso...
caution(truth may be stretched)
attention
question
act
emotional               l           icame        ys   n  tal        ph
WhyRubinius
whyuserubinius.com
happy fun
happy funserious business™
serious business™happy fun
when itʼs not fun   anymore
proud to use Ruby
http://terrychay.com/article/egos-and-assholes.shtml
we use blocks
canʼt we all just  get along?
feeling deep pleasure   or satisfaction
Microsoft vs Apple
pragmatic
ph     ys icalem                mental    oti       on           al
Architecture         your application core library         standard lib C-API          JIT      primitives                ...
Architecture         your application core library         standard lib C-API          JIT      primitives                ...
Virtual Machine Method     Constant Primitive Dispatch    Lookup Operations      IO            Threads       Garbage Colle...
Virtual Machine Method     Constant Primitive Dispatch    Lookup Operations      IO            Threads       Garbage Colle...
Virtual Machine Method     Constant Primitive Dispatch    Lookup Operations      IO            Threads       Garbage Colle...
Virtual Machine Method     Constant Primitive Dispatch    Lookup Operations      IO            Threads       Garbage Colle...
Bytecode CompilerParser          Compiler                   Symbolic   Compiled   Compiled String   AST      Bytecode    M...
Source → Parser → Compil
Source → Parser → Compiler → Virtu   Abstract Syntax Tree            script            class  name      superclass   metho...
Source → Parser → Compiler → Virtual Machin
Generational GC             Young         Mature Nursery             Semi-             Space         Immix           Large...
Immix:A Mark-Region Garbage Collector   with Space Efficiency, Fast    Collection, and Mutator          Performance  Blackb...
just-in-time compiler
LLVM
Rubinius is
modern
sophisticated
high-performance
Ruby environment
l               ntaphysical                  me                       al                     on                oti        ...
> time rbx -e ‘puts 1’0.3864s> time ruby -e ‘puts 1’0.0196s
ZOMG20x slower
or0.3668s slower
x 1000 tests
0.32s vs 6m
:’(
</3
M_script_           A                   foo   _block_
Bootstrappinghttp://www.myvintagesecret.com/page/7/
VM | OM
alpha.rbVM | OM
bootstrap/ alpha.rb VM | OM
platform/bootstrap/ alpha.rb VM | OM
common/platform/bootstrap/ alpha.rb VM | OM
delta/common/platform/bootstrap/ alpha.rb VM | OM
loader.rb  delta/common/platform/bootstrap/ alpha.rb VM | OM
problem
opportunity
all good thingscome to those    who wait
be lazy
1. save as list
2. load script
3. resolve on call
Ruby and C++sittinʼ in a tree...
kernel/bootstrap/array.rb
vm/builtin/array.hpp
kernel/bootstrap/array.rb
vm/builtin/array.hpp
vm/gen/primitives_glue.gen.hpp
LazyExecutable
kernel/bootstrap/lazy_executable.rb
vm/builtin/lazy_executable.hpp
vm/builtin/lazy_executable.cpp
detect
1. check method2. load if needed
encode
lib/compiler/compiled_file.rb
lib/compiler/compiled_file.rb
decode
vm/marshal.cpp
vm/marshal.cpp
vm/marshal.cpp
1. save as list2. load script3. resolve on call
how to contribute
1. run your code
2. file issues
3. read docs
> rbx docs
4. file issues
5. write libraries
6. talk to people
7. send patches
no effort is too small
gh:evanphx/rubinius  http://rubini.us
AgonyThe        of      RubySpec
array/index_spec.rb
array/index_spec.rb
integer/even_spec.rb
file/open_spec.rb
spec/compiler/and_spec.rb
3761   files16366   examples44765   expectations    0   failures    0   errors
99.5%
gh:rubyspec/rubyspechttp://rubyspec.org
Letʼs discuss...
| Brian Ford brixen{ rstat.us twitter IRC gmail }
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Reddirt2011
Upcoming SlideShare
Loading in …5
×

Reddirt2011

1,271 views
1,233 views

Published on

Rubinius and RubySpec talk at the contributing to Open Source track at Red Dirt Ruby Conference 2011. These are the full slides. The talk used an abbreviated selection of these slides.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,271
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Reddirt2011

  1. 1. Joy ofThe Rubinius
  2. 2. AgonyThe of RubySpec
  3. 3. http://www.flickr.com/photos/sukaina/3506948906/
  4. 4. ∞more transitions
  5. 5. “I lay awake at night dreaming about how to make developers happy”http://dev-logger.blogspot.com/2009/01/reasons-behind-ruby-by-yukihiro-matz.html
  6. 6. caution(truth may be stretched)
  7. 7. attention
  8. 8. question
  9. 9. act
  10. 10. emotional l icame ys n tal ph
  11. 11. WhyRubinius
  12. 12. whyuserubinius.com
  13. 13. happy fun
  14. 14. happy funserious business™
  15. 15. serious business™happy fun
  16. 16. when itʼs not fun anymore
  17. 17. proud to use Ruby
  18. 18. http://terrychay.com/article/egos-and-assholes.shtml
  19. 19. we use blocks
  20. 20. canʼt we all just get along?
  21. 21. feeling deep pleasure or satisfaction
  22. 22. Microsoft vs Apple
  23. 23. pragmatic
  24. 24. ph ys icalem mental oti on al
  25. 25. Architecture your application core library standard lib C-API JIT primitives garbagevirtual machine collector
  26. 26. Architecture your application core library standard lib C-API JIT primitives garbagevirtual machine collector
  27. 27. Virtual Machine Method Constant Primitive Dispatch Lookup Operations IO Threads Garbage Collector Bytecode Interpreter
  28. 28. Virtual Machine Method Constant Primitive Dispatch Lookup Operations IO Threads Garbage Collector Bytecode Interpreter
  29. 29. Virtual Machine Method Constant Primitive Dispatch Lookup Operations IO Threads Garbage Collector Bytecode Interpreter
  30. 30. Virtual Machine Method Constant Primitive Dispatch Lookup Operations IO Threads Garbage Collector Bytecode Interpreter
  31. 31. Bytecode CompilerParser Compiler Symbolic Compiled Compiled String AST Bytecode Method File
  32. 32. Source → Parser → Compil
  33. 33. Source → Parser → Compiler → Virtu Abstract Syntax Tree script class name superclass methodExclaimer nil blurt
  34. 34. Source → Parser → Compiler → Virtual Machin
  35. 35. Generational GC Young Mature Nursery Semi- Space Immix Large Object Space
  36. 36. Immix:A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance Blackburn, S. & McKinley, K. (PLDI 2008)
  37. 37. just-in-time compiler
  38. 38. LLVM
  39. 39. Rubinius is
  40. 40. modern
  41. 41. sophisticated
  42. 42. high-performance
  43. 43. Ruby environment
  44. 44. l ntaphysical me al on oti em
  45. 45. > time rbx -e ‘puts 1’0.3864s> time ruby -e ‘puts 1’0.0196s
  46. 46. ZOMG20x slower
  47. 47. or0.3668s slower
  48. 48. x 1000 tests
  49. 49. 0.32s vs 6m
  50. 50. :’(
  51. 51. </3
  52. 52. M_script_ A foo _block_
  53. 53. Bootstrappinghttp://www.myvintagesecret.com/page/7/
  54. 54. VM | OM
  55. 55. alpha.rbVM | OM
  56. 56. bootstrap/ alpha.rb VM | OM
  57. 57. platform/bootstrap/ alpha.rb VM | OM
  58. 58. common/platform/bootstrap/ alpha.rb VM | OM
  59. 59. delta/common/platform/bootstrap/ alpha.rb VM | OM
  60. 60. loader.rb delta/common/platform/bootstrap/ alpha.rb VM | OM
  61. 61. problem
  62. 62. opportunity
  63. 63. all good thingscome to those who wait
  64. 64. be lazy
  65. 65. 1. save as list
  66. 66. 2. load script
  67. 67. 3. resolve on call
  68. 68. Ruby and C++sittinʼ in a tree...
  69. 69. kernel/bootstrap/array.rb
  70. 70. vm/builtin/array.hpp
  71. 71. kernel/bootstrap/array.rb
  72. 72. vm/builtin/array.hpp
  73. 73. vm/gen/primitives_glue.gen.hpp
  74. 74. LazyExecutable
  75. 75. kernel/bootstrap/lazy_executable.rb
  76. 76. vm/builtin/lazy_executable.hpp
  77. 77. vm/builtin/lazy_executable.cpp
  78. 78. detect
  79. 79. 1. check method2. load if needed
  80. 80. encode
  81. 81. lib/compiler/compiled_file.rb
  82. 82. lib/compiler/compiled_file.rb
  83. 83. decode
  84. 84. vm/marshal.cpp
  85. 85. vm/marshal.cpp
  86. 86. vm/marshal.cpp
  87. 87. 1. save as list2. load script3. resolve on call
  88. 88. how to contribute
  89. 89. 1. run your code
  90. 90. 2. file issues
  91. 91. 3. read docs
  92. 92. > rbx docs
  93. 93. 4. file issues
  94. 94. 5. write libraries
  95. 95. 6. talk to people
  96. 96. 7. send patches
  97. 97. no effort is too small
  98. 98. gh:evanphx/rubinius http://rubini.us
  99. 99. AgonyThe of RubySpec
  100. 100. array/index_spec.rb
  101. 101. array/index_spec.rb
  102. 102. integer/even_spec.rb
  103. 103. file/open_spec.rb
  104. 104. spec/compiler/and_spec.rb
  105. 105. 3761 files16366 examples44765 expectations 0 failures 0 errors
  106. 106. 99.5%
  107. 107. gh:rubyspec/rubyspechttp://rubyspec.org
  108. 108. Letʼs discuss...
  109. 109. | Brian Ford brixen{ rstat.us twitter IRC gmail }

×