3min

Python zal de komende jaren GIL geleidelijk aan uit de programmeertaal verwijderen. Dat is een belangrijke ontwikkeling om Python relevant te houden voor de ontwikkeling van AI-modellen. De transitieperiode duurt langer dan vijf jaar, maar is een bewuste keuze van de Python Steering Council omdat bij de laatste grote verandering compatibiliteitsproblemen grote vertragingen veroorzaakten.

The Global Interpreter Lock (GIL) zit al sinds 1992 ingebakken in de programmeertaal Python. De programmeertaal zelf bestond op dat moment één jaar.

Ondanks het lange bestaan van GIL, is de Python-gemeenschap vol vreugde dat GIL zal verdwijnen. De functie is in feite verouderd omdat multi-core CPU’s al langere tijd voor het grote publiek beschikbaar zijn. De druk wordt nu verhoogd doordat GIL een rem zet op AI-ontwikkeling.

Van noodzakelijk naar obstakel

In 1992 bewees GIL zich nochtans noodzakelijk voor Python. Destijds waren multi-core CPU’s nog een schaars iets. Multi-threading kon daardoor niet standaard door toestellen worden uitgevoerd. GIL zorgde ervoor dat er slechts één thread tegelijk verwerkt werd door de Python-interpreter.

De komst van multi-core CPU’s zette druk op de functie. De druk werd echter nooit hoog genoeg om GIL volledig uit Python te verwijderen. Veel programma’s draaiden namelijk niet op meerdere CPU’s en werkten door GIL veel sneller. Bovendien vereenvoudigde de functie het beveiligingsverhaal bij de ontwikkeling. Andere programmeertalen haalden de scherpe randen wel al van GIL af. Zo ontstond een techniek van ‘fine-grained locking’.

In januari werd GIL opnieuw het onderwerp van gesprek in de Python-gemeenschap. Sam Gross, een research engineer bij Meta, deed toen het voorstel om GIL optioneel te maken voor ontwikkelaars in CPython met PEP 703. Met het oog op AI-ontwikkeling vormt GIL een obstakel. AI-modellen werken namelijk sneller door verschillende CPU-cores tegelijk aan te spreken.

Proces van vijf jaar

De Python Steering Council polste al naar de houding van ontwikkelaars tegenover GIL in een poll. In de gemeenschap bleek er een duidelijke meerderheid voorstander te zijn van het idee om Python free-threaded te maken. 87 procent stemde in met het idee.

De raad gaat nu akkoord met het voorstel uit PEP 703. Het zal alleen nog meer dan vijf jaar duren voordat GIL effectief uit Python verdwenen is. In een eerste stap zal Python zonder GIL enkel als experiment worden uitgegeven. Als de gemeenschap de ervaring heeft kunnen uittesten, wordt het mogelijk GIL uit te schakelen in CPython, maar staat het standaard nog wel aan. Deze situatie wil de raad voor minstens twee jaar evalueren. De effectieve verwijdering van GIL volgt dan na ‘waarschijnlijk 5+ jaren’.

De tussenperiode waarin zowel een CPython met GIL als zonder bestaat, belooft voor ontwikkelaars een vervelende periode te worden. Ontwikkelaars moeten hun code dan namelijk dubbel testen. De situatie zal met andere woorden eerst slechter moeten worden, voordat het kan verbeteren.

‘Nieuwe Python 3 situatie vermijden’

De keuze om de transitieperiode over meer dan vijf jaar te verspreiden, werd echter bewust gemaakt. De overgang van Python 2 naar Python 3 liep namelijk enorme vertragingen op toen bleek dat veel Python 3 niet backwards compatibel is met Python 2.

“We willen van gedachten kunnen veranderen als blijkt, op elk moment voordat we no-GIL de standaard maken, dat het gewoon te storend zal zijn voor te weinig voordeel. Een dergelijke beslissing zou kunnen betekenen dat al het werk moet worden teruggedraaid”, schreef de raad. Later werd aan de blog nog het volgende toegevoegd: “We willen PEP 703 kunnen stopzetten en willen een andere oplossing vinden als het problematisch lijkt te worden.”

Python is volgens de TIOBE-index de populairste programmeertaal onder ontwikkelaars op het moment. De overgang naar een Python zonder GIL komt er eigenlijk net op tijd nu meer ontwikkelaars zich beginnen te richten op AI-ontwikkeling. De programmeertaal kan zijn populariteit wel eens snel verliezen als een no-GIL-toekomst wordt geblokkeerd.

Tip: Hugging Face, GitHub en andere strijden voor bescherming open-source in AI Act