This was the only issue I ran into while trying to use a Cython compiled
module from a new module compiled with Py_LIMITED_API, and the fix turned
out to be pretty simple.

The real trick, as you allude to, will be to have a Cython generated module
itself be able to be compiled with Py_LIMITED_API.

-Brad

On Wed, Dec 19, 2012 at 10:24 PM, Stefan Behnel <stefan...@behnel.de> wrote:

> Hi Bradley,
>
> Bradley M. Froehle, 19.12.2012 21:31:
> > I was recently trying to use mpi4py in a hand-written Python 3 extension
> > module with `#define Py_LIMITED_API`.
>
> Work on getting Cython play nicely with Py_LIMITED_API is certainly
> appreciated. In most cases, it should be as simple as adding another #ifdef
> to utility functions that are already written in plain C anyway. A lot of
> the optimisations will need this.
>
>
> > One side effect of the limited
> > API is that `PyTypeObject` becomes an opaque type.
> > This means that our `__Pyx_ImportType` cannot just introspect
> > `tp_basicsize`.
> >
> > I've updated the code to extract the `tp_basicsize` value from the
> > `__basicsize__` attribute which should be available instead.
> >
> > I'd appreciate comments on the code style here... I'm not sure how to
> > write these sorts of calls most efficiently yet.
>
> I think it's ok. The only issue is that PyObject_GetAttrString() creates an
> intermediate string object from the char* you pass. Py3.3 (or 3.2+?) has a
> mechanism for avoiding this. We could start using that if available, or
> maybe even copy it over into Cython to use it in older versions as well.
>
> Anyway, this is code that runs at import time - I don't think it's any
> performance critical (and if a whole import works, the memory allocated for
> a tiny string can't be an issue either...).
>
> Stefan
> _______________________________________________
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel
>
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to