diff --git a/app/assets/images/slides/at_work.jpg b/app/assets/images/slides/at_work.jpg new file mode 100644 index 0000000..8480971 Binary files /dev/null and b/app/assets/images/slides/at_work.jpg differ diff --git a/app/views/pages/arm/qemu.html.haml b/app/views/pages/arm/qemu.html.haml index 47871aa..5697b8a 100644 --- a/app/views/pages/arm/qemu.html.haml +++ b/app/views/pages/arm/qemu.html.haml @@ -44,7 +44,7 @@ %p 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. %p Change the file format with something like: diff --git a/app/views/slides/minsk/_how.haml b/app/views/slides/minsk/_how.haml index fe5f5ce..e949d27 100644 --- a/app/views/slides/minsk/_how.haml +++ b/app/views/slides/minsk/_how.haml @@ -20,12 +20,12 @@ %br %h3.fragment compiler compiles methods %br - %h4.fragment controller = compiler part + %h4.fragment controller = compiler %section#http %h3 rack handles http %br - %h3.fragment assembler and elf handles binary creation + %h3.fragment assembler binary creation %br %h4.fragment lower levels don't matter to most @@ -36,77 +36,77 @@ %br %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#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#compiler_layers + %h2 Compiler layers + %p Ruby source (parser gem) + %p.fragment Simple Object Language + %p.fragment SlotMachine + %p.fragment Risc abstraction + %p.fragment Target (arm) + %p.fragment Elf / binary - %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#sol + %h2 Sol, Simple Object language + %p simple, ruby without the fluff ( splats / unless ..) + %p object model like ruby + %p Statements + Expression + %p 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 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 %h2 Code generation %br %br - %h2.fragment object generation + %h2.fragment Object generation %section#model %h2 Object Model %p Everything is Object %p.fragment Fixed sizes %p.fragment opaque data, ruby has no access - %p.fragment mom instructions to process data + %p.fragment slot instructions to process data %section#types %h2 Object has Type @@ -138,22 +138,6 @@ %p.fragment Utils: String, Integer , Array , Hash %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 %h2 Project %p 5 years diff --git a/app/views/slides/minsk/_intro.haml b/app/views/slides/minsk/_intro.haml index 2621c72..9651345 100644 --- a/app/views/slides/minsk/_intro.haml +++ b/app/views/slides/minsk/_intro.haml @@ -61,7 +61,7 @@ Woodwork %small (2010 ecoframe) %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 %h2 1995: Smalltalk @@ -75,19 +75,8 @@ %p In memory db %p core judy (C), rest ruby %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 %h2 2013: PI %p pi becomes an arduino @@ -100,25 +89,43 @@ sometimes %b 100x %section#start2 - %p Start 2014 at Frozen ruby + %p Start 2014 at Frozen rails %p.fragment started vm mindset %p.fragment main descisions %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 %h2 Beginning %p learn arm %p check llvm and others %p 6 classes assembler %p 3 classes binary creation - %p binaries easy, 1 month + %p static binaries easy, 1 month %section#calling %h2 Calling convention %p C or %span.red no C %p object oriented - %p named fields + %p named fields / instance vars %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 %h2 Dynamic calling @@ -126,7 +133,7 @@ %p many failed ideas %p "years" of trying %h3 decent layers - + %section#demo %h2 Demo of diff --git a/app/views/slides/minsk/_next.haml b/app/views/slides/minsk/_next.haml index 1aec9f4..0fe9cf5 100644 --- a/app/views/slides/minsk/_next.haml +++ b/app/views/slides/minsk/_next.haml @@ -1,8 +1,3 @@ -%section#next - %h2 Plans for RubyX - %h2 What can you do - %h2 Impact on community - %section#next %h2 My next Plans %p Benchmarks @@ -12,37 +7,38 @@ %section#bench %h2 Benchmarks %p Micro with mixed results - %p.fragment Integer ops slightly slower - %p.fragment Calling 2x faster - %p.fragment Puts faster than c + %p Integer ops slightly slower + %p Calling 2x slower + %p Puts faster than C %section#bench_conclusion %h2 Conclusion from Benchmarks %p Bigger benchmarks, more functionality - %p.fragment Profiling - %p.fragment Macros - %p.fragment Inlining + %p Profiling + %p Macros / better design + %p Inlining %section#better_parf %h2 Better Parfait %p Integrate existing tests - %p.fragment Complement existing classes - %p.fragment More classes - %p.fragment 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 + %p Complement existing classes + %p More classes + %p Optimize %section#you %h2 Things you can do %p Spread the word - %p Learn + %p Try / learn %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 %h2 Participate %p Many topics, small and large @@ -50,12 +46,19 @@ %p.fragment no pressure %section#topics - %h2 Topics - %p.fragment assemblers (architectures) - %p.fragment Register allocation - %p.fragment digital trees (judy) - %p.fragment lock free synchronisation (Dr Cliff) - %p.fragment stdlib , pi project , gc , . . . . . + %h2 Topics, easy + %p String methods + %p.fragment other Parfait + %p.fragment negative tests + %p.fragment error handling + +%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 %h2 Impact on community @@ -71,3 +74,10 @@ %p.fragment better gc, better hash %p.fragment good thrive etc %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 diff --git a/app/views/slides/minsk/_what.haml b/app/views/slides/minsk/_what.haml index de75dd9..1f8c78a 100644 --- a/app/views/slides/minsk/_what.haml +++ b/app/views/slides/minsk/_what.haml @@ -3,9 +3,16 @@ Currenty working %small (overview) %p basic oo (classes/ objects) - %p.fragment memory layout - %p.fragment calling convention - %p.fragment binary creation + %p memory layout + %p calling convention + %p binary creation + +%section#control + %h3 control structures + %p if / else / until + %p while + %p complex conditions + %p no break / continue (easy) %section#vars %h3 variables + @@ -25,8 +32,8 @@ %section#dynamic %h2 dynamic sending %p as static, plus - %p.fragment method resolution - %p.fragment caching + %p method resolution + %p caching %section#lambdas %h3 Lambdas @@ -35,19 +42,12 @@ %p yield with arguments %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 %h2 Not working - %p eval - %p procs / binding + %p global variables + %p multi assignment %p exceptions - %p class variables / globals - %p multi - assignment + %p procs / binding %p stdlib + %p eval %p . . . . . .