Le jeudi 20 juin 2013, Nick Coghlan  a écrit :<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">
> Is PyMemMappingAllocator complete enough for your usage at CCP Games?</p>
<p dir="ltr">Can we go back to calling this the "Arena" allocator? Or at least "Mapped"? When I see "Mapping" in the context of Python I think of the container API, not a memory allocation API.</p>
</blockquote><div>This function is written to be able to use mmap() and VirtualAlloc(). There is no Python function to use directly this allocator yet, but I chose "memory mapping" name because it is very different than the heap and it may be useful for other functions than pymalloc.</div>
<div><br></div><div>If I change the name, it would be called PyObject_SetArenaAllocator() with a PyObjectArenaAllocator structure. I'm not sure that PyMemMappingAllocator API is future-proof, so I'm fine to call it "arena" again.</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">
> I hope that the PEP 445 is flexible enough to allow you to decide<br>
> which functions are hooked and replaced, and which functions will be<br>
> leaved unchanged. That's why I'm not in favor of the "Make<br>
> PyMem_Malloc() reuse PyMem_RawMalloc() by default" alternative.</p>
<p dir="ltr">It's also why I'm in favour of the "domain" API rather than separate functions.</p>
<p dir="ltr">1. In the initial iteration, just have the three basic domains (raw, interpreter, objects). Replacing allocators for third party libraries is the responsibility of embedding applications.</p>
<p dir="ltr">2. In a later iteration, add "PyMem_AddDomain" and "PyMem_GetDomains" APIs so that extension modules can register new domains for wrapped libraries. Replacing allocators is still the responsibility of embedding applications, but there's a consistent API to do it.</p>


<p dir="ltr">(Alternatively, we could do both now)</p></blockquote><div>How would you use an allocator of a new domain? PyMemBlockAllocator structure is not convinient, and if <span></span>Py_GetAllocator() only once, you may loose a hook installed later.</div>
<div><br></div><div>Victor</div>