[pypy-svn] r54913 - pypy/extradoc/talk/s3-2008
cfbolz at codespeak.net
cfbolz at codespeak.net
Mon May 19 10:16:38 CEST 2008
Author: cfbolz
Date: Mon May 19 10:16:35 2008
New Revision: 54913
Added:
pypy/extradoc/talk/s3-2008/talk-squeakev.pdf (contents, props changed)
pypy/extradoc/talk/s3-2008/talk-squeakev.tex
Log:
the talk we gave at the squeak e.V. meeting
Added: pypy/extradoc/talk/s3-2008/talk-squeakev.pdf
==============================================================================
Binary file. No diff available.
Added: pypy/extradoc/talk/s3-2008/talk-squeakev.tex
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/s3-2008/talk-squeakev.tex Mon May 19 10:16:35 2008
@@ -0,0 +1,234 @@
+\documentclass[utf8x]{beamer}
+
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+
+ %\setbeamercovered{transparent}
+}
+
+
+\usepackage[english]{babel}
+
+\usepackage[utf8x]{inputenc}
+
+\usepackage{times}
+\usepackage[T1]{fontenc}
+
+\title[Back to the Future in one Week]
+{%
+ Back to the Future in one Week — Implementing a Smalltalk VM in PyPy%
+}
+
+\author[Bolz, Kuhn, Lienhard, Matsakis, Nierstrasz, Renggli, Rigo, Verwaest]
+{
+ \textcolor{green!50!black}{Carl~Friedrich~Bolz}\inst{1} \and
+ \textcolor{green!50!black}{Adrian~Kuhn\inst{2}} \and
+ Adrian~Lienhard\inst{2} \and
+ Nicholas~D.~Matsakis\inst{3} \and
+ Oscar~Nierstrasz\inst{2} \and
+ Lukas~Renggli\inst{2} \and
+ Armin~Rigo \and
+ \textcolor{green!50!black}{Toon~Verwaest}\inst{2}
+}
+
+\institute[Bern and others]
+{
+ \inst{2}%
+ Software Composition Group\\ University of Bern, Switzerland
+ \and%
+ \vskip-2mm
+ \inst{1}
+ Softwaretechnik und Programmiersprachen\\ Heinrich-Heine-Universit\"at D\"usseldorf
+ \and%
+ \vskip-2mm
+ \inst{3}%
+ ETH Zürich, Switzerland
+}
+
+
+\date{Squeak e.V. Meeting, May 17 2008 \\
+(presented at S3)
+}
+
+
+% Delete this, if you do not want the table of contents to pop up at
+% the beginning of each subsection:
+%\AtBeginSubsection[]
+%{
+% \begin{frame}<beamer>
+% \frametitle{Outline}
+% \tableofcontents[currentsection,currentsubsection]
+% \end{frame}
+%}
+
+
+% If you wish to uncover everything in a step-wise fashion, uncomment
+% the following command:
+
+%\beamerdefaultoverlayspecification{<+->}
+
+
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+%\begin{frame}
+% \frametitle{Outline}
+% \tableofcontents
+ % You might wish to add the option [pausesections]
+%\end{frame}
+
+\begin{frame}
+ \frametitle{Scope}
+ This demo is about:
+ \begin{itemize}
+ \item writing a Squeak implementation (called "SPy") in Python
+ \item with eight people
+ \item in five days
+ \item using PyPy
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{What is PyPy?}
+ \begin{itemize}
+ \item started as a Python implementation in Python
+ \item Open Source project, MIT license
+ \item developed into a general environment for implementing dynamic languages
+ \item supports the language developer with a lot of infrastructure
+ \item most important goal: abstracting over low-level details
+ \item don't fix decisions about low-level details early
+ \end{itemize}
+\end{frame}
+
+\frame[plain]{
+ \frametitle{What is PyPy?}
+ \centering
+ \includegraphics[height=8cm]{dynlang}
+}
+\begin{frame}
+ \frametitle{The SPy VM}
+ \begin{itemize}
+ \item complete but simple, straight-forward Squeak interpreter in RPython
+ \item goal is to fully support loading and running Squeak images
+ \item source code essentially free of low-level details, no GC
+ \item written during a five-day sprint in October in Bern
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Current Status}
+ \begin{itemize}
+ \item bytecodes fully implemented
+ \item many primitives implemented: arithmetic primitives, object primitives
+ \item can load Squeak images (both 2.0 and 3.9)
+ \item runs tiny benchmarks
+ \item runs arbitrary code
+ \item resume image
+ \end{itemize}
+ \pause
+ Open Issues:
+ \begin{itemize}
+ \item any I/O
+ \item graphics
+ \item performance
+ \item \#someInstance, \#nextInstance
+ \item \#become
+ \item tests for threading and exceptions
+ \end{itemize}
+\end{frame}
+
+\frame[containsverbatim, plain, shrink=10]{
+ \begin{verbatim}
+ primitiveSquareRoot
+ | rcvr |
+ self var: #rcvr type: 'double '.
+ rcvr := self popFloat.
+ self success: rcvr >= 0.0.
+ successFlag
+ ifTrue: [self pushFloat:
+ (self cCode: 'sqrt(rcvr)'
+ inSmalltalk: [rcvr sqrt])]
+ ifFalse: [self unPop: 1]
+
+
+
+
+
+
+
+
+
+ \end{verbatim}
+}
+
+
+\frame[containsverbatim, plain, shrink=10]{
+ \begin{verbatim}
+ primitiveSquareRoot
+ | rcvr |
+ self var: #rcvr type: 'double '.
+ rcvr := self popFloat.
+ self success: rcvr >= 0.0.
+ successFlag
+ ifTrue: [self pushFloat:
+ (self cCode: 'sqrt(rcvr)'
+ inSmalltalk: [rcvr sqrt])]
+ ifFalse: [self unPop: 1]
+
+
+ @expose_primitive(FLOAT_SQUARE_ROOT,
+ unwrap_spec=[float])
+def func(interp, f):
+ if f < 0.0:
+ raise PrimitiveFailedError
+ w_res = utility.wrap_float(math.sqrt(f))
+ return w_res
+ \end{verbatim}
+}
+
+\frame[plain]{
+ \frametitle{Performance (tiny Benchmark)}
+ \centering
+ \includegraphics[height=8cm]{speed}
+}
+
+\begin{frame}
+ \frametitle{Results}
+ {\bf Good Points of the Approach:}
+ \begin{itemize}
+ \item simple, understandable, high-level Squeak implementation
+ \item mostly free of low-level details: no GC, no manual pointer tagging
+ \item written in a short amount of time
+ \item runs on various platforms
+ \item extensible tool chain
+ \end{itemize}
+ \pause
+ {\bf Bad Points of the Approach:}
+ \begin{itemize}
+ \item not really fast (yet)
+ \item RPython isn't Python
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Outlook}
+ \begin{itemize}
+ \item do graphical builtins, to actually start the full environment
+ \item Squeak-specific optimizations:
+ \item method-cache (should be easy with shadows)
+ \item JIT
+ \item lessons learned for a "SqueaSquea"?
+ \end{itemize}
+ \begin{block}{
+ Join the Sprint!}
+ \bigskip
+ \hskip 1cm Saturday - Thursday, C-Base Berlin
+ \bigskip
+ \end{block}
+\end{frame}
+
+\end{document}
More information about the Pypy-commit
mailing list