La settimana scorsa Salt Lake City (Utah) è stata il palcoscenico della prima conferenza ufficiale "in presenza" dedicata al linguaggio Python dal 2019, nel corso dell'appuntamento i responsabili del progetto hanno parlato in particolare di CPython e della sua evoluzione.
CPython: interprete e compilatore
Scritto i C, CPython è l'interprete standard di Python che funge anche da compilatore in quanto esso ha il compito di compilare il codice Python in bytecode prima della fase di interpretazione vera e propria.
La sua prossima versione dovrebbe essere rilasciata entro ottobre 2022 e da questo aggiornamento gli sviluppatori si attendono in particolare prestazioni più elevate e l'integrazione del supporto per l'esecuzione nel contesto dei browser Web.
Se tali aspettative dovessero essere soddisfatte la platea di utilizzatori dell'interprete potrebbe ampliarsi, di esso esistono infatti diverse alternative come per esempio quelle dedicate alle JVM (Java Virtual Machine) e al CLR (Common Language Runtime), la macchina virtuale per la piattaforma .NET di Microsoft.
Nonostante CPython rappresenta appunto un standard per la community, o meglio viene proposto come tale, le soluzioni sostitutive citate in precedenza vengono spesso preferite per via alcuni limiti insiti in esso come per esempio il GIL (Global Interpreter Lock).
Il problema del GIL
Il blocco dell'interprete globale è in sostanza un meccanismo nato per sincronizzare l'esecuzione di thread che impedisce al linguaggio di esprimere appieno le proprie potenzialità in presenza di processori multicore.
In pratica un unico processo può prevedere l'attività di più interpreti ma dato che il GIL è sempre uno solo ed essi devono condividerlo, in questo modo non potranno che generarsi delle interferenze. Apparentemente l'unica soluzione possibile sembrerebbe essere quella di dotare ciascun interprete di un GIL.
In alternativa invece GIL potrebbe essere semplicemente eliminato, da qui il progetto nogil (Python Multithreading without GIL) che per il momento è soltanto un'implementazione proof-of-concept.
Dello sviluppo di nogil si sta occupando Sam Gross, Senior Director of Engineering presso Meta, l'azienda di Mark Zuckerberg utilizza infatti Python per Instagram e sfrutta una versione di CPython chiamata Cinder.
Cinder è però un progetto interno non concepito per l'uso su larga scala, grazie a nogil la platea di utilizzatori dovrebbe quindi diventare più ampia.