Robonaissance

Robonaissance

Written in Python, Part 6: The Ceiling

The engineer who made Python the default language of machine learning later moved to remove its most famous limitation. The syntax survives. The semantics underneath do not.

Hugo's avatar
Hugo
Aug 02, 2026
∙ Paid

A series on how one language shaped artificial intelligence, and how intelligence is now reshaping it.


The Man Who Went After the Lock

In 2016, when the team that would build PyTorch was four people, Sam Gross was between projects and joined full time. Part 4 of this series covered what that team did and why it won. The short version is that they made a framework behave like the language it was written in, and the field moved.

Seven years later Gross, by then at Meta, authored PEP 703, titled Making the Global Interpreter Lock Optional in CPython.

The Global Interpreter Lock is the most discussed limitation in the language’s history. It is a mutex that permits only one thread to execute Python bytecode at a time, which means that threaded, CPU-bound Python does not get faster when you add cores. Thirty years of workarounds exist because of it. Every article explaining why Python threading disappoints ends up at the same paragraph.

Removing it had been attempted before and had not worked, for a reason that is easy to state and hard to solve. CPython manages memory by counting references to each object, and if two threads can touch an object at once, those counts must be made safe, and making them safe with atomic operations slows down the single-threaded case that almost everyone is actually running. The lock was not an oversight. It was what paid for the performance of the common case.

Gross’s design accepted that trade rather than pretending it away. Atomic reference counting where necessary, per-object locks for the mutable containers, and biased reference counting as the optimization that saves the common case, in which each object has an owner thread that can use the cheaper non-atomic path. The Steering Council announced its intent to accept in July 2023 and formally accepted on 24 October 2023.

So the sequence reads: help build the framework that made Python the substrate for machine learning, then go after the constraint that substrate had been living with. That is not a coincidence and it is not irony. It is what happens when the people who built the top of the stack stay long enough to hit the bottom of it.

What they found there, and what the industry has been doing since, is the subject here. The short answer is that Python is being hollowed out from the inside, deliberately, by the people who depend on it most, and that the hollowing has a consistent shape: the syntax is preserved and the semantics underneath are replaced.

User's avatar

Continue reading this post for free, courtesy of Hugo.

Or purchase a paid subscription.
© 2026 Robonaissance · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture