]> gitweb.factorcode.org Git - factor.git/blob - extra/chicago-talk/chicago-talk.factor
9d42ff13f23b064ead64693b08b0317bea654618
[factor.git] / extra / chicago-talk / chicago-talk.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: slides help.markup ;
4 IN: chicago-talk
5
6 CONSTANT: chicago-slides
7 {
8 { $slide "factor"
9
10 { $url "http://factorcode.org" }
11
12 }
13 { $slide "goals"
14
15 "high level language"
16 "expressive and extensible"
17 "reasonable performance"
18 "interactive development with arbitrary redefinition"
19 "standalone app deployment (strip out compiler and REPL)"
20
21 }
22 { $slide "challenges"
23
24 "higher-order functions"
25 "dynamic typing"
26 "memory allocation"
27 "float boxing/unboxing"
28 "integer overflow checks"
29 "user-defined abstractions"
30
31 }
32 { $slide "implementation"
33
34 "VM: 12 kloc of C, library: >100 kloc of Factor"
35 "generational copying garbage collection, card marking write barrier"
36 "full continuations, tail calls"
37 "simple non-optimizing “bootstrap” compiler"
38 "optimizing compiler"
39
40 }
41 { $slide "optimizing compiler"
42
43 "about 12,000 lines of Factor code"
44 "targets x86-32, x86-64, PowerPC"
45 "factor code ⇒ high-level SSA ⇒ low-level SSA ⇒ machine code"
46
47 }
48 { $slide "high-level optimizer"
49
50 "macro expansion, defunctionalization"
51 "type and interval inference, sparse conditional constant propagation, method inlining"
52 "escape analysis and tuple unboxing"
53
54 }
55 { $slide "low-level optimizer"
56
57 "alias analysis, value numbering, write barrier elimination"
58 "linear scan register allocation"
59
60 }
61 }
62
63 : chicago-talk ( -- ) chicago-slides slides-window ;
64
65 MAIN: chicago-talk