Short Story
About the 60’s
uncle Bob
going to Mars
the Energy solution
Compile ruby to binary
in 100% Ruby
No external dependencies
Faster ( X times )
Easy to understand
Easy to modify own tool
codeberg.org/rubydesign
30+ years coding
Now coding as hobby
Compile ruby to binary in ruby
why
how
future
About the 60’s
uncle Bob
going to Mars
the Energy solution
‘61 goal declared by Kennedy
‘69 achieved by Appollo 9
4bit , 2k RAM , 1Mhz
Mars 2020, maybe
Early 60’s nuclear research (Thorium)
sucessful run '64-'69 , 7MW
Walk away safe , small , little waste
Rediscovered by Kirk Sorensen 2008
Uncle Bob “Future of programming”
C ,Unix,Smalltalk ,Lisp ,invented 60’s
Engineers doubling every 5 years
Go 2009 , Rust 2010 , Julia 2012
Programming, spaceflight, energy
Major advancement in 60’s
New advancements only recently
Simula invented OO concepts in 67
Smalltalk (first pure OO) PARC 70’s
Popular 80’s , "Blue Book" published
Ruby, Python, JS, reincarnated 90’s
YARV, mri’s stack machine, 00's
laptop becomes a pi
1k hardware costs 10k
2 language problem (nice OR fast)
Limited domains accessible
Smaller community
less tools
Speed is symptom
Interpretation is cause
(walking with a map)
Compilation is the solution
Implementation language
You can’t fix
Ruby is the solution
I have time
and basic skills
and motivation
Further the art
prove the oo case
for the community
with you
basic oo (classes/ objects)
memory layout
calling convention
binary creation
argument passing
constants
local / ivar
calls
as static, plus
method resolution
caching
implicit capture and compilation
block passing as argument
yield with arguments
return (lambda style)
if / else / until
while
complex conditions
no break / continue (easy)
eval
procs / binding
exceptions
class variables / globals
multi - assignment
stdlib
. . . . . .
With rails analogy
many views
many methods
Ruby source (parser gem)
Virtual oo language (vool)
Minimal oo Machine (mom)
Risc abstraction
Target (arm)
Elf / binary
virtual == no syntax
oo == object model like ruby
ruby without the fluff ( splats / unless ..)
Statements + Expression
nothing implicit
next level is (abtract) machine
statement tree vs instruction list
variables vs memory
control structures vs jumps
abstract vs basic
16 instructions
Works only on memory
higher level than next
ease transition to next level
1 vool → 2-8 mom
simple call , argument transfer , return sequence
dynamic call , method resolve
checks with implicit jumps
ruby truth check , identity check
yield . . .
arm without the fluff
arm like registers
20 instructions
extensible (for builtin + more)
last virtual layer
interpreter + visual debugger
mem/reg + reg/reg
arithmetic operators
tests on operation result
jump , call , return
syscall
Everything is Object
Fixed sizes
opaque data, ruby has no access
mom instructions to process data
Types are immutable
Types store callable methods
maps names to indexes
does not define types recursively
type reference may change
Class has instance Type
new object has instance type
instance type may change
many types implement one class
class stores method definition
objects type reference may change
class instance type may change
minimal runtime for compiling
Basic oo: Class , Type , Method , Code
Utils: String, Integer , Array , Hash
also, additional builtin methods
linked list (not stack)
object oriented
easy to understand
exceptions easier
binding easier
next / caller message
frame (locals) + args
return address + value
method
receiver (self)
5 years
3k commits , 1600 tests
multi arch ready, arm working
basic executables (mini rt)
stable architecture
Benchmarks
Bootstrapping
Parfait
Micro with mixed results
Integer ops slightly slower
Calling 2x faster
Puts faster than c
Bigger benchmarks, more functionality
Profiling
Macros
Inlining
Integrate existing tests
Complement existing classes
More classes
Optimize
Compile ruby-x with rubyxc
Improving compiler
Figure out metacode
Integrate ruby spec
Spread the word
Learn
Participate
Many topics, small and large
Functionality or research
no pressure
assemblers (architectures)
Register allocation
digital trees (judy)
lock free synchronisation (Dr Cliff)
stdlib , pi project , gc , . . . . .
assuming bootstrapped + working
new applications
desktops, native mobile, server, ai
Broaden base, more tools, positive spiral
small core , gems + bundler
democracy of gems
better gc, better hash
good thrive etc
best results when not controlled
Read up
ruby-x.rubydesign.fi
Start coding
codeberg.org/ruby-x/
Make contact
google group ruby-x