[Python-Dev] Activating pymalloc

Martin v. Loewis martin@v.loewis.de
15 Mar 2002 09:12:46 +0100


Tim Peters <tim.one@comcast.net> writes:

> Are "the right" alloc/dealloc macros documented anywhere?  I can't
> find it, if they are.

http://www.python.org/doc/current/api/memoryInterface.html

is as precise and comprehensive as anything I would have written
myself. The Examples even give explicit examples what cases to avoid.

For PyObject, the equivalent documentation is at

http://www.python.org/doc/current/api/allocating-objects.html

> Much of a pymalloc fan as I am, I'm -1 on introducing it if we can't
> give extension authors a clear, brief, prominent and self-contained
> account of the memory rules they're supposed to follow (I don't
> really know what they are -- I always reverse-engineer it as needed,
> because I never found a place in the docs that offered sufficient
> guidance).

Do you think you would understand the documentation that is currently
there?

BTW, I found the documentation by grepping for PyMem_ in all .tex
files, because I could not be bothered to read the online version,
either.

It leaves out a good many details (i.e. additional API), but I think
this is deliberate - you are not supposed to ever use this other API,
anyway.


> > A lot of extensions will break.  The example code in xxmodule.c was
> > "wrong" for years.
> 
> Ditto Zope (as Guido said), ditto Marc-Andre's extensions, ditto NumPy
> (IIRC), yadda yadda yadda.  I don't know whether MarkH has tried the massive
> Win32 extensions with pymalloc yet.

I wonder whether one could design a script that analyses Python code
for asymmetric usage of memory management functions, e.g. trying to match

   expression->FIELD = ALLOCATOR;
   DEALLOCATOR(other_expression->FIELD);

This would complain if there is a FIELD that has no symmetric usage,
or if a certain allocator has no counterpart at all in a source file.

I then wonder if that script would have found the errors you cite.

Regards,
Martin