[pypy-svn] r20480 - pypy/dist/pypy/doc
arigo at codespeak.net
arigo at codespeak.net
Thu Dec 1 10:37:02 CET 2005
Author: arigo
Date: Thu Dec 1 10:37:01 2005
New Revision: 20480
Modified:
pypy/dist/pypy/doc/architecture.txt
Log:
Port of mwh's anglicizations from extradoc/talk/22c3/techpaper.txt.
Modified: pypy/dist/pypy/doc/architecture.txt
==============================================================================
--- pypy/dist/pypy/doc/architecture.txt (original)
+++ pypy/dist/pypy/doc/architecture.txt Thu Dec 1 10:37:01 2005
@@ -46,7 +46,7 @@
and extensions, following the ideas of Stackless_ and others, that will
increase the expressive power available to python programmers.
-.. _Python: http://www.python.org/doc/current/ref/ref.html
+.. _Python: http://docs.python.org/ref
.. _Psyco: http://psyco.sourceforge.net
.. _Stackless: http://stackless.com
@@ -55,7 +55,7 @@
========================
PyPy is not only about writing another Python interpreter.
-Traditionally, interpreters are written in some target platform language
+Traditionally, interpreters are written in a target platform language
like C/Posix, Java or C#. Each such interpreter provides a "mapping"
from application source code to the target environment. One of the
goals of the "all-encompassing" environments, like the .NET framework
@@ -68,20 +68,20 @@
Python interpreter for a specific target platform. We have written a
Python interpreter in Python, without many references to low-level
details. (Because of the nature of Python, this is already a
-complicated task, although not as much as writing it -- say -- in C.)
+complicated task, although not as much as writing it in - say - C.)
Then we use this as a "language specification" and manipulate it to
produce the more traditional interpreters that we want. In the above
sense, we are generating the concrete "mappings" of Python into
lower-level target platforms.
-So far (fall 2005), we have already succeeded in turning this "language
+So far (autumn 2005), we have already succeeded in turning this "language
specification" into reasonably efficient C-level code that performs
basically the same job as CPython. Memory management is inserted during
-this "translation" process. It can be configured to use reference
+this *translation* process. It can be configured to use reference
counting or not; thus we have already achieved two very different
-"mappings" of application Python code over C/Posix. We have
-successfully translated our Python interpreter to the LLVM_ target as
-well, and we are working on targeting higher-level environments like
+mappings of application Python code over C/Posix. We have
+successfully also translated our Python interpreter into LLVM_ code,
+and we are working on targeting higher-level environments like
Java and Squeak.
In some senses, PyPy project's central component is not its
@@ -99,7 +99,7 @@
* we can tweak the translation process to produce low-level code based
on different models and tradeoffs.
-By contrast, a standardized target environment -- say .NET --
+By contrast, a standardized target environment - say .NET -
enforces ``m=1`` as far as it's concerned. This helps making ``o`` a
bit smaller by providing a higher-level base to build upon. Still,
we believe that enforcing the use of one common environment
@@ -107,9 +107,9 @@
as far as language implementation is concerned - showing an approach
to the ``n * m * o`` problem that does not rely on standardization.
-This is the "meta-goal"; a more concrete goal worth mentioning at this
+This is the *meta-goal*; a more concrete goal worth mentioning at this
point is that language specifications can be used to generate cool stuff
-in addition to traditional interpreters -- e.g. Just-In-Time Compilers.
+in addition to traditional interpreters - e.g. Just-In-Time compilers.
Higher level picture
@@ -176,7 +176,7 @@
- the *annotator* which performs type inference on the flow graph;
- the *typer* which, based on the type annotations, turns the flow graph
- into one using only low-level, operations that fit the model of the
+ into one using only low-level operations that fit the model of the
target platform;
- the *code generator* which translates the resulting flow graph into
@@ -200,8 +200,7 @@
Python code at some point. However, in the start-up phase, we are
completely free to use all kinds of powerful python constructs, including
metaclasses and execution of dynamically constructed strings. However,
-when the initialization phase (mainly, the function
-``objspace.initialize()``) finishes, all code objects involved need to
+when the initialization phase finishes, all code objects involved need to
adhere to a more static subset of Python:
Restricted Python, also known as `RPython`_.
@@ -241,7 +240,7 @@
uses them to modify the flow graph in-place to replace its operations with
low-level ones, directly manipulating C-like values and data structures.
-Here is an overview of the whole process (`PDF color version`_):
+Here is an overview of the translation process (`PDF color version`_):
.. image:: image/translation-greyscale-small.png
@@ -279,12 +278,12 @@
written in Python to the resulting self-contained executable.
Our rather complete and Python 2.4-compliant interpreter consists
-of about 30'000-50'000 lines of code (depending on the way you
+of about 30,000-50,000 lines of code (depending on the way you
count code borrowed and adapted from other sources), with
-another 14'000 lines of unit tests. If we include the tools,
+another 14,000 lines of unit tests. If we include the tools,
the parts related to code analysis and generation, and the
-standard library modules ported from C, PyPy is now 138'000
-lines of code and 32'000 lines of tests. Refer to
+standard library modules ported from C, PyPy is now 138,000
+lines of code and 32,000 lines of tests. Refer to
the `statistics web page`_ for more detailed information.
.. _`statistics web page`: http://codespeak.net/~hpk/pypy-stat/
More information about the Pypy-commit
mailing list