As we approach the final release date for Python 3.13, I’ve seen an uptick in discussion regarding 3.13’s introduction of an optional GIL. While removing the GIL has been a long time coming for the average user (I’ve dreamt of this for nearly 20 years), there have actually been two concurrent efforts to improve Python’s performance for multithreading. The first is the optional GIL, specified in PEP 703, and second is the introduction of a per-interpreter GIL, specified in PEP 684 and introduced in Python 3.