[Python-Dev] If aligned_alloc() is missing on your platform, please let us know. (original) (raw)

Stefan Krah stefan at bytereef.org
Sat Oct 28 08:36:27 EDT 2017


On Sat, Oct 28, 2017 at 03:43:47PM +1000, Nick Coghlan wrote:

1. CPython's own support for platforms where we don't have a native aligned memory allocation API to call is covered by PEP 11, so if all current buildbots still work, then it will be up to the folks interested in a platform that doesn't offer aligned allocations to provide both a suitable emulation and a buildbot to test it on.

Indeed, the feature is backed up by PEP 11.

2.While all of the CPython-provided memory allocators will implement the new slots, the folks implementing their own custom allocators will need a defined upgrade path in the "Porting" section of the What's New guide. For that, an explicit error on 3.7+ that says "Configured custom allocator doesn't implement aligned memory allocations" is likely going to be easier to debug than subtle issues with the way an implicit emulation layer interacts with the other memory allocator slots.

To appropriately address 2, we need more info not about which platforms natively support aligned memory allocations, but rather from folks that actually are implementing their own custom allocators. It may be that making the low level cross-platform raw alligned allocators available as a public API (independently of the switchable allocator machinery) will be a more appropriate way of handling that case than providing an emulation layer in terms of the old slots.

I don't have an opinion whether new slots should be available. For my use case I just need PyMem_AlignedAlloc(), PyMem_AlignedFree() that automatically use the faster allocator for 'sizeof(void *) <= align <= ALIGNMENT' and 'size <= SMALL_REQUEST_THRESHOLD'.

So yes, it would be nice to hear from people who implement custom allocators.

Stefan Krah



More information about the Python-Dev mailing list