rubinius - godfat · modern techniques pluggable garbage collectors •mark-and-sweep...

135
Rubinius

Upload: others

Post on 01-Aug-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Rubinius

Page 2: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Rubini us

Page 3: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Rubini.us

Page 4: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

rubini.us

Page 5: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

rubini.ushttp://

Page 6: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Rubiniushttp://godfat.org/slide/2008-12-21-rubinius.pdf

Page 7: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

History and Design Goals

Architecture and Object Model

Page 8: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

History and Design Goals

Architecture and Object Model

Page 9: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Evan Phoenix

Page 10: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

February of 2006

Page 11: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

RubySpec

Page 12: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MSpec

Page 13: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Engine Yard

Page 14: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

C VM Shotgun

Page 15: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

C VM Shotgun

Page 16: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

C++ VM

Page 17: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CxxTest

Page 18: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

LLVM

Page 19: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

History and Design Goals

Architecture and Object Model

Page 20: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Reliable, Rock Solid Code

Page 21: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Reliable, Rock Solid CodeFull Test Coverage

Page 22: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

健康

Page 23: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable Code

Page 24: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable CodeLittle Lines in Each File

Page 25: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable CodeMacro, Code Generator, Rake Task

Page 26: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable CodeCMake

Page 27: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable CodeCMake

Page 28: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Clean, Readable CodeC++ Object to Ruby Object 1 to 1 Mapping

Page 29: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

清新

Page 30: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

健康清新

Page 31: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern Techniques

Page 32: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern TechniquesPluggable Garbage Collectors

Page 33: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern TechniquesPluggable Garbage Collectors

•Stop-and-Copy

Page 34: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern TechniquesPluggable Garbage Collectors

•Mark-and-Sweep

•Stop-and-Copy

Page 35: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern TechniquesOptimizers

Page 36: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Modern TechniquesGit, Rake, LLVM

Page 37: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Squeakthe Smalltalk-80 Implementation

Page 38: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

SqueakSlang

Page 39: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Squeak•Alan Kay

•Dan Ingalls

•Adele Goldberg

Page 40: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

SmalltalkXerox PARC

Page 41: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

SmalltalkObject-Oriented

(differ from Simula and C++)

Page 42: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

SmalltalkGUI

Page 43: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

SmalltalkMVC

Page 44: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

History and Design Goals

Architecture and Object Model

Page 45: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

Page 46: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

Page 47: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

Page 48: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/platform

Page 49: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/platform

Page 50: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

kernel/platform

Page 51: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

RubyRuntime(kernel) kernel/platform

Page 52: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

RubyRuntime(kernel)

lib/compiler

kernel/platform

Page 53: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

RubyRuntime(kernel)

lib/*lib/compiler

kernel/platform

Page 54: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

RubyRuntime(kernel)

lib/*lib/compiler

Your App

Your App

kernel/platform

Page 55: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Real Machine

C++ Virtual MachineLow Level Virtual Machine

kernel/bootstrap

kernel/common

kernel/delta

RubyRuntime(kernel)

lib/*lib/compiler

Your App

Your App

kernel/platform

Page 56: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Outside the Ruby World

Page 57: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Outside the Ruby WorldC++ Primitives

Page 58: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Outside the Ruby WorldForeign Function Interface - FFI

Page 59: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Outside the Ruby WorldSubtend

Page 60: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

History and Design Goals

Architecture and Object Model

Page 61: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

HelloWorld!

Page 62: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def method_missing m; puts m; enddef Object.const_missing c; print "#{c}, "; end

Hello.World!

Page 63: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

puts ‘Hello, World!’

Page 64: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

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

Page 65: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

puts ‘Hello, World!’

(TOPLEVEL_BINDING.context.receiver ||

TOPLEVEL MethodContext.current.receiver )

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

Page 66: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

puts ‘Hello, World!’

def __script__

end

(TOPLEVEL_BINDING.context.receiver ||

TOPLEVEL MethodContext.current.receiver )

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

Page 67: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

CompiledMethod (method(:__script__).compiled_method)

puts ‘Hello, World!’

Page 68: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

CompiledMethod (method(:__script__).compiled_method)

#<SendSite:0x26 name=putshits=0 misses=0>

puts ‘Hello, World!’

Page 69: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 70: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

#<SendSite:0x26 name=printhits=0 misses=0>

#<SendSite:0x28 name=printhits=0 misses=0>

CompiledMethod (method(:__script__).compiled_method)

Page 71: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 72: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=0 misses=0>

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 73: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=0 misses=0>

print ‘World!‘#<SendSite:0x28 name=print

hits=0 misses=0>

CompiledMethod (method(:__script__).compiled_method)

Page 74: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 75: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=1 misses=0>

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 76: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=1 misses=0>

print ‘World!‘#<SendSite:0x28 name=print

hits=1 misses=0>

CompiledMethod (method(:__script__).compiled_method)

Page 77: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

class C def print endend

Page 78: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 79: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=0 misses=0>

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 80: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=0 misses=0>

print ‘World!‘#<SendSite:0x28 name=print

hits=0 misses=0>

CompiledMethod (method(:__script__).compiled_method)

Page 81: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 82: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=1 misses=0>

print ‘World!‘

CompiledMethod (method(:__script__).compiled_method)

Page 83: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

def __script__

end

print ‘Hello,‘#<SendSite:0x26 name=print

hits=1 misses=0>

print ‘World!‘#<SendSite:0x28 name=print

hits=1 misses=0>

CompiledMethod (method(:__script__).compiled_method)

Page 84: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy
Page 85: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

•CompiledMethod

•MethodContext

•StaticScope

•SendSite

•MethodTable

•LookupTable

Page 86: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MethodDispatch

Page 87: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

Page 88: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

Page 89: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC

Page 90: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC

MetaObj

Page 91: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC

MetaObj

Page 92: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC

MetaObj

Page 93: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC ClassMeta

Obj

Page 94: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC Class ModMeta

Obj

Page 95: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

CD Obj

MetaD

MetaC Class ModMeta

Obj

Page 96: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Class ModMetaC

MetaD

MetaObj

Page 97: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

Class ModMetaC

MetaD

MetaObj

Page 98: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

Class ModMetaC

MetaD

MetaObj

Page 99: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

Class ModMetaC

MetaD

MetaObj

MMObj

Page 100: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

MMObj

Page 101: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

MMObj

Page 102: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

MMObj

Page 103: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

Page 104: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class ModMetaObj

Obj

MMObj

Page 105: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class ModMetaObj

Obj

MMObj

MetaMC

Page 106: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class ModMetaObj

Obj

MMObj

MetaMC

MetaClass

Page 107: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class ModMetaObj

Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 108: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class ModMetaObj

Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 109: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class Mod

MetaMC

MetaClass

MetaMod

Page 110: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass

Class Mod

MetaMC

MetaClass

MetaMod

Page 111: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class

Mod

MetaMC

MetaClass

MetaMod

Page 112: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 113: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 114: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 115: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC Meta

ClassMetaMod

Page 116: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass Meta

Mod

Page 117: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 118: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 119: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 120: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 121: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MetaClass Class Mod

MetaMC

MetaClass

MetaMod

Page 122: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 123: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 124: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 125: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 126: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 127: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

MMD

MMC

MetaClass

Class ModMetaC

MetaD

MetaObj

CD Obj

MMObj

MetaMC

MetaClass

MetaMod

Page 128: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy
Page 129: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

•BlockEnvironment

•InstructionSequence

•Compiler

•Breakpoint

•Rubinius::Task

•Channel

•Actor

•Rubinius::VM

Page 130: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Reference: Rubinius

• http://rubini.us/• http://github.com/evanphx/rubinius/• http://rubinius.lighthouseapp.com/• http://groups.google.com/group/rubinius-dev/

Page 132: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Reference: Others

• http://rubyspec.org/• http://llvm.org/• http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html

Page 133: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

Reference: Wikipedia

• http://en.wikipedia.org/wiki/Rubinius

• http://en.wikipedia.org/wiki/Squeak

• http://en.wikipedia.org/wiki/Smalltalk

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

• http://en.wikipedia.org/wiki/Model-view-controller

• http://en.wikipedia.org/wiki/Alan_Kay

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

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

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

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

Page 134: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

git clone \git://github.com/evanphx/rubinius.git

cd rubinius; rake build

Page 135: Rubinius - godfat · Modern Techniques Pluggable Garbage Collectors •Mark-and-Sweep •Stop-and-Copy

?