]> gitweb.factorcode.org Git - factor-talks.git/blobdiff - chicago-talk/chicago-talk.factor
Adding all the talks.
[factor-talks.git] / chicago-talk / chicago-talk.factor
diff --git a/chicago-talk/chicago-talk.factor b/chicago-talk/chicago-talk.factor
new file mode 100644 (file)
index 0000000..02ddc42
--- /dev/null
@@ -0,0 +1,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