SlideShare a Scribd company logo
Rubinius
Rubini us
Rubini.us
rubini.us
http://rubini.us
Rubinius
http://godfat.org/slide/2008-12-21-rubinius.pdf
History and Design Goals


Architecture and Object Model
History and Design Goals


Architecture and Object Model
Evan Phoenix
February of
   2006
RubySpec
MSpec
Engine Yard
C VM Shotgun
C VM Shotgun
C++ VM
CxxTest
LLVM
History and Design Goals


Architecture and Object Model
Reliable, Rock Solid Code
Reliable, Rock Solid Code
      Full Test Coverage
2008-12-21 Rubinius
Clean, Readable Code
Clean, Readable Code
 Little Lines in Each File
Clean, Readable Code
Macro, Code Generator, Rake Task
Clean, Readable Code
        CMake
Clean, Readable Code
        CMake
Clean, Readable Code
C++ Object to Ruby Object 1 to 1 Mapping
2008-12-21 Rubinius
2008-12-21 Rubinius
Modern Techniques
Modern Techniques
Pluggable Garbage Collectors
Modern Techniques
Pluggable Garbage Collectors
       • Stop-and-Copy
Modern Techniques
Pluggable Garbage Collectors
       • Stop-and-Copy
       • Mark-and-Sweep
Modern Techniques
     Optimizers
Modern Techniques
   Git, Rake, LLVM
Squeak
the Smalltalk-80 Implementation
Squeak
 Slang
Squeak
• Alan Kay
• Dan Ingalls
• Adele Goldberg
Smalltalk
 Xerox PARC
Smalltalk
      Object-Oriented
(differ from Simula and C++)
Smalltalk
   GUI
Smalltalk
   MVC
History and Design Goals


Architecture and Object Model
Real Machine
C++ Virtual Machine

   Real Machine
kernel/bootstrap

C++ Virtual Machine

   Real Machine
kernel/platform

 kernel/bootstrap

C++ Virtual Machine

   Real Machine
kernel/common

 kernel/platform

 kernel/bootstrap

C++ Virtual Machine

   Real Machine
kernel/delta

  kernel/common

 kernel/platform

 kernel/bootstrap

C++ Virtual Machine

   Real Machine
kernel/delta

  Ruby       kernel/common
Runtime
(kernel)    kernel/platform

            kernel/bootstrap

           C++ Virtual Machine

              Real Machine
lib/compiler

                             kernel/delta

  Ruby                      kernel/common
Runtime
(kernel)                   kernel/platform

                           kernel/bootstrap

                          C++ Virtual Machine

                             Real Machine
lib/compiler         lib/*

                             kernel/delta

  Ruby                      kernel/common
Runtime
(kernel)                   kernel/platform

                           kernel/bootstrap

                          C++ Virtual Machine

                             Real Machine
Your App

           lib/compiler         lib/*           Your App

                             kernel/delta

  Ruby                      kernel/common
Runtime
(kernel)                   kernel/platform

                           kernel/bootstrap

                          C++ Virtual Machine

                             Real Machine
Your App

           lib/compiler            lib/*              Your App

                                kernel/delta

  Ruby                         kernel/common
Runtime
(kernel)                      kernel/platform

                              kernel/bootstrap

                             C++ Virtual Machine
                          Low Level Virtual Machine
                                Real Machine
Outside the Ruby World
Outside the Ruby World
      C++ Primitives
Outside the Ruby World
Foreign Function Interface - FFI
Outside the Ruby World
        Subtend
History and Design Goals


Architecture and Object Model
Hello
World!
def       method_missing m; puts m;         end
def Object.const_missing c; print "#{c}, "; end




                 Hello.World!
puts ‘Hello, World!’
puts ‘Hello, World!’
self.send :puts, ‘Hello, World!’
(TOPLEVEL_BINDING.context.receiver ||
TOPLEVEL      MethodContext.current.receiver   )




      puts ‘Hello, World!’
   self.send :puts, ‘Hello, World!’
(TOPLEVEL_BINDING.context.receiver ||
TOPLEVEL      MethodContext.current.receiver   )



 def __script__


       puts ‘Hello, World!’
   self.send :puts, ‘Hello, World!’



 end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__


        puts ‘Hello, World!’



  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__


        puts ‘Hello, World!’
        #<SendSite:0x26 name=puts
                 hits=0 misses=0>

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘


          print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=0 misses=0>

           print ‘World!‘
        #<SendSite:0x28 name=print
                  hits=0 misses=0>
  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘


          print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=0 misses=0>

           print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=0 misses=0>

           print ‘World!‘
        #<SendSite:0x28 name=print
                  hits=0 misses=0>
  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘


          print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=1 misses=0>

           print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=1 misses=0>

           print ‘World!‘
        #<SendSite:0x28 name=print
                  hits=1 misses=0>
  end
class C
  def print
  end
end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘


          print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=0 misses=0>

           print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=0 misses=0>

           print ‘World!‘
        #<SendSite:0x28 name=print
                  hits=0 misses=0>
  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘


          print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=1 misses=0>

           print ‘World!‘

  end
CompiledMethod   (method(:__script__).compiled_method)




  def __script__
         print ‘Hello,‘
        #<SendSite:0x26 name=print
                  hits=1 misses=0>

           print ‘World!‘
        #<SendSite:0x28 name=print
                  hits=1 misses=0>
  end
2008-12-21 Rubinius
• CompiledMethod   • SendSite
• MethodContext    • MethodTable
• StaticScope      • LookupTable
Method
Dispatch
D   C   Obj
D     C   Obj




Meta
 D
D      C     Obj




Meta   Meta
 D      C
D      C     Obj




Meta   Meta   Meta
 D      C     Obj
D      C     Obj




Meta   Meta   Meta
 D      C     Obj
D      C     Obj




Meta   Meta   Meta
 D      C     Obj
D      C     Obj




Meta   Meta   Meta
                     Class
 D      C     Obj
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM
 D
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM
 D      C
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM
 D      C     Obj
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta
 D      C     Obj    Class
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta
 D      C     Obj    Class
Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta
 D      C     Obj    Class
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta
 D      C     Obj    Class
Obj




Meta
       Class   Mod
Obj




MM     Meta
Obj    Class
Obj




Meta
       Class   Mod
Obj




MM     Meta
Obj    Class




       Meta
        MC
Obj




Meta
       Class   Mod
Obj




MM     Meta    Meta
Obj    Class   Class




       Meta
        MC
Obj




Meta
       Class   Mod
Obj




MM     Meta    Meta    Meta
Obj    Class   Class   Mod




       Meta
        MC
Obj




Meta
       Class   Mod
Obj




MM     Meta    Meta    Meta
Obj    Class   Class   Mod




       Meta
        MC
Class   Mod




Meta    Meta    Meta
Class   Class   Mod




Meta
 MC
Meta
Class

        Class   Mod




                Meta    Meta
                Class   Mod




        Meta
         MC
Meta
        Class
Class

                       Mod




                       Meta    Meta
                       Class   Mod




                Meta
                 MC
Meta
        Class          Mod
Class




                             Meta    Meta
                             Class   Mod




                Meta
                 MC
Meta
        Class          Mod
Class




                             Meta    Meta
                             Class   Mod




                Meta
                 MC
Meta
        Class          Mod
Class




                             Meta    Meta
                             Class   Mod




                Meta
                 MC
Meta
        Class   Mod
Class




Meta
 MC                   Meta    Meta
                      Class   Mod
Meta
        Class   Mod
Class




Meta    Meta
 MC     Class         Meta
                      Mod
Meta
        Class   Mod
Class




Meta    Meta    Meta
 MC     Class   Mod
Meta
        Class   Mod
Class




Meta    Meta    Meta
 MC     Class   Mod
Meta
        Class   Mod
Class




Meta    Meta    Meta
 MC     Class   Mod
Meta
        Class   Mod
Class




Meta    Meta    Meta
 MC     Class   Mod
Meta
        Class   Mod
Class




Meta    Meta    Meta
 MC     Class   Mod
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
D      C     Obj




Meta   Meta   Meta
                     Class   Mod
 D      C     Obj




 MM     MM    MM     Meta    Meta    Meta
 D      C     Obj    Class   Class   Mod




                     Meta
                      MC
2008-12-21 Rubinius
• BlockEnvironment      • Rubinius::Task
• InstructionSequence   • Channel
• Compiler              • Actor
• Breakpoint            • Rubinius::VM
Reference: Rubinius

•   http://rubini.us/

•   http://github.com/evanphx/rubinius/

•   http://rubinius.lighthouseapp.com/

•   http://groups.google.com/group/rubinius-dev/
Reference: Articles
•   http://blog.fallingsnow.net/category/rubinius/

•   http://betterruby.wordpress.com/

•   http://www.infoq.com/news/2007/07/rubinius-interview-part-one

•   http://blog.nicksieger.com/articles/2006/10/20/rubyconf-sydney-and-rubinius

•   http://www.klankboomklang.com/2007/10/05/the-metaclass/

•   http://www.hawthorne-press.com/WebPage_RHG.html
Reference: Others


•   http://rubyspec.org/

•   http://llvm.org/

•   http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html
Reference: Wikipedia
                                             •   http://en.wikipedia.org/wiki/Alan_Kay

•   http://en.wikipedia.org/wiki/Rubinius    •   http://en.wikipedia.org/wiki/PARC_(company)

•   http://en.wikipedia.org/wiki/Squeak      •   http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

•   http://en.wikipedia.org/wiki/Smalltalk   •   http://en.wikipedia.org/wiki/Self-hosting

•   http://en.wikipedia.org/wiki/Simula      •   http://en.wikipedia.org/wiki/PyPy

•   http://en.wikipedia.org/wiki/Model-view-controller
git clone 
git://github.com/evanphx/rubinius.git

cd rubinius; rake build
?

More Related Content

What's hot

Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
jefferson Otoni Lima
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in os
GenchiLu1
 
Gate of Agile Web Development
Gate of Agile Web DevelopmentGate of Agile Web Development
Gate of Agile Web Development
Koichi ITO
 
Git hooks
Git hooksGit hooks
Git hooks
BinBin He
 
Git hooks for front end developers
Git hooks for front end developersGit hooks for front end developers
Git hooks for front end developers
Bradley Gore
 
Git hooks
Git hooksGit hooks
Git hooks
Skills Matter
 
Taking containers from development to production
Taking containers from development to productionTaking containers from development to production
Taking containers from development to production
Suraj Deshmukh
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
 
PHP Development Tools
PHP  Development ToolsPHP  Development Tools
PHP Development Tools
Antony Abramchenko
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
Hiroshi SHIBATA
 
GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28
Jorge Hidalgo
 
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
Hiroshi SHIBATA
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS Meetup
LINAGORA
 
20141210 rakuten techtalk
20141210 rakuten techtalk20141210 rakuten techtalk
20141210 rakuten techtalk
Hiroshi SHIBATA
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
Kiwamu Okabe
 
Deployment made easy with Git
Deployment made easy with GitDeployment made easy with Git
Deployment made easy with Git
Igor Santos
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Md.Zahidur Rahman
 
GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18
Jorge Hidalgo
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
Hiroshi SHIBATA
 

What's hot (20)

Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in os
 
Gate of Agile Web Development
Gate of Agile Web DevelopmentGate of Agile Web Development
Gate of Agile Web Development
 
Git hooks
Git hooksGit hooks
Git hooks
 
Git hooks for front end developers
Git hooks for front end developersGit hooks for front end developers
Git hooks for front end developers
 
Git hooks
Git hooksGit hooks
Git hooks
 
Taking containers from development to production
Taking containers from development to productionTaking containers from development to production
Taking containers from development to production
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
PHP Development Tools
PHP  Development ToolsPHP  Development Tools
PHP Development Tools
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28
 
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
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS Meetup
 
20141210 rakuten techtalk
20141210 rakuten techtalk20141210 rakuten techtalk
20141210 rakuten techtalk
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
 
Deployment made easy with Git
Deployment made easy with GitDeployment made easy with Git
Deployment made easy with Git
 
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular CompilationKnowledge Sharing Session on JavaScript Source Maps & Angular Compilation
Knowledge Sharing Session on JavaScript Source Maps & Angular Compilation
 
GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
 

Viewers also liked

Concurrent Ruby Application Servers
Concurrent Ruby Application ServersConcurrent Ruby Application Servers
Concurrent Ruby Application Servers
Lin Jen-Shin
 
2007-06-24 The Lost Piece
2007-06-24 The Lost Piece2007-06-24 The Lost Piece
2007-06-24 The Lost Piece
Lin Jen-Shin
 
2012 05-08-lambda-draft
2012 05-08-lambda-draft2012 05-08-lambda-draft
2012 05-08-lambda-draft
Lin Jen-Shin
 
2010 04-24-cerealize
2010 04-24-cerealize2010 04-24-cerealize
2010 04-24-cerealize
Lin Jen-Shin
 
2010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 22010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 2
Lin Jen-Shin
 
2008-01-25 Tangible Value
2008-01-25 Tangible Value2008-01-25 Tangible Value
2008-01-25 Tangible Value
Lin Jen-Shin
 
2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming
Lin Jen-Shin
 

Viewers also liked (7)

Concurrent Ruby Application Servers
Concurrent Ruby Application ServersConcurrent Ruby Application Servers
Concurrent Ruby Application Servers
 
2007-06-24 The Lost Piece
2007-06-24 The Lost Piece2007-06-24 The Lost Piece
2007-06-24 The Lost Piece
 
2012 05-08-lambda-draft
2012 05-08-lambda-draft2012 05-08-lambda-draft
2012 05-08-lambda-draft
 
2010 04-24-cerealize
2010 04-24-cerealize2010 04-24-cerealize
2010 04-24-cerealize
 
2010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 22010-04-13 Reactor Pattern & Event Driven Programming 2
2010-04-13 Reactor Pattern & Event Driven Programming 2
 
2008-01-25 Tangible Value
2008-01-25 Tangible Value2008-01-25 Tangible Value
2008-01-25 Tangible Value
 
2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming2010-02-09 Reactor Pattern & Event Driven Programming
2010-02-09 Reactor Pattern & Event Driven Programming
 

Similar to 2008-12-21 Rubinius

Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret Sauce
Jesse Vincent
 
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Jesse Vincent
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern Compilers
Min-Yih Hsu
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manor
martinbtt
 
DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)
Oleg Zinchenko
 
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
Kouji Matsui
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)
Fwdays
 
Practical Groovy DSL
Practical Groovy DSLPractical Groovy DSL
Practical Groovy DSL
Guillaume Laforge
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
craig lehmann
 
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег ЗинченкоWebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
GeeksLab Odessa
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developers
Max Titov
 
There and Back Again
There and Back AgainThere and Back Again
There and Back Again
Joshua Ballanco
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
Lin Yo-An
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
Vagner Rodrigues
 
A Life of breakpoint
A Life of breakpointA Life of breakpoint
A Life of breakpoint
Hajime Morrita
 
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
Igalia
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
National Cheng Kung University
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvm
Pawel Szulc
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
Sang Don Kim
 
Damage Control
Damage ControlDamage Control
Damage Control
sintaxi
 

Similar to 2008-12-21 Rubinius (20)

Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret Sauce
 
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern Compilers
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manor
 
DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)DDD on example of Symfony (SfCampUA14)
DDD on example of Symfony (SfCampUA14)
 
Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018Making archive IL2C #6-55 dotnet600 2018
Making archive IL2C #6-55 dotnet600 2018
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)
 
Practical Groovy DSL
Practical Groovy DSLPractical Groovy DSL
Practical Groovy DSL
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
 
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег ЗинченкоWebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developers
 
There and Back Again
There and Back AgainThere and Back Again
There and Back Again
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
 
A Life of breakpoint
A Life of breakpointA Life of breakpoint
A Life of breakpoint
 
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvm
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
Damage Control
Damage ControlDamage Control
Damage Control
 

Recently uploaded

Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...
chetankumar9855
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Networks
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
aakash malhotra
 
Using LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and MilvusUsing LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and Milvus
Zilliz
 
How to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdfHow to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdf
ChristopherTHyatt
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Zilliz
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
Priyanka Aash
 
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAIApplying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
ssuserd4e0d2
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptxDublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
Kunal Gupta
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
bhumivarma35300
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 

Recently uploaded (20)

Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...Amul milk launches in US: Key details of its new products ...
Amul milk launches in US: Key details of its new products ...
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
 
Using LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and MilvusUsing LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and Milvus
 
How to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdfHow to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdf
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
 
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAIApplying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
Applying Retrieval-Augmented Generation (RAG) to Combat Hallucinations in GenAI
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptxDublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
Dublin_mulesoft_meetup_Mulesoft_Salesforce_Integration (1).pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
High Profile Girls call Service Pune 000XX00000 Provide Best And Top Girl Ser...
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 

2008-12-21 Rubinius

  • 7. History and Design Goals Architecture and Object Model
  • 8. History and Design Goals Architecture and Object Model
  • 10. February of 2006
  • 12. MSpec
  • 18. LLVM
  • 19. History and Design Goals Architecture and Object Model
  • 21. Reliable, Rock Solid Code Full Test Coverage
  • 24. Clean, Readable Code Little Lines in Each File
  • 25. Clean, Readable Code Macro, Code Generator, Rake Task
  • 28. Clean, Readable Code C++ Object to Ruby Object 1 to 1 Mapping
  • 33. Modern Techniques Pluggable Garbage Collectors • Stop-and-Copy
  • 34. Modern Techniques Pluggable Garbage Collectors • Stop-and-Copy • Mark-and-Sweep
  • 35. Modern Techniques Optimizers
  • 36. Modern Techniques Git, Rake, LLVM
  • 39. Squeak • Alan Kay • Dan Ingalls • Adele Goldberg
  • 41. Smalltalk Object-Oriented (differ from Simula and C++)
  • 42. Smalltalk GUI
  • 43. Smalltalk MVC
  • 44. History and Design Goals Architecture and Object Model
  • 46. C++ Virtual Machine Real Machine
  • 50. kernel/delta kernel/common kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine
  • 51. kernel/delta Ruby kernel/common Runtime (kernel) kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine
  • 52. lib/compiler kernel/delta Ruby kernel/common Runtime (kernel) kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine
  • 53. lib/compiler lib/* kernel/delta Ruby kernel/common Runtime (kernel) kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine
  • 54. Your App lib/compiler lib/* Your App kernel/delta Ruby kernel/common Runtime (kernel) kernel/platform kernel/bootstrap C++ Virtual Machine Real Machine
  • 55. Your App lib/compiler lib/* Your App kernel/delta Ruby kernel/common Runtime (kernel) kernel/platform kernel/bootstrap C++ Virtual Machine Low Level Virtual Machine Real Machine
  • 57. Outside the Ruby World C++ Primitives
  • 58. Outside the Ruby World Foreign Function Interface - FFI
  • 59. Outside the Ruby World Subtend
  • 60. History and Design Goals Architecture and Object Model
  • 62. def method_missing m; puts m; end def Object.const_missing c; print "#{c}, "; end Hello.World!
  • 64. puts ‘Hello, World!’ self.send :puts, ‘Hello, World!’
  • 65. (TOPLEVEL_BINDING.context.receiver || TOPLEVEL MethodContext.current.receiver ) puts ‘Hello, World!’ self.send :puts, ‘Hello, World!’
  • 66. (TOPLEVEL_BINDING.context.receiver || TOPLEVEL MethodContext.current.receiver ) def __script__ puts ‘Hello, World!’ self.send :puts, ‘Hello, World!’ end
  • 67. CompiledMethod (method(:__script__).compiled_method) def __script__ puts ‘Hello, World!’ end
  • 68. CompiledMethod (method(:__script__).compiled_method) def __script__ puts ‘Hello, World!’ #<SendSite:0x26 name=puts hits=0 misses=0> end
  • 69. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ print ‘World!‘ end
  • 70. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=0 misses=0> print ‘World!‘ #<SendSite:0x28 name=print hits=0 misses=0> end
  • 71. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ print ‘World!‘ end
  • 72. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=0 misses=0> print ‘World!‘ end
  • 73. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=0 misses=0> print ‘World!‘ #<SendSite:0x28 name=print hits=0 misses=0> end
  • 74. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ print ‘World!‘ end
  • 75. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=1 misses=0> print ‘World!‘ end
  • 76. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=1 misses=0> print ‘World!‘ #<SendSite:0x28 name=print hits=1 misses=0> end
  • 77. class C def print end end
  • 78. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ print ‘World!‘ end
  • 79. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=0 misses=0> print ‘World!‘ end
  • 80. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=0 misses=0> print ‘World!‘ #<SendSite:0x28 name=print hits=0 misses=0> end
  • 81. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ print ‘World!‘ end
  • 82. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=1 misses=0> print ‘World!‘ end
  • 83. CompiledMethod (method(:__script__).compiled_method) def __script__ print ‘Hello,‘ #<SendSite:0x26 name=print hits=1 misses=0> print ‘World!‘ #<SendSite:0x28 name=print hits=1 misses=0> end
  • 85. • CompiledMethod • SendSite • MethodContext • MethodTable • StaticScope • LookupTable
  • 87. D C Obj
  • 88. D C Obj Meta D
  • 89. D C Obj Meta Meta D C
  • 90. D C Obj Meta Meta Meta D C Obj
  • 91. D C Obj Meta Meta Meta D C Obj
  • 92. D C Obj Meta Meta Meta D C Obj
  • 93. D C Obj Meta Meta Meta Class D C Obj
  • 94. D C Obj Meta Meta Meta Class Mod D C Obj
  • 95. D C Obj Meta Meta Meta Class Mod D C Obj
  • 96. Meta Meta Meta Class Mod D C Obj
  • 97. Meta Meta Meta Class Mod D C Obj MM D
  • 98. Meta Meta Meta Class Mod D C Obj MM MM D C
  • 99. Meta Meta Meta Class Mod D C Obj MM MM MM D C Obj
  • 100. Meta Meta Meta Class Mod D C Obj MM MM MM Meta D C Obj Class
  • 101. Meta Meta Meta Class Mod D C Obj MM MM MM Meta D C Obj Class
  • 102. Meta Meta Meta Class Mod D C Obj MM MM MM Meta D C Obj Class
  • 103. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta D C Obj Class
  • 104. Obj Meta Class Mod Obj MM Meta Obj Class
  • 105. Obj Meta Class Mod Obj MM Meta Obj Class Meta MC
  • 106. Obj Meta Class Mod Obj MM Meta Meta Obj Class Class Meta MC
  • 107. Obj Meta Class Mod Obj MM Meta Meta Meta Obj Class Class Mod Meta MC
  • 108. Obj Meta Class Mod Obj MM Meta Meta Meta Obj Class Class Mod Meta MC
  • 109. Class Mod Meta Meta Meta Class Class Mod Meta MC
  • 110. Meta Class Class Mod Meta Meta Class Mod Meta MC
  • 111. Meta Class Class Mod Meta Meta Class Mod Meta MC
  • 112. Meta Class Mod Class Meta Meta Class Mod Meta MC
  • 113. Meta Class Mod Class Meta Meta Class Mod Meta MC
  • 114. Meta Class Mod Class Meta Meta Class Mod Meta MC
  • 115. Meta Class Mod Class Meta MC Meta Meta Class Mod
  • 116. Meta Class Mod Class Meta Meta MC Class Meta Mod
  • 117. Meta Class Mod Class Meta Meta Meta MC Class Mod
  • 118. Meta Class Mod Class Meta Meta Meta MC Class Mod
  • 119. Meta Class Mod Class Meta Meta Meta MC Class Mod
  • 120. Meta Class Mod Class Meta Meta Meta MC Class Mod
  • 121. Meta Class Mod Class Meta Meta Meta MC Class Mod
  • 122. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 123. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 124. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 125. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 126. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 127. D C Obj Meta Meta Meta Class Mod D C Obj MM MM MM Meta Meta Meta D C Obj Class Class Mod Meta MC
  • 129. • BlockEnvironment • Rubinius::Task • InstructionSequence • Channel • Compiler • Actor • Breakpoint • Rubinius::VM
  • 130. Reference: Rubinius • http://rubini.us/ • http://github.com/evanphx/rubinius/ • http://rubinius.lighthouseapp.com/ • http://groups.google.com/group/rubinius-dev/
  • 131. Reference: Articles • http://blog.fallingsnow.net/category/rubinius/ • http://betterruby.wordpress.com/ • http://www.infoq.com/news/2007/07/rubinius-interview-part-one • http://blog.nicksieger.com/articles/2006/10/20/rubyconf-sydney-and-rubinius • http://www.klankboomklang.com/2007/10/05/the-metaclass/ • http://www.hawthorne-press.com/WebPage_RHG.html
  • 132. Reference: Others • http://rubyspec.org/ • http://llvm.org/ • http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html
  • 133. Reference: Wikipedia • http://en.wikipedia.org/wiki/Alan_Kay • http://en.wikipedia.org/wiki/Rubinius • http://en.wikipedia.org/wiki/PARC_(company) • http://en.wikipedia.org/wiki/Squeak • http://en.wikipedia.org/wiki/Bootstrapping_(compilers) • http://en.wikipedia.org/wiki/Smalltalk • http://en.wikipedia.org/wiki/Self-hosting • http://en.wikipedia.org/wiki/Simula • http://en.wikipedia.org/wiki/PyPy • http://en.wikipedia.org/wiki/Model-view-controller
  • 135. ?