[pypy-dev] RPython question about the lifetime of global state
len-l at telus.net
Thu Mar 6 07:16:57 CET 2014
I am developing a new image blit system for Pygame 2.0 - the SDL2
edition. A blitter prototype project is maintained at
https://bitbucket.org/llindstrom/blitter. The prototype implements a
blit loop JIT; Pixel format specific blit code is generated dynamically
as needed. The prototype is written in RPython as an interpreter for
executing array copies. The JIT comes automatically from the RPython
tool chain, of course.
The prototype blitter is built as a stand-alone shared library with
flags -Ojit --gcrootfinder=shadowstack. It has no Python dependencies.
There are two entrypoint C functions, both decorated with
rpython.rlib.entrypoint.entrypoint. Python side code uses CFFI to access
the library. The library is initialized with a single call to
rpython_startup_code at load time.
The blitter library is meant to be an embedded interpreter, with
initialize, configure, and execute functions. So my question, does the
RPython tool chained explicitly support embedded interpreters? I ask
because I have only seen secondary entry points used as callbacks into
an interpreter (PyPy's cpyext interface). So I wish to confirm that the
lifetime of an RPython global namespace, the JIT caches, and the garbage
collector are that of the loaded library, and not just that of an entry
point function call.
Thanks in advance,
More information about the pypy-dev