More Related Content Similar to Rubinius Architecture and Object Model Similar to Rubinius Architecture and Object Model (20) Rubinius Architecture and Object Model41. Smalltalk
Object-Oriented
(differ from Simula and C++)
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
62. def method_missing m; puts m; end
def Object.const_missing c; print "#{c}, "; end
Hello.World!
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
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
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