Niklaus Haldimann wrote: ...
I think the buffer interface is a no-brainer, but maybe I'm missing something. Our buffer type is written at applevel, we have no obligation at all to emulate CPython's C-based buffer interface. We can define our own interface, and in fact the current buffer implementation sort of does that. Hacking array support into the current buffer will be a matter of 2-3 lines of code, AFAICT. More effort would be a waste of time anyway, as buffer is as good as deprecated. ;)
Sounds reasonable. Actually I didn't look too closely into the array module myself, I was just repeating what another guy reported when trying to implement it. So it might be easier than I expcetged. ...
I see, that really clears things up a bit. Is it correct to say that geninterping such an "applevel RPython" module guarantees that the resulting interplevel code can in fact be translated? That sounds a bit too much like magic to me.
No, it doesn't. It tells you that the flow space is happy with your code, but still there may be issues with annotation I think. And stuff like producing an infinite recursion is not detected at all. For instance, we had code that relied on applevel in a way that the implementation called into the interpreter for something that then goes back to the implementation which... So I'd say geninterping is a necessary but not sufficient condition. ...
OK. Just to be a bit more explicit about this, I do something like:
t = Translator(my_rpython_function) t.annotate([int])
And check that the inferred return type is not SomeObject. This basically means that flowspace and rtyper are happy, right? What I don't understand ATM is where the translator will get the above "[int]" annotation hint from in the real world ...
You are giving it the hint to have some reasonable starting point for testing, assuming that this assumption generally holds. In the real world, everything and all of PyPy is run through the annotator, which re-iterates stuff until it ends up with a proven interface, or it has to give up with someobjectness. So the realanalysis depends on whether your implementation is really called in the right way, all over PyPy. ciao - chris -- Christian Tismer :^) <mailto:tismer@stackless.com> tismerysoft GmbH : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9A : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 802 86 56 mobile +49 173 24 18 776 fax +49 30 80 90 57 05 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/