Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Galois, Inc 2010

on

  • 1,165 views

 

Statistics

Views

Total Views
1,165
Views on SlideShare
1,165
Embed Views
0

Actions

Likes
0
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Galois, Inc 2010 Galois, Inc 2010 Presentation Transcript

  • The Rubinius Virtual Machine Brian Ford brixen @ {twitter IRC gmail} presented at Galois, Inc 30 Nov 10
  • Rubinius runs Ruby
  • Methods
  • Methods
  • Methods
  • Blocks
  • Blocks
  • Scopes
  • Classes
  • Classes
  • Modules
  • Modules
  • Modules
  • Singleton Classes
  • Singleton Classes
  • Expressions
  • Rubinius History
  • Sydneythread-safe MRI prototype B prototype S
  • ~4 years early Git useropen commit policy
  • 2 virtual machines1.75 garbage collectors 3 bytecode compilers 1 Ruby core library 2 primitives systems 2 JIT compilerstons of RubySpecs
  • Virtual Machine
  • bootstrapping
  • VM | OM
  • object memory ontology methods
  • vm/environment.cpp vm/ontology.cpp vm/builtin/
  • alpha.rbVM | OM
  • bootstrap/ alpha.rb VM | OM
  • kernel/bootstrap/array.rb
  • platform/bootstrap/ alpha.rb VM | OM
  • kernel/platform/posix.rb
  • 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
  • set pathsprocess optionsrun application
  • loader.rb delta/Ruby common/ platform/ bootstrap/ alpha.rbC++ VM | OM
  • interpreters
  • vm/instructions.def
  • vm/instructions.def
  • vm/instructions.def
  • vm/instructions.def
  • vm/instructions.def
  • vm/instructions.def
  • vm/instructions.def
  • Bytecode CompilerString Symbolic Compiled Compiled AST Bytecode Method File File
  • lib/compiler/compiler.rb
  • lib/compiler/ast/operators.rb
  • spec/compiler/and_spec.rb
  • field access
  • kernel/bootstrap/array.rb
  • vm/builtin/array.hpp
  • primitives
  • kernel/bootstrap/array.rb
  • vm/builtin/array.hpp
  • vm/gen/primitives_glue.gen.hpp
  • Garbage Collector
  • Generational Young MatureNursery Semi- Space Immix Large Object Space
  • Nurseryslab 1 slab 2
  • auto-tuned lifetime
  • Immix:A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance Blackburn, S. & McKinley, K. (PLDI 2008)
  • C-API
  • MRI native API legacy code poor quality
  • Inflated Headers Flags field 1 ...
  • Inflated Headers Tagged Flags Pointer field 1 handle ...
  • JIT
  • bytecode to LLVM IR
  • program JITthreads threads
  • vm/llvm/jit_visit.hpp
  • uncommon_interpreter
  • pure functions
  • Custom Passesguard elimination
  • rbx -Xjit.dump_code=N LLVM IR = 1 optimized IR = 2 machine code = 4
  • exceptions
  • RubySpec
  • array/index_spec.rb
  • array/index_spec.rb
  • integer/even_spec.rb
  • file/open_spec.rb
  • 3521 files, 15769 examples,43797 expectations, 0 failures, 0 errors
  • Future Rubinius
  • full concurrency (hydra branch)
  • method store (image?)lazy loading
  • build system
  • modularityswap core library
  • LLVM metadatatype propagation
  • LLVM metadatatype propagation
  • runtime compilation with clang (Windows, C-ext)
  • StrongRuby ?
  • Androidmobile
  • Web rubini.usGithub github.com/evanphx/rubiniusIRC #rubinius
  • Thank you