[pypy-svn] r30295 - pypy/dist/pypy/doc
arigo at codespeak.net
arigo at codespeak.net
Thu Jul 20 20:14:53 CEST 2006
Author: arigo
Date: Thu Jul 20 20:14:52 2006
New Revision: 30295
Modified:
pypy/dist/pypy/doc/independent-project-ideas.txt
pypy/dist/pypy/doc/index.txt
Log:
(mwh, cfbolz, hpk, arigo)
Updated independent-project-ideas, and put it in the context of the Summer of
PyPy instead of the Summer of Code.
Modified: pypy/dist/pypy/doc/independent-project-ideas.txt
==============================================================================
--- pypy/dist/pypy/doc/independent-project-ideas.txt (original)
+++ pypy/dist/pypy/doc/independent-project-ideas.txt Thu Jul 20 20:14:52 2006
@@ -1,65 +1,131 @@
Independent project ideas in PyPy
=================================
-PyPy allows experimentation in a lot of directions. This page is meant to
+PyPy allows experimentation in many directions. This page is meant to
collect some ideas of things to try. If you are a student you can
also get inspired for a proposal for our new `Summer of PyPy`_ campaign:
-you get a mentor and good funding of travels and accomodation for our
+you get a mentor and good funding of travel and accomodation for our
sprints.
Feel free to suggest new ideas and discuss them on IRC or the pypy-dev
-list.
+list (see the contact_ page).
-In no particular order:
+-----------
-* Rewrite one or several CPython extension modules to be based on **ctypes**
- (newly integrated in Python 2.5): this is generally useful for Python
- developers, and it is now the best path to write extension modules that are
- compatible with both CPython and PyPy. See for example
- http://wiki.python.org/moin/CodingProjectIdeas/PygameOnCtypes .
- (This is not documented so far; for an example on which we are working now,
- look at the socket module at
- http://codespeak.net/svn/pypy/dist/pypy/module/_socket/).
-
-* A related idea is to provide efficient numeric arrays (as in
- numeric/numpy/numarray) in this way, or `recreate them as builtins`_.
-
-* Start a back-end for a new target platform, e.g. for the **Java** virtual
- machine. This would be a path to bring PyPy and Jython closer and help
- support Jython's effort to keep up-to-date, in particular with extension
- modules. Other back-ends that we are already working on are for Squeak,
- Microsoft's CLI, and Common Lisp; look for ``squeak``, ``cli`` and ``cl``
- in http://codespeak.net/svn/pypy/dist/pypy/translator.
-
-* A research project: experiment with optimizations in PyPy, e.g. by trying
- various **data structures** for dicts or other built-in objects, by switching
- between data structures at run-time, comparing results for different
- applications, etc. This should produce experimental results (mostly
- timings, memory usage trade-offs) as much as code.
-
-* Revive **rexec** : implement security checks, sandboxing, or
- some similar model within PyPy (which, if I may venture an opinion, makes
- more sense and is more robust than trying to do it in CPython).
-
-* Write **new object spaces** adding features like transparent or
- semi-transparent distribution of a program across several machines, and/or
- persistence (pickling of program state).
- Read more about `object spaces`_...
-
-* Write an interpreter for **another dynamic language** in the PyPy framework.
- For example, a Javascript interpreter would be suitable. Ruby too (though
- the latter is probably more than two months of work). Or Scheme, or... etc.
+.. contents::
-* a P2P model of distributed execution (extending `py.execnet`_)
+Extension modules
+-----------------
+
+Rewrite one or several CPython extension modules to be based on **ctypes**
+(newly integrated in Python 2.5): this is generally useful for Python
+developers, and it is now the best path to write extension modules that are
+compatible with both CPython and PyPy. This is done with the `extension
+compiler`_ component of PyPy, which will likely require some attention as
+well.
+
+Modules where some work is already done:
+
+* ``_socket``, ``os``, ``select`` (unfinished yet, feel free to help;
+ see e.g. http://codespeak.net/svn/pypy/dist/pypy/module/_socket/).
+
+* SSL for socket, ``bz2``, ``fcntl``, ``mmap`` and ``time``: part of the
+ Summer of Code project of Lawrence Oluyede
+ (http://codespeak.net/svn/user/rhymes/).
+
+You are free to pick any other CPython module, either standard or third-party
+(if relatively well-known). Note that some modules exist in a ctypes version
+already, which would be a good start for porting them to PyPy's extension
+compiler. We'd particularly appreciate ``readline`` :-)
+
+Numeric/NumPy/numarray support
+------------------------------
+
+At the EuroPython sprint, some work was done on making RPython's annotator
+recognise Numeric arrays, with the goal of allowing programs using them to be
+efficiently translated. It would be a reasonably sized project to finish this
+work, i.e. allow RPython programs to use some Numeric facilities.
+Additionally, these facilities could be exposed to applications interpreted by
+the translated PyPy interpreter.
+
+Start or improve a back-end
+---------------------------
+
+PyPy has complete, or nearly so, back-ends for C, LLVM and CLI/.NET and
+partial backends for Common Lisp and Squeak. It would be an interesting
+project to improve either of these partial backends, or start one for another
+platform -- the most obvious of which would be the **Java** Virtual Machine.
+
+Write a new front end
+---------------------
+
+Write an interpreter for **another dynamic language** in the PyPy framework.
+For example, a Javascript interpreter would be suitable. Ruby too (though
+the latter is probably more than two months of work). Or Scheme, or... etc.
+
+We have a prototype `Prolog interpreter`_ :-)
+
+Experiment with optimizations
+-----------------------------
+
+A research project: experiment with optimizations in PyPy, e.g. by trying
+various **data structures** for dicts or other built-in objects, by switching
+between data structures at run-time, comparing results for different
+applications, etc. This should produce experimental results (mostly timings,
+memory usage trade-offs) as much as code. (The point of PyPy is that we can
+do this without making the interpreted applications aware of the optimization
+at all.)
+
+For example, we have started some work on:
+
+* lazy string slices (slicing a string gives an object that references a part
+ of the original string).
+
+* lazily concatenated strings (repeated additions and joins are done
+ incrementally).
+
+* dictionaries specialized for string-only keys.
+
+Investigate restricted execution models
+---------------------------------------
+
+Revive **rexec**\ : implement security checks, sandboxing, or some similar
+model within PyPy (which, if I may venture an opinion, makes more sense and is
+more robust than trying to do it in CPython).
+
+There are multiple approaches that can be discussed and tried. One of them is
+about safely executing limited snippets of untrusted RPython code (see
+http://codespeak.net/pipermail/pypy-dev/2006q2/003131.html). More general
+approaches, to execute general but untrusted Python code on top of PyPy,
+require more design. The object space model of PyPy would easily allow
+objects to be tagged and tracked. The translation of PyPy would also be a
+good place to insert e.g. systematic checks around all system calls.
+
+Write a new object space
+------------------------
+
+Write **new object spaces** adding features like transparent or
+semi-transparent distribution of a program across several machines, and/or
+persistence (pickling of program state). This could typically be based on
+"proxy" objects, behaving as transparent links to objects located on other
+machines. Read more about `object spaces`_...
+
+Extend py.execnet to a peer-to-peer model
+-----------------------------------------
+
+* Work on a P2P model of distributed execution (extending `py.execnet`_)
that allows `py.test`_ and other upcoming utilities to make use of a
network of computers executing python tasks (e.g. tests or PyPy build tasks).
-* a client tool and according libraries to instantiate a dynamic network
+* Make a client tool and according libraries to instantiate a (dynamic) network
of computers executing centrally managed tasks (e.g. build or test ones).
- (this may make use of a P2P model or not, both is likely feasible).
+ (This may make use of a P2P model or not, both is likely feasible).
+
+Or else...
+----------
-* improving `py.test`_ to contain benchmarking and/or better
- reporting (e.g. cool html or PDF reports).
+* Improve `py.test`_ to contain benchmarking and/or better reporting
+ (e.g. cool html or PDF reports).
* Constraint programming: `efficient propagators for specialized
finite domains`_ (like numbers, sets, intervals).
@@ -77,12 +143,14 @@
.. _`efficient propagators for specialized finite domains`: http://codespeak.net/svn/pypy/extradoc/soc-2006/constraints.txt
-.. _`recreate them as builtins`: http://codespeak.net/svn/pypy/extradoc/soc-2006/numeric-arrays.txt
-.. _`code templating solution`: http://codespeak.net/svn/pypy/extradoc/soc-2006/code-templating.txt
-.. _`pypy-dev mailing list`: http://codespeak.net/mailman/listinfo/pypy-dev
-.. _`object spaces`: objspace.html
-.. _`py lib`: http://codespeak.net/py/
.. _`py.test`: http://codespeak.net/py/current/doc/test.html
.. _`py.execnet`: http://codespeak.net/py/current/doc/execnet.html
+.. _`Prolog interpreter`: http://codespeak.net/svn/user/cfbolz/hack/prolog/interpreter
+.. _`extension compiler`: extcompiler.html
+.. _`object spaces`: objspace.html
+.. _`code templating solution`: http://codespeak.net/svn/pypy/extradoc/soc-2006/code-templating.txt
.. _documentation: index.html
+.. _contact: contact.html
+.. _`pypy-dev mailing list`: http://codespeak.net/mailman/listinfo/pypy-dev
+.. _`Summer of PyPy`: summer-of-pypy.html
Modified: pypy/dist/pypy/doc/index.txt
==============================================================================
--- pypy/dist/pypy/doc/index.txt (original)
+++ pypy/dist/pypy/doc/index.txt Thu Jul 20 20:14:52 2006
@@ -21,6 +21,9 @@
`talks and related projects`_ lists presentations
and related projects.
+`ideas for relatively independent projects`_ which might be a good way to get
+into PyPy.
+
`PyPy video documentation`_ is a page linking to the videos (e.g. of talks and
introductions) that is available.
@@ -123,6 +126,7 @@
.. _`EU reports`: index-report.html
.. _`garbage collection`: garbage_collection.html
.. _`PyPy's own tests`: http://snake.cs.uni-duesseldorf.de/pypytest/summary.html
+.. _`ideas for relatively independent projects`: independent-project-ideas.html
.. _`Nightly builds and benchmarks`: http://snake.cs.uni-duesseldorf.de/pypytest/benchmark.html
.. _`directory reference`:
More information about the Pypy-commit
mailing list