Sturla Molden wrote: >> Introducing this syntax would actually mean less time to focus on "real >> usability issues" like that. OTOH, if the syntax I propose is superior, >> it's better to introduce it early in a long-term perspective. >> > > There is not much difference between > > cdef int[:,:] array > > and > > cdef numpy.ndarray[int, dim=2] array > > except that the latter is a Python object. The only minor issue with > that is the GIL. On the other hand, the former is not a Python object, > which means it is not garbage collected. > As with all syntax, the difference is mostly psychological. The former means "now I need fast access and will want to hit the metal, and will no longer look on my array through a NumPy object but through a buffer view", whether the latter is "let Cython can optimize some of the NumPy operations".
About garbage collection, int[:,:] would always be a buffer view unto an underlying object which *would* be garbage collected. I.e. it is *not* stack-allocated memory; so when you do cdef np.int_t[:,:] arr = np.zero((10,10), np.int) then the memory of the array is garbage collected insofar the result of np.zero is. "arr" simply adds a reference to the underlying object (and slices add another reference, and so on). Support for GIL-less programming is on the wanted-list anyway for both syntaxes though; Cython can now when one does something illegal and only let through certain uses of the variable, so both syntaxes works for this. Dag Sverre _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion