[Numpy-discussion] NumPy re-factoring project

Sturla Molden sturla at molden.no
Sat Jun 12 22:39:03 EDT 2010


Den 13.06.2010 02:39, skrev David Cournapeau:
>
> But the point is to get rid of the python dependency, and if you don't
> allow any api call to allocate memory, there is not much left to
> implement in the core.
>
>    

Memory allocation is platform dependent. A CPython version could use 
bytearray, other platforms could e.g. use arrays from a gc managed heap 
(IronPython, Jython). Because memory management is platform dependent, 
it does not naturally belong in the core.

Having ndarrays allocate buffers with malloc() and "own" buffers they've 
allocated complicate things terribly. The purpose of "ownership" is to 
know which ndarray is to call free() on the buffer. Why go through all 
that pain? It's just a duplication of Python's garbage collection. 
Re-inventing the wheel is stupid. Let buffers be Python objects that 
clean themselves up.

If NumPy does not allocate memory on it's own, there will be no leaks 
due to errors in NumPy.

There is still work to do in the core, i.e. the computational loops in 
array operators, broadcasting, ufuncs, copying data between buffers, etc.

The C functions in the core would then be called with the output array 
already allocated.

Sturla



More information about the NumPy-Discussion mailing list