[pypy-commit] pypy sepcomp2: Move file to extradoc repo

amauryfa noreply at buildbot.pypy.org
Tue Feb 21 02:02:21 CET 2012


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: sepcomp2
Changeset: r52695:10fbdd68bcca
Date: 2012-02-21 02:01 +0100
http://bitbucket.org/pypy/pypy/changeset/10fbdd68bcca/

Log:	Move file to extradoc repo

diff --git a/pypy/README b/pypy/README
deleted file mode 100644
--- a/pypy/README
+++ /dev/null
@@ -1,81 +0,0 @@
-Separate Compilation
-====================
-
-Goal
-----
-
-Translation of an extension module written in RPython.
-The best form is probably the MixedModule.
-
-Strategy
---------
-
-The main executable (bin/pypy-c or libpypy-c.dll) exports RPython
-functions; this "first translation" also produces a pickled object
-that describe these functions: signatures, exception info, etc.
-
-It will probably be necessary to list all exported functions and methods,
-or mark them with some @exported decorator.
-
-The translation of an extension module (the "second translation") will
-reuse the information from the pickled object; the content of the
-MixedModule is annotated as usual, except that functions exported by
-the main executable are now external calls.
-
-The extension module simply has to export a single function
-"init_module()", which at runtime uses space operations to create and
-install a module.
-
-
-Roadmap
--------
-
-* First, a framework to test and measure progress; builds two
-  shared libraries (.so or .dll):
-  
-  - the first one is the "core module", which exports functions 
-  - that can be called from the second module, which exports a single
-    entry point that we call call with ctypes.
-
-* Find a way to mark functions as "exported".  We need to either
-  provide a signature, or be sure that the functions is somehow
-  annotated (because it is already used by the core interpreter)
-
-* Pass structures (as opaque pointers). At this step, only the core
-  module has access to the fields.
-
-* Implement access to struct fields: an idea is to use a Controller
-  object, and redirect attribute access to the ClassRepr computed by
-  the first translation.
-
-* Implement method calls, again with the help of the Controller which
-  can replace calls to bound methods with calls to exported functions.
-
-* Share the ExceptionTransformer between the modules: a RPython
-  exception raised on one side can be caught by the other side.
-
-* Support subclassing.  Two issues here:
-
-  - isinstance() is translated into a range check, but these minid and
-    maxid work because all classes are known at translation time.
-    Subclasses defined in the second module must use the same minid
-    and maxid as their parent; isinstance(X, SecondModuleClass) should
-    use an additional field.  Be sure to not confuse classes
-    separately created in two extension modules.
-
-  - virtual methods, that override methods defined in the first
-    module.
-
-* specialize.memo() needs to know all possible values of a
-  PreBuildConstant to compute the results during translation and build
-  some kind of lookup table.  The most obvious case is the function
-  space.gettypeobject(typedef).  Fortunately a PBC defined in a module
-  can only be used from the same module, so the list of prebuilt
-  results is probably local to the same module and this is not really
-  an issue.
-
-* Integration with GC.  The GC functions should be exported from the
-  first module, and we need a way to register the static roots of the
-  second module.
-
-* Integration with the JIT.


More information about the pypy-commit mailing list