R09, writing a C extension properly, which is the last lesson in M8. That milestone now has all seventeen of its lessons written and merged, C01 through C08 and R01 through R09, and what remains in it is blueprints, one app and four animations.
This is the first lesson in the whole set that writes C rather than reading it. Four rules an extension owes the runtime, each one broken on purpose and then fixed in front of you.
The error path first. Two nearly identical C functions, both packing their argument into a tuple and hashing it, one of which drops the tuple on the way out through the failure and one of which does not. A thousand failing calls leave two thousand references behind in one and none in the other, and the process is perfectly happy either way.
Then the collector. One box type compiled three ways: no GC flag, the flag plus a tp_traverse that reports its type and forgets its field, and the flag plus a complete one. Only the third is ever freed out of a cycle. The one in the middle is registered with the collector, gets asked what it is holding, gives an incomplete answer, and leaks exactly as thoroughly as the one that was never registered at all.
Then teardown, where tp_clear breaks links for the collector and tp_finalize is where your cleanup goes, running exactly once whether the object died on its reference count or inside a cycle. Then the single line at the bottom of the file, Py_MOD_GIL_USED or Py_MOD_GIL_NOT_USED, which a free threaded build reads and acts on.
The last section is a leak test, because four rules that fail silently need one. It is CPython's -R flag with the interesting parts removed, about a dozen lines, and it catches both broken boxes and clears the correct one.
Two Tier 1 recordings, bringing the total to 45. CPython's own leak hunter on the debug build, over four small tests that all pass an ordinary run and two of which it fails. And on the free threaded build, one shared object from CPython's test suite loaded three ways, where one of the loads turns the lock back on for the whole process and says so.
Also six diagrams, three glossary terms, and sixteen citations into the pinned tree.
Eighty lessons now, 630 claims, 2575 citations, 242 glossary terms and 45 Tier 1 experiments.