[pypy-svn] r5964 - pypy/trunk/doc
arigo at codespeak.net
arigo at codespeak.net
Sun Aug 15 13:38:33 CEST 2004
Author: arigo
Date: Sun Aug 15 13:38:32 2004
New Revision: 5964
Modified:
pypy/trunk/doc/cmodules.txt
pypy/trunk/doc/howtopypy.txt
Log:
M cmodules.txt
Updates to existing Python versions of some modules.
M howtopypy.txt
Extended the introduction to show the translator.
Added a section "where to start looking in the source".
Modified: pypy/trunk/doc/cmodules.txt
==============================================================================
--- pypy/trunk/doc/cmodules.txt (original)
+++ pypy/trunk/doc/cmodules.txt Sun Aug 15 13:38:32 2004
@@ -19,7 +19,7 @@
_localemodule
-_randommodule
+_randommodule - already exists but with a lesser generator
_sre - already exists?
@@ -51,15 +51,15 @@
imgfile
-itertoolsmodule
+itertoolsmodule - already exists?
mathmodule
md5module
-operator
+operator - done in PyPy
-parsermodule
+parsermodule - already exists?
rgbimgmodule
Modified: pypy/trunk/doc/howtopypy.txt
==============================================================================
--- pypy/trunk/doc/howtopypy.txt (original)
+++ pypy/trunk/doc/howtopypy.txt Sun Aug 15 13:38:32 2004
@@ -30,16 +30,11 @@
3. To start interpreting Python with PyPy, use Python 2.3 or greater::
cd src/pypy/interpreter
- python py.py -S
+ python py.py
After a few seconds, you should be at the PyPy prompt, which is
the same as the Python prompt, but with an extra ">".
- The "-S" given on the command line instructs the PyPy interpreter
- to use the `Standard object space`_. PyPy has the concept of different
- object spaces_, but the standard space is the one which contains
- the "real" Python-in-Python interpreter.
-
4. Now you are ready to start running Python code. Some real Python
modules will not run yet, and others will run too slowly to be
@@ -61,12 +56,12 @@
As an example of using PyPy from the command line, you could type::
- python py.py -S -c "import pystone; pystone.main(10)"
+ python py.py -c "import pystone; pystone.main(10)"
Alternatively, as with regular Python, you can simply give a
script name on the command line::
- python py.py -S ../appspace/pystone.py
+ python py.py ../appspace/pystone.py
(Note that this will run "forever" -- actually, "just" for many
hours, with the current implementation of PyPy.)
@@ -77,34 +72,132 @@
To run all the unit tests::
cd src/pypy
- python test_all.py -S
+ python test_all.py
Alternatively, you may run subtests by going to the correct subdirectory
and running them individually::
cd src/pypy/module/test
- python test_builtin.py -S
+ python test_builtin.py
Finally, there are some more advanced tests (which are derived from
some of the standard CPython tests). These are not part of the unit
tests, because they take longer than the standard unit tests::
cd src/pypy/interpreter
- python py.py -S -c "import builtin_types_test"
+ python py.py ../appspace/builtin_types_test.py
+
+
+Trying out the translator
+=========================
+
+The translator is a tool based on the PyPy interpreter which can translate
+sufficiently static Python programs into low-level code.
+
+1. Download and install `Dot Graphviz`_.
+
+2. Download and install Pygame_ if you do not already have it.
+
+3. Type::
+
+ cd src/pypy/translator
+ python -i translator.py
+
+ Test snippets of translatable code are provided in the file
+ ``test/snippet.py``. For example::
+
+ >>> t = Translator(test.is_perfect_number)
+ >>> t.simplify()
+ >>> t.view()
+
+4. We have a type annotator that can completely infer types for functions like
+ ``is_perfect_number``::
+
+ >>> t.annotate([int])
+ >>> t.view()
+
+ Move the mouse over variable names (in red) to see their inferred types.
+
+5. The graph can be turned into Pyrex code, with types if ``annotate()`` was
+ called::
+
+ >>> print t.pyrex()
+ >>> f = t.compile()
+ >>> f(28)
+ 1
+
+ Note how the strange-looking Pyrex code is unrelated to the original
+ Python source code. This is because the Pyrex code is generated from the
+ graph only, without reference to the original source.
+
+
+Where to start reading the sources
+==================================
+
+PyPy is made from parts that are relatively independent from each other.
+You should start looking at the part that attracts you most:
+
+* `src/pypy/interpreter`_ contains the basic interpreter: bytecode dispatcher
+ in pyopcode.py_, frame and code objects in eval.py_ and pyframe.py_,
+ function objects and argument passing in function.py_ and argument.py_,
+ the object space interface definition in baseobjspace.py_, modules in
+ module.py_ and extmodule.py_. Core types supporting the interpreter are
+ defined in typedef.py_.
+
+* `src/pypy/objspace/std`_ contains the `Standard object space`_. The main file
+ is objspace.py_. For each type, the files ``xxxtype.py`` and
+ ``xxxobject.py`` contain respectively the definition of the type and its
+ (default) implementation.
+
+* `src/pypy/objspace`_ contains a few other object spaces: the trivial one
+ (but let's forget about it), the trace_ one, the flow_ one. The latter
+ is a relatively short piece of code that builds the control flow graphs
+ when the interpreter runs in it.
+
+* `src/pypy/translator`_ contains the code analysis and generation stuff.
+ Start reading from translator.py_, from which it should be easy to follow
+ the pieces of code involved in the various translation phases.
+
+* `src/pypy/annotation`_ contains the data model for the type annotation that
+ can be inferred about a graph. The graph "walker" that uses this is in
+ `src/pypy/translator/annrpython.py`_.
+
+To learn more
+=============
-7. To learn more about PyPy and its development process, read the documentation_
+* To learn more about PyPy and its development process, read the documentation_
and the wiki_, and consider subscribing to the `mailing lists`_ (or simply
read the archives online) or communicating via irc.freenode.net:6667, channel #pypy.
-8. To help PyPy become Python-the-next-generation, write some `unit tests`_ and
+* To help PyPy become Python-the-next-generation, write some `unit tests`_ and
file some `bug reports`_!
--------------------------------------------------------------------------------
.. _subversion: http://codespeak.net/pypy/index.cgi?doc/devel/howtosvn.html
+.. _Dot Graphviz: http://www.research.att.com/sw/tools/graphviz/
+.. _Pygame: http://www.pygame.org/
+.. _src/pypy/interpreter: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/
+.. _pyopcode.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/pyopcode.py
+.. _eval.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/eval.py
+.. _pyframe.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/pyframe.py
+.. _function.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/function.py
+.. _argument.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/argument.py
+.. _baseobjspace.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/baseobjspace.py
+.. _module.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/module.py
+.. _extmodule.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/extmodule.py
+.. _typedef.py: http://codespeak.net/svn/pypy/trunk/src/pypy/interpreter/typedef.py
+.. _src/pypy/objspace/std: http://codespeak.net/svn/pypy/trunk/src/pypy/objspace/std/
.. _Standard object space: http://codespeak.net/pypy/index.cgi?doc/objspace/stdobjspace.html
-.. _spaces: http://codespeak.net/pypy/index.cgi?doc/objspace/objspace.html
+.. _objspace.py: http://codespeak.net/svn/pypy/trunk/src/pypy/objspace/std/objspace.py
+.. _src/pypy/objspace: http://codespeak.net/svn/pypy/trunk/src/pypy/objspace/
+.. _trace: http://codespeak.net/svn/pypy/trunk/src/pypy/objspace/trace.py
+.. _flow: http://codespeak.net/svn/pypy/trunk/src/pypy/objspace/flow/
+.. _src/pypy/translator: http://codespeak.net/svn/pypy/trunk/src/pypy/translator/
+.. _translator.py: http://codespeak.net/svn/pypy/trunk/src/pypy/translator/translator.py
+.. _src/pypy/annotation: http://codespeak.net/svn/pypy/trunk/src/pypy/annotation/
+.. _src/pypy/translator/annrpython.py: http://codespeak.net/svn/pypy/trunk/src/pypy/translator/annrpython.py
.. _mailing lists: http://codespeak.net/pypy/index.cgi?lists
.. _documentation: http://codespeak.net/pypy/index.cgi?doc
.. _wiki: http://codespeak.net/moin/pypy/moin.cgi/FrontPage?action=show
More information about the Pypy-commit
mailing list