first semi ready minsk version
This commit is contained in:
parent
66cf85c752
commit
f1f971234f
BIN
app/assets/images/slides/at_work.jpg
Normal file
BIN
app/assets/images/slides/at_work.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.0 MiB |
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
%p
|
%p
|
||||||
Get the latest Raspian image. Currently (2019) the
|
Get the latest Raspian image. Currently (2019) the
|
||||||
=ext_link "buster lite version" "https://www.raspberrypi.org/downloads/raspbian/"
|
=ext_link "buster lite version" , "https://www.raspberrypi.org/downloads/raspbian/"
|
||||||
without Gui is fine, and smaller.
|
without Gui is fine, and smaller.
|
||||||
%p
|
%p
|
||||||
Change the file format with something like:
|
Change the file format with something like:
|
||||||
|
@ -20,12 +20,12 @@
|
|||||||
%br
|
%br
|
||||||
%h3.fragment compiler compiles methods
|
%h3.fragment compiler compiles methods
|
||||||
%br
|
%br
|
||||||
%h4.fragment controller = compiler part
|
%h4.fragment controller = compiler
|
||||||
|
|
||||||
%section#http
|
%section#http
|
||||||
%h3 rack handles http
|
%h3 rack handles http
|
||||||
%br
|
%br
|
||||||
%h3.fragment assembler and elf handles binary creation
|
%h3.fragment assembler binary creation
|
||||||
%br
|
%br
|
||||||
%h4.fragment lower levels don't matter to most
|
%h4.fragment lower levels don't matter to most
|
||||||
|
|
||||||
@ -36,77 +36,77 @@
|
|||||||
%br
|
%br
|
||||||
%h4.fragment same same, but different :-)
|
%h4.fragment same same, but different :-)
|
||||||
|
|
||||||
%section#compiler_layers
|
|
||||||
%h2 Compiler layers
|
|
||||||
%p Ruby source (parser gem)
|
|
||||||
%p.fragment Virtual oo language (vool)
|
|
||||||
%p.fragment Minimal oo Machine (mom)
|
|
||||||
%p.fragment Risc abstraction
|
|
||||||
%p.fragment Target (arm)
|
|
||||||
%p.fragment Elf / binary
|
|
||||||
|
|
||||||
%section#vool
|
|
||||||
%h2 Vool, virtual oo language
|
|
||||||
%p virtual == no syntax
|
|
||||||
%p.fragment oo == object model like ruby
|
|
||||||
%p.fragment ruby without the fluff ( splats / unless ..)
|
|
||||||
%p.fragment Statements + Expression
|
|
||||||
%p.fragment nothing implicit
|
|
||||||
|
|
||||||
%section#machines
|
|
||||||
%h2 Language vs Machine
|
|
||||||
%p next level is (abtract) machine
|
|
||||||
%p.fragment statement tree vs instruction list
|
|
||||||
%p.fragment variables vs memory
|
|
||||||
%p.fragment control structures vs jumps
|
|
||||||
%p.fragment abstract vs basic
|
|
||||||
|
|
||||||
%section#mom
|
|
||||||
%section#mom1
|
|
||||||
%h2 Mom, minimal object machine
|
|
||||||
%p 16 instructions
|
|
||||||
%p.fragment Works only on memory
|
|
||||||
%p.fragment higher level than next
|
|
||||||
%p.fragment ease transition to next level
|
|
||||||
%p.fragment 1 vool → 2-8 mom
|
|
||||||
|
|
||||||
%section#mom2
|
|
||||||
%h2 MOM instructions
|
|
||||||
%p simple call , argument transfer , return sequence
|
|
||||||
%p.fragment dynamic call , method resolve
|
|
||||||
%p.fragment checks with implicit jumps
|
|
||||||
%p.fragment ruby truth check , identity check
|
|
||||||
%p.fragment yield . . .
|
|
||||||
%section
|
%section
|
||||||
%section#risc1
|
%section#compiler_layers
|
||||||
%h2 Risc abstraction
|
%h2 Compiler layers
|
||||||
%p arm without the fluff
|
%p Ruby source (parser gem)
|
||||||
%p.fragment arm like registers
|
%p.fragment Simple Object Language
|
||||||
%p.fragment 20 instructions
|
%p.fragment SlotMachine
|
||||||
%p.fragment extensible (for builtin + more)
|
%p.fragment Risc abstraction
|
||||||
%p.fragment last virtual layer
|
%p.fragment Target (arm)
|
||||||
%p.fragment interpreter + visual debugger
|
%p.fragment Elf / binary
|
||||||
|
|
||||||
%section#risc2
|
%section#sol
|
||||||
%h2 Risc instructions
|
%h2 Sol, Simple Object language
|
||||||
%p mem/reg + reg/reg
|
%p simple, ruby without the fluff ( splats / unless ..)
|
||||||
%p.fragment arithmetic operators
|
%p object model like ruby
|
||||||
%p.fragment tests on operation result
|
%p Statements + Expression
|
||||||
%p.fragment jump , call , return
|
%p nothing implicit
|
||||||
%p.fragment syscall
|
|
||||||
|
%section#machines
|
||||||
|
%h2 Language vs Machine
|
||||||
|
%p next level is (abtract) machine
|
||||||
|
%p.fragment statement tree vs instruction list
|
||||||
|
%p.fragment variables vs memory
|
||||||
|
%p.fragment control structures vs jumps
|
||||||
|
%p.fragment abstract vs basic
|
||||||
|
|
||||||
|
%section#mom
|
||||||
|
%section#mom1
|
||||||
|
%h2 SlotMachine
|
||||||
|
%p 16 instructions
|
||||||
|
%p.fragment Works only on memory
|
||||||
|
%p.fragment higher level than next
|
||||||
|
%p.fragment ease transition to next level
|
||||||
|
%p.fragment 1 Sol → 2-8 slot
|
||||||
|
|
||||||
|
%section#mom2
|
||||||
|
%h2 SlotMachine instructions
|
||||||
|
%p simple call , argument transfer , return sequence
|
||||||
|
%p.fragment dynamic call , method resolve
|
||||||
|
%p.fragment checks with implicit jumps
|
||||||
|
%p.fragment ruby truth check , identity check
|
||||||
|
%p.fragment yield . . .
|
||||||
|
%section
|
||||||
|
%section#risc1
|
||||||
|
%h2 Risc abstraction
|
||||||
|
%p arm without the fluff
|
||||||
|
%p.fragment arm like registers
|
||||||
|
%p.fragment 20 instructions
|
||||||
|
%p.fragment extensible (for builtin + more)
|
||||||
|
%p.fragment last virtual layer
|
||||||
|
%p.fragment interpreter + visual debugger
|
||||||
|
|
||||||
|
%section#risc2
|
||||||
|
%h2 Risc instructions
|
||||||
|
%p mem/reg + reg/reg
|
||||||
|
%p.fragment arithmetic operators
|
||||||
|
%p.fragment tests on operation result
|
||||||
|
%p.fragment jump , call , return
|
||||||
|
%p.fragment syscall
|
||||||
|
|
||||||
%section#code
|
%section#code
|
||||||
%h2 Code generation
|
%h2 Code generation
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
%h2.fragment object generation
|
%h2.fragment Object generation
|
||||||
|
|
||||||
%section#model
|
%section#model
|
||||||
%h2 Object Model
|
%h2 Object Model
|
||||||
%p Everything is Object
|
%p Everything is Object
|
||||||
%p.fragment Fixed sizes
|
%p.fragment Fixed sizes
|
||||||
%p.fragment opaque data, ruby has no access
|
%p.fragment opaque data, ruby has no access
|
||||||
%p.fragment mom instructions to process data
|
%p.fragment slot instructions to process data
|
||||||
|
|
||||||
%section#types
|
%section#types
|
||||||
%h2 Object has Type
|
%h2 Object has Type
|
||||||
@ -138,22 +138,6 @@
|
|||||||
%p.fragment Utils: String, Integer , Array , Hash
|
%p.fragment Utils: String, Integer , Array , Hash
|
||||||
%p.fragment also, additional builtin methods
|
%p.fragment also, additional builtin methods
|
||||||
|
|
||||||
%section#calling
|
|
||||||
%h2 Calling convention
|
|
||||||
%p linked list (not stack)
|
|
||||||
%p.fragment object oriented
|
|
||||||
%p.fragment easy to understand
|
|
||||||
%p.fragment exceptions easier
|
|
||||||
%p.fragment binding easier
|
|
||||||
|
|
||||||
%section#message
|
|
||||||
%h2 Message Object
|
|
||||||
%p next / caller message
|
|
||||||
%p.fragment frame (locals) + args
|
|
||||||
%p.fragment return address + value
|
|
||||||
%p.fragment method
|
|
||||||
%p.fragment receiver (self)
|
|
||||||
|
|
||||||
%section#project
|
%section#project
|
||||||
%h2 Project
|
%h2 Project
|
||||||
%p 5 years
|
%p 5 years
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
Woodwork
|
Woodwork
|
||||||
%small (2010 ecoframe)
|
%small (2010 ecoframe)
|
||||||
%p
|
%p
|
||||||
%img{:alt => "Villa Taika", "data-src" => image_url("slides/grillrb/villataika.jpg") , height: 400}/
|
%img{:alt => "At Work", "data-src" => image_url("slides/at_work.jpg") , height: 400}/
|
||||||
|
|
||||||
%section#smallalk
|
%section#smallalk
|
||||||
%h2 1995: Smalltalk
|
%h2 1995: Smalltalk
|
||||||
@ -75,19 +75,8 @@
|
|||||||
%p In memory db
|
%p In memory db
|
||||||
%p core judy (C), rest ruby
|
%p core judy (C), rest ruby
|
||||||
%p super performance, until used from rails
|
%p super performance, until used from rails
|
||||||
%h3 Ruby has performance issues
|
%h3 MRI has performance issues
|
||||||
|
|
||||||
%section#pi
|
|
||||||
%h2 2013: PI
|
|
||||||
%p pi becomes an arduino
|
|
||||||
%p.fragment laptop becomes a pi
|
|
||||||
%p.fragment
|
|
||||||
Speed problem
|
|
||||||
%b 10x
|
|
||||||
possibly
|
|
||||||
%b 30x
|
|
||||||
sometimes
|
|
||||||
%b 100x
|
|
||||||
%section#start
|
%section#start
|
||||||
%h2 2013: PI
|
%h2 2013: PI
|
||||||
%p pi becomes an arduino
|
%p pi becomes an arduino
|
||||||
@ -100,25 +89,43 @@
|
|||||||
sometimes
|
sometimes
|
||||||
%b 100x
|
%b 100x
|
||||||
%section#start2
|
%section#start2
|
||||||
%p Start 2014 at Frozen ruby
|
%p Start 2014 at Frozen rails
|
||||||
%p.fragment started vm mindset
|
%p.fragment started vm mindset
|
||||||
%p.fragment main descisions
|
%p.fragment main descisions
|
||||||
%p.fragment good progress
|
%p.fragment good progress
|
||||||
|
|
||||||
|
%section#descision
|
||||||
|
%h2 Early descisions
|
||||||
|
%p OO calling
|
||||||
|
%p memory design: cache size
|
||||||
|
%p kernel calling
|
||||||
|
%p microkernel
|
||||||
|
|
||||||
%section#no_vm
|
%section#no_vm
|
||||||
%h2 Beginning
|
%h2 Beginning
|
||||||
%p learn arm
|
%p learn arm
|
||||||
%p check llvm and others
|
%p check llvm and others
|
||||||
%p 6 classes assembler
|
%p 6 classes assembler
|
||||||
%p 3 classes binary creation
|
%p 3 classes binary creation
|
||||||
%p binaries easy, 1 month
|
%p static binaries easy, 1 month
|
||||||
%section#calling
|
%section#calling
|
||||||
%h2 Calling convention
|
%h2 Calling convention
|
||||||
%p
|
%p
|
||||||
C or
|
C or
|
||||||
%span.red no C
|
%span.red no C
|
||||||
%p object oriented
|
%p object oriented
|
||||||
%p named fields
|
%p named fields / instance vars
|
||||||
%p simple, not too slow
|
%p simple, not too slow
|
||||||
|
%p
|
||||||
|
kernel calling much simpler:
|
||||||
|
%span.red no libc
|
||||||
|
|
||||||
|
%section#control
|
||||||
|
%h2 Control Structures
|
||||||
|
%p if / while / return
|
||||||
|
%p risc / meta arm
|
||||||
|
%p straight to risc
|
||||||
|
%p relatively easy
|
||||||
|
|
||||||
%section#sending
|
%section#sending
|
||||||
%h2 Dynamic calling
|
%h2 Dynamic calling
|
||||||
@ -126,7 +133,7 @@
|
|||||||
%p many failed ideas
|
%p many failed ideas
|
||||||
%p "years" of trying
|
%p "years" of trying
|
||||||
%h3 decent layers
|
%h3 decent layers
|
||||||
|
|
||||||
%section#demo
|
%section#demo
|
||||||
%h2
|
%h2
|
||||||
Demo of
|
Demo of
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
%section#next
|
|
||||||
%h2 Plans for RubyX
|
|
||||||
%h2 What can you do
|
|
||||||
%h2 Impact on community
|
|
||||||
|
|
||||||
%section#next
|
%section#next
|
||||||
%h2 My next Plans
|
%h2 My next Plans
|
||||||
%p Benchmarks
|
%p Benchmarks
|
||||||
@ -12,37 +7,38 @@
|
|||||||
%section#bench
|
%section#bench
|
||||||
%h2 Benchmarks
|
%h2 Benchmarks
|
||||||
%p Micro with mixed results
|
%p Micro with mixed results
|
||||||
%p.fragment Integer ops slightly slower
|
%p Integer ops slightly slower
|
||||||
%p.fragment Calling 2x faster
|
%p Calling 2x slower
|
||||||
%p.fragment Puts faster than c
|
%p Puts faster than C
|
||||||
|
|
||||||
%section#bench_conclusion
|
%section#bench_conclusion
|
||||||
%h2 Conclusion from Benchmarks
|
%h2 Conclusion from Benchmarks
|
||||||
%p Bigger benchmarks, more functionality
|
%p Bigger benchmarks, more functionality
|
||||||
%p.fragment Profiling
|
%p Profiling
|
||||||
%p.fragment Macros
|
%p Macros / better design
|
||||||
%p.fragment Inlining
|
%p Inlining
|
||||||
|
|
||||||
%section#better_parf
|
%section#better_parf
|
||||||
%h2 Better Parfait
|
%h2 Better Parfait
|
||||||
%p Integrate existing tests
|
%p Integrate existing tests
|
||||||
%p.fragment Complement existing classes
|
%p Complement existing classes
|
||||||
%p.fragment More classes
|
%p More classes
|
||||||
%p.fragment Optimize
|
%p Optimize
|
||||||
|
|
||||||
%section#better_parf
|
|
||||||
%h2 Bootstrap
|
|
||||||
%p Compile ruby-x with rubyxc
|
|
||||||
%p.fragment Improving compiler
|
|
||||||
%p.fragment Figure out metacode
|
|
||||||
%p.fragment Integrate ruby spec
|
|
||||||
|
|
||||||
%section#you
|
%section#you
|
||||||
%h2 Things you can do
|
%h2 Things you can do
|
||||||
%p Spread the word
|
%p Spread the word
|
||||||
%p Learn
|
%p Try / learn
|
||||||
%p Participate
|
%p Participate
|
||||||
|
|
||||||
|
%section#try
|
||||||
|
%h2 Try
|
||||||
|
%p clone https://github.com/ruby-x/rubyx
|
||||||
|
%p bundle
|
||||||
|
%p ruby test/test_all.rb
|
||||||
|
%p ./bin/rubyxc compile/interpret/execute
|
||||||
|
%p compile test/mains/source/10_add__4.rb
|
||||||
|
|
||||||
%section#participate
|
%section#participate
|
||||||
%h2 Participate
|
%h2 Participate
|
||||||
%p Many topics, small and large
|
%p Many topics, small and large
|
||||||
@ -50,12 +46,19 @@
|
|||||||
%p.fragment no pressure
|
%p.fragment no pressure
|
||||||
|
|
||||||
%section#topics
|
%section#topics
|
||||||
%h2 Topics
|
%h2 Topics, easy
|
||||||
%p.fragment assemblers (architectures)
|
%p String methods
|
||||||
%p.fragment Register allocation
|
%p.fragment other Parfait
|
||||||
%p.fragment digital trees (judy)
|
%p.fragment negative tests
|
||||||
%p.fragment lock free synchronisation (Dr Cliff)
|
%p.fragment error handling
|
||||||
%p.fragment stdlib , pi project , gc , . . . . .
|
|
||||||
|
%section#topics
|
||||||
|
%h2 Topics, medium
|
||||||
|
%p break / next
|
||||||
|
%p.fragment switch
|
||||||
|
%p.fragment assembler (eg intel)
|
||||||
|
%p.fragment stdlib (File ?)
|
||||||
|
%p.fragment exception
|
||||||
|
|
||||||
%section#community
|
%section#community
|
||||||
%h2 Impact on community
|
%h2 Impact on community
|
||||||
@ -71,3 +74,10 @@
|
|||||||
%p.fragment better gc, better hash
|
%p.fragment better gc, better hash
|
||||||
%p.fragment good thrive etc
|
%p.fragment good thrive etc
|
||||||
%p.fragment best results when not controlled
|
%p.fragment best results when not controlled
|
||||||
|
|
||||||
|
%section#community2
|
||||||
|
%h2 Community's ruby
|
||||||
|
%p For and BY the community
|
||||||
|
%p.fragment very pro open source
|
||||||
|
%p.fragment democratic open source
|
||||||
|
%p.fragment everybody must be heard
|
||||||
|
@ -3,9 +3,16 @@
|
|||||||
Currenty working
|
Currenty working
|
||||||
%small (overview)
|
%small (overview)
|
||||||
%p basic oo (classes/ objects)
|
%p basic oo (classes/ objects)
|
||||||
%p.fragment memory layout
|
%p memory layout
|
||||||
%p.fragment calling convention
|
%p calling convention
|
||||||
%p.fragment binary creation
|
%p binary creation
|
||||||
|
|
||||||
|
%section#control
|
||||||
|
%h3 control structures
|
||||||
|
%p if / else / until
|
||||||
|
%p while
|
||||||
|
%p complex conditions
|
||||||
|
%p no break / continue (easy)
|
||||||
|
|
||||||
%section#vars
|
%section#vars
|
||||||
%h3 variables +
|
%h3 variables +
|
||||||
@ -25,8 +32,8 @@
|
|||||||
%section#dynamic
|
%section#dynamic
|
||||||
%h2 dynamic sending
|
%h2 dynamic sending
|
||||||
%p as static, plus
|
%p as static, plus
|
||||||
%p.fragment method resolution
|
%p method resolution
|
||||||
%p.fragment caching
|
%p caching
|
||||||
|
|
||||||
%section#lambdas
|
%section#lambdas
|
||||||
%h3 Lambdas
|
%h3 Lambdas
|
||||||
@ -35,19 +42,12 @@
|
|||||||
%p yield with arguments
|
%p yield with arguments
|
||||||
%p return (lambda style)
|
%p return (lambda style)
|
||||||
|
|
||||||
%section#control
|
|
||||||
%h3 control structures
|
|
||||||
%p if / else / until
|
|
||||||
%p while
|
|
||||||
%p complex conditions
|
|
||||||
%p no break / continue (easy)
|
|
||||||
|
|
||||||
%section#not
|
%section#not
|
||||||
%h2 Not working
|
%h2 Not working
|
||||||
%p eval
|
%p global variables
|
||||||
%p procs / binding
|
%p multi assignment
|
||||||
%p exceptions
|
%p exceptions
|
||||||
%p class variables / globals
|
%p procs / binding
|
||||||
%p multi - assignment
|
|
||||||
%p stdlib
|
%p stdlib
|
||||||
|
%p eval
|
||||||
%p . . . . . .
|
%p . . . . . .
|
||||||
|
Loading…
Reference in New Issue
Block a user