[Cython] Buffer syntax/array primitive type
Prabhu Ramachandran
prabhu at aero.iitb.ac.in
Sun Mar 8 12:15:05 CET 2009
On 03/08/09 16:08, Dag Sverre Seljebotn wrote:
>> def f(int[:] arr):
>> cdef int i
>> # ...
>> arr.append(i)
>
> No, this would never happen. This is defined as syntax candy for PEP 3118,
> which exports a view to allocated memory but doesn't say anything about
> how that memory is allocated or deallocated.
That is what I had imagined but hope springs eternal.
> I believe we must solve this, but in a different way. Given that we get a
> "fast list", wouldn't we then want a "fast dict"?
Indeed, that would be the next obvious step. :)
> Adding a type templating mechanism to Cython is not out of the question I
> think, there was some talk 3/4 year ago. But now I myself believe the most
> promising option is to wrap C++ in a very good way, so that one can do
> something along the lines of
>
> cdef cpp.vector[int] arr = cpp.vector[int]()
> cdef cpp.map[str, cpp.vector[int]] map = cpp.map[str, cpp.vector[int]]()
> arr.push_back(3)
> map[40] = arr
I guess that would work too.
> (Yes, those lines raises about 10 questions about reference counting vs.
> copy-by-value semantics; making C++ access feel Pythonic is part of such a
> challenge IMO.)
Indeed and all those would have to be handled very carefully.
A cheap templating system would be of course to do string substitutions
and spit out the template instances into a pyx file using Python --
along the lines of numpy's own templating with the .src files.
A more integrated solution would of course be really convenient.
cheers,
prabhu
More information about the Cython-dev
mailing list