54 lines
1.6 KiB
Factor
54 lines
1.6 KiB
Factor
! 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
|