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