rename cancelled minsk

This commit is contained in:
2020-03-22 18:05:03 +02:00
parent 002292d100
commit 760690718a
5 changed files with 5 additions and 5 deletions

View File

@ -0,0 +1,154 @@
%section#how
%h2 That was what
%br
%h4 next
%br
%h1 How
%p.fragment With rails analogy
%section#size
%h2 Size
%p compared to rails
%h3 active_record 1.0
%h3.fragment 1 / 3 active_record (rails 1.0)
%h3.fragment 1 / 10 rails
%section#app
%h2 Rails app
%p many views
%br
%h2.fragment RubyX
%p.fragment many methods
%br
%h4.fragment method = view
%section#controller
%h3 controller renders view
%br
%h3.fragment compiler compiles methods
%br
%h4.fragment controller = compiler
%section#http
%h3 rack handles http
%br
%h3.fragment assembler binary creation
%br
%h4.fragment lower levels don't matter to most
%section#layers
%h3 request processed by layers
%br
%h3.fragment Compiler processes in layers
%br
%h4.fragment same same, but different :-)
%section
%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#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
%section#model
%h2 Object Model
%p Everything is Object
%p.fragment Fixed sizes
%p.fragment opaque data, ruby has no access
%p.fragment slot instructions to process data
%section#types
%h2 Object has Type
%p.fragment Types are immutable
%p.fragment Types store callable methods
%p.fragment maps names to indexes
%p.fragment does not define types recursively
%p.fragment type reference may change
%section#classes
%h2 Type implements Class
%p Class has instance Type
%p.fragment new object has instance type
%p.fragment instance type may change
%p.fragment many types implement one class
%p.fragment class stores method definition
%section#dynamics
%h3 Types are static
%h3 Ruby is dynamic
%h3.fragment.fade-out ?
%p.fragment objects type reference may change
%p.fragment class instance type may change
%section#parfait
%h2 Basic Objects: Parfait
%p minimal runtime for compiling
%p.fragment Basic oo: Class , Type , Method , Code
%p.fragment Utils: String, Integer , Array , Hash
%p.fragment also, additional builtin methods
%section#project
%h2 Project
%p 5 years
%p 3k commits , 1600 tests
%p multi arch ready, arm working
%p basic executables (mini rt)
%p stable architecture

View File

@ -0,0 +1,146 @@
%section#intro
%h1 RubyX
%h2 community's ruby
%p in 100% Ruby (compiler)
%p No external dependencies
%p Easy to understand
%p Easy to join
%section#torsten
%h2 Torsten
%h3 rubydesign
%p github, twitter, medium , .fi
%p 30+ years coding
%p Now coding as hobby
%section#method
%h2 Method
%h3 Chronological
%p not top down / technical
%p answer questions
%section#style
%h2 Style
%p ruby "happiness"
%p programmers fulfillment
%section#study
%h2 Why
%p Studied physics
%p Theoretical physics
%h3 Bottomm Up thinking
%section#happiness
%h2 Road to happiness
%table
%tr
%td 1994
%td Fortran
%td ★☆☆☆☆
%tr.fragment
%td 1994
%td C++
%td ★★★☆☆☆
%tr.fragment
%td 1996
%td java
%td ★★★★☆
%tr.fragment
%td 2001
%td ruby
%td ★★★★★
%h4.fragment but real happiness . . .
%section#finland
%h2 1999 move to Finland
%p
%img{:alt => "Finland", "data-src" => image_url("slides/grillrb/finland.jpg")}/
%section#raisa
%h2
Raisa
%small (2004 my wife)
%p
%img{:alt => "Raisa", "data-src" => image_url("slides/grillrb/raisa.jpg") , height: 400}/
%section#work
%h2
Woodwork
%small (2010 ecoframe)
%p
%img{:alt => "At Work", "data-src" => image_url("slides/at_work.jpg") , height: 400}/
%section#smallalk
%h2 1995: Smalltalk
%p Popular 80s , "Blue Book" published
%p
%img{:alt => "Blue book", "data-src" => image_url("slides/blue_book.png") , height: 200}/
%p Read and tried, but failed
%section#db
%h2 2008: Purple
%p In memory db
%p core judy (C), rest ruby
%p super performance, until used from rails
%h3 MRI has performance issues
%section#start
%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#start2
%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 static binaries easy, 1 month
%section#calling
%h2 Calling convention
%p
C or
%span.red no C
%p object oriented
%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
%p very difficult
%p many failed ideas
%p "years" of trying
%h3 decent layers
%section#demo
%h2
Demo of
=link_to "cli" , "https://github.com/ruby-x/rubyx/blob/master/lib/rubyx/rubyxc.rb"
%p
%br
=link_to "www.ruby-x.org" , "http://www.ruby-x.org"
%p
%br
=link_to "github.com/ruby-x" , "https://github.com/ruby-x/rubyx"

View File

@ -0,0 +1,83 @@
%section#next
%h2 My next Plans
%p Benchmarks
%p Bootstrapping
%p Parfait
%section#bench
%h2 Benchmarks
%p Micro with mixed results
%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 Profiling
%p Macros / better design
%p Inlining
%section#better_parf
%h2 Better Parfait
%p Integrate existing tests
%p Complement existing classes
%p More classes
%p Optimize
%section#you
%h2 Things you can do
%p Spread the word
%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
%p.fragment Functionality or research
%p.fragment no pressure
%section#topics
%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
%p assuming bootstrapped + working
%p.fragment new applications
%p.fragment desktops, native mobile, server, ai
%p.fragment Broaden base, more tools, positive spiral
%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
%section#evolution
%h2 Evolution
%p small core , gems + bundler
%p.fragment democracy of gems
%p.fragment better gc, better hash
%p.fragment good thrive etc
%p.fragment best results when not controlled

View File

@ -0,0 +1,53 @@
%section#working1
%h2
Currenty working
%small (overview)
%p basic oo (classes/ objects)
%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 +
%h3 assignment
%ul
%li local /arg
%li ivar
%li implicit return
%section#static
%h2 static calling
%p argument passing
%p constants
%p local / ivar
%p calls
%section#dynamic
%h2 dynamic sending
%p as static, plus
%p method resolution
%p caching
%section#lambdas
%h3 Lambdas
%p implicit capture and compilation
%p block passing as argument
%p yield with arguments
%p return (lambda style)
%section#not
%h2 Not working
%p global variables
%p multi assignment
%p exceptions
%p procs / binding
%p stdlib
%p eval
%p . . . . . .

View File

@ -0,0 +1,47 @@
!!!
%html{:lang => "en"}
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{:charset => "utf-8"}/
%title 2020
%meta{:content => "RubyX, community's ruby implementation", :name => "description"}/
%meta{:content => "Torsten Ruger", :name => "author"}/
%meta{:content => "yes", :name => "apple-mobile-web-app-capable"}/
%meta{:content => "black-translucent", :name => "apple-mobile-web-app-status-bar-style"}/
%meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}/
= stylesheet_link_tag 'slides', media: 'all'
%body
.reveal
.slides
= render partial: "slides/next/intro"
= render partial: "slides/next/what"
= render partial: "slides/next/how"
= render partial: "slides/next/next"
%section#end{:style => "text-align: left;"}
%h1 RubyX
%p
Read up
=link_to "ruby-x.org", "https://ruby-x.org"
%br/
Start coding
= link_to "github.com/ruby-x/" , "http://github.com/ruby-x"
%br
Make contact
=link_to "google group ruby-x" , "https://groups.google.com/forum/#!forum/ruby-x"
= javascript_include_tag "reveal"
= javascript_include_tag "highlight"
:javascript
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
width: 950,
height: 600,
});