Remove private C API functions

 — 

In Python 3.13 alpha 1, I removed more than 300 private C API functions. Even if I announced my plan early in July, users didn't "embrace" my plan and didn't agree with the rationale. I reverted 50 functions in the alpha 2 release to calm down the situation and …

Category: cpython Tags:

Design the API of a new PyDict_GetItemRef() function

 — 

Last June, I proposed adding a new PyDict_GetItemRef() function to Python 3.13 C API. Every aspect of the API design was discussed in length. I will explain how the API was designed, to finish with the future creation of C API Working Group.

Psyche Revived by Cupid's Kiss

Photo: Psyche Revived by Cupid's Kiss …

Category: cpython Tags:

My contributions to Python (July 2023)

 — 

In 2023, between May 4 and July 8, I made 144 commits in the Python main branch. In this article, I describe the most important Python contributions that I made to Python 3.12 and Python 3.13 in these months.

Foxes in Love: Cuddle

Drawing: Foxes in Love: Cuddle

Summary

  • Add PyImport_AddModuleRef() and …
Category: cpython Tags:

Convert macros to functions in the Python C API

 — 
L'oeil du cyclone - Théo Grosjean

Drawing: "L'oeil du cyclone" by Théo Grosjean.

Convert macros to functions

For 4 years, between Python 3.7 (2018) and Python 3.12 (2022), I made many changes on macros in the Python C API to make the API less error prone (avoid macro pitfalls) and better define the API …

Category: cpython Tags:

Debug a Python reference leak

 — 
Childhood memories in the countryside

This morning, I got this email from the buildbot-status mailing list:

The Buildbot has detected a new failure on builder PPC64LE Fedora Rawhide Refleaks 3.x while building Python.

I get many of buildbot failures per month (by email), but I like to debug reference leaks: they are more challenging …

Category: cpython Tags:

Python C API: Add functions to access PyObject

 — 
A spider in my bedroom

The PyObject structure prevents indirectly to optimize CPython. We will see why and how I prepared the C API to make this structure opaque. It took me 1 year and a half to add functions and to introduce incompatible C API changes (fear!).

In February 2020, I started by adding …

Category: cpython Tags:

C API changes between Python 3.5 to 3.10

 — 
Homer Simpson hiding

I'm trying to enhance and to fix the Python C API for 5 years. My first goal was to shrink the C API without breaking third party C extensions. I hid many private functions from the public functions: I moved them to the "internal C API". I also deprecated and …

Category: cpython Tags:

Creation of the pythoncapi_compat project

 — 
Strange Cat by Kéké

In 2020, I created a new pythoncapi_compat project to add Python 3.10 support to C extensions without losing support for old Python versions. It supports Python 2.7-3.10 and PyPy 2.7-3.7. The project is made of two parts:

  • pythoncapi_compat.h: Header file providing new C API …
Category: cpython Tags:

Make structures opaque in the Python C API

 — 
OVHcloud datacenter fire in Strasbourg

This article is about changes that I made, with the help other developers, in the Python C API in Python 3.8, 3.9 and 3.10 to avoid accessing structures members: prepare the C API to make structures opaque. These changes are related to my PEP 620 "Hide implementation …

Category: cpython Tags:

Isolate Python Subinterpreters

 — 
Christmas gift.

This article is about the work done in Python in 2019 and 2020 to better isolate subinterpreters. Static types are converted to heap types, extension modules are converted to use the new multiphase initialization API (PEP 489), caches, states, singletons and free lists are made per-interpreter, many bugs have been …

Category: cpython Tags:

© Victor Stinner 2016

Powered by Pelican