[pypy-svn] r27641 - pypy/extradoc/talk/dls2006

arigo at codespeak.net arigo at codespeak.net
Wed May 24 13:16:14 CEST 2006


Author: arigo
Date: Wed May 24 13:16:13 2006
New Revision: 27641

Added:
   pypy/extradoc/talk/dls2006/draft.txt   (contents, props changed)
Modified:
   pypy/extradoc/talk/dls2006/   (props changed)
   pypy/extradoc/talk/dls2006/outline.txt
Log:
Started working on a draft.


Added: pypy/extradoc/talk/dls2006/draft.txt
==============================================================================
--- (empty file)
+++ pypy/extradoc/talk/dls2006/draft.txt	Wed May 24 13:16:13 2006
@@ -0,0 +1,158 @@
+************************************************************
+                  Still Missing a Cool Title
+************************************************************
+
+:Abstract:
+
+    The PyPy project seeks to prove both on a research and on a
+    practical level the feasability of writing a virtual machine (VM)
+    for a dynamic language in a dynamic language - in this case, Python.
+    The aim is to translate (i.e. compile) the VM to arbitrary target
+    environments, ranging in level from C/Posix to Smalltalk/Squeak via
+    Java and CLI/.NET, while still being of reasonable efficiency within
+    that environment.
+
+    A key tool to achieve this goal is the systematic reuse of the
+    (unmodified, dynamically typed) Python language as a system
+    programming language at various levels of our architecture and
+    translation process.  For each level, we design a corresponding type
+    system and apply a generic type inference engine - for example, the
+    garbage collector (GC) is written in a style that manipulates
+    simulated pointer and address objects, and when translated to C
+    these operations become C-level pointer and address instructions.
+
+.. sectnum::
+
+
+.. _`section 1`:
+
+============================================================
+                         Introduction
+============================================================
+
+
+Despite the constant trend in the programming world towards portability
+and reusability, there are some areas in which it is still notoriously
+difficult to write flexible, portable, and reasonably efficient
+programs.  Virtual machines (VM) is one such area.  Building
+implementations of general programming languages, in particular highly
+dynamic ones, is typically a long-winded effort and produces a result
+that is quite tailored to a specific platform.  For this and other
+reasons, standard platforms emerge; nowadays, a language implementor
+could cover most general platforms in use by writing three versions of
+his VM: for C/Posix, for Java, and for CLI/.NET.  This is, at least, the
+current situation of the Python programming language, where independent
+volunteers developped and are now maintaining Java and .NET versions of
+Python, which follow the evolution of the "official" C version
+(CPython).
+
+However, we believe that platform standardization does not have to be a
+necessary component of this equation.  We are basically using the
+standard "metaprogramming" argument: if one could write the VM in a
+very-high-level language, then the VM itself could be automatically
+*translated* to any lower-level platform.  Moreover by writing the VM in
+such a language we would gain in flexibility and expressivity.
+
+PyPy achieves this goal without giving up on the efficiency of the
+compiled VMs.  The key factors enabling this result are not to be found
+in recent advances in any particular research area - we are not using
+any sophisticated GC, any constraint-based type inference, any advanced
+mega-programming concepts.  Instead, we are following a novel overall
+architecture: it is split in many levels of stepwise translation from
+the high-level source of the VM to the final target platform.  Similar
+platforms can reuse many of these steps, while for very different
+platforms we have the option to perform very different translation
+steps.  Each step reuses a common type inference component, but with a
+different type system.
+
+Experiments also suggest a more mundane reason why such an approach is
+only practical today: a typical translation takes about an hour on a
+modern PC and consumes close to 1GB of RAM.
+
+We shortly describe the architecture of PyPy in `section 2`_.  In
+`section 3`_ we describe our approach of varying the type systems at
+various levels of the translation.  `Section 4`_ gives an overview of
+the type inferencer we developped.  We present experimental results in
+`section 5`_ and future work directions in `section 6`_.  In `section 7`_
+we compare with related work, and finally we conclude in `section 8`_.
+
+
+.. _`section 2`:
+
+============================================================
+                        Architecture
+============================================================
+
+
+XXX it contains on
+the one hand an implementation of the Python programming language,
+mostly complete and compliant with the current version of the language,
+Python 2.4.  Our current efforts are focused on the second part, which
+is a translation toolsuite whose goal is, roughly speaking, to compile
+various subsets of Python to various environment.
+
+
+
+.. _`section 3`:
+
+============================================================
+                 System programming with Python
+============================================================
+
+
+XXX
+
+
+
+.. _`section 4`:
+
+============================================================
+                        Type inference
+============================================================
+
+
+XXX
+
+
+
+.. _`section 5`:
+
+============================================================
+                     Experimental results
+============================================================
+
+
+XXX
+
+
+
+.. _`section 6`:
+
+============================================================
+                        Future work
+============================================================
+
+
+XXX
+
+
+
+.. _`section 7`:
+
+============================================================
+                        Related work
+============================================================
+
+
+XXX
+
+
+
+.. _`section 8`:
+
+============================================================
+                        Conclusion
+============================================================
+
+
+XXX

Modified: pypy/extradoc/talk/dls2006/outline.txt
==============================================================================
--- pypy/extradoc/talk/dls2006/outline.txt	(original)
+++ pypy/extradoc/talk/dls2006/outline.txt	Wed May 24 13:16:13 2006
@@ -6,9 +6,14 @@
 Introduction
 ============
 
-High-level architecture, VM portability+flexibility goals with comparisons
+VM portability+flexibility goals with comparisons
 (rigidity, less expressiveness of implementation languages)
 
+Architecture
+============
+
+High-level architecture, shortly
+
 System programming with Python
 ==============================
 
@@ -27,6 +32,11 @@
 and to reuse with different type systems: RPython, ll, oo, rctypes,
 BTA (binding-time analysis for the JIT)...  easy custom specializations
 
+Experimental results
+====================
+
+a few numbers
+
 Future work
 ===========
 



More information about the Pypy-commit mailing list