Re: RFC: prototype of C extensions using the Python limited API

Matthieu Longo via Gdb <[email protected]> Thu, 28 May 2026 17:31:55 +0100
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
--------------0LE9j70VfLPc9pe0pym091sh
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/05/2026 17:24, Matthieu Longo via Gdb wrote:
> Hi Tom,
> 
> As I previously told you (at least, I believe so but I am not 100% sure), I finished migrating all
> the Python C extensions some time ago. I had discovered some issues with a case of inheritance
> causing unexpected crashes.
> To facilitate the debugging, I decided to implement a prototype outside of GDB, and managed to make
> it work. I finally got the prototype reviewed by Victor Stinner, a Python core developer, to double-
> check whether my design was working as expected.
> 
> Please find attached my last iteration. I also provided an archive which should be more convenient
> for you if you want to compile and test it.
> 
> Could you please review it so that we validate this new approach before I migrate all my previous
> patches to it ?
> 
> PS:
> - a README is provided with all the needed instruction inside.
> - this patch contains code from outside GDB's repository, and should not be merged inside GDB's
> repository.
> 
> Regards,
> Matthieu

With the archive, hopefully not inlined.
--------------0LE9j70VfLPc9pe0pym091sh
Content-Type: application/x-gzip; name="prototype.tar.gz"
Content-Disposition: attachment; filename="prototype.tar.gz"
Content-Transfer-Encoding: base64

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

--------------0LE9j70VfLPc9pe0pym091sh--