<div dir="ltr"><div>Apropos Julian's <a href="https://github.com/numpy/numpy/pull/4177">changes</a> to use the PyObject_* allocation suite for some parts of numpy, I posted the following<br><div class="">
              <div class="">
                  <p style="margin-left:40px">I think numpy memory management is due a cleanup. Currently we have</p><div style="margin-left:40px">

</div><pre style="margin-left:40px"><code>PyDataMem_*
PyDimMem_*
PyArray_*
</code></pre><div style="margin-left:40px">

</div><p style="margin-left:40px">Plus the <code>malloc</code>, <code>PyMem_*</code>, and <code>PyObject_*</code> interfaces. That is six ways to manage heap allocations. As far as I can tell, <code>PyArray_*</code> is always <code>PyMem_*</code> in practice. We probably need to keep the <code>PyDataMem</code> family as it has a memory tracking option, but <code>PyDimMem</code> just confuses things, I'd rather just use <code>PyMem_*</code> with explicit <code>size</code>. Curiously, the <code>PyObject_Malloc</code> family is not documented apart from some release notes. </p>
<div style="margin-left:40px">

</div><p style="margin-left:40px">We should also check for the macro versions of <code>PyMem_*</code> as they are deprecated for extension modules. </p>
              </div>
            </div>Nathaniel then suggested that we consider going all Python allocators, especially as new memory tracing tools are coming online in 3.4. Given that these changes could have some impact on current extension writers I thought I'd bring this up on the list to gather opinions.<br>
<br></div>Thoughts?<br></div>