After we talked about memory allocation in Python back in Episode 16, we're ready to complain, uh, explain reference counting. Or at least throw a bunch of reference counting facts at you. Plus a big assortment of recent Python changes. You ready?
## Timestamps
(00:00:00) INTRO
(00:04:17) PART 0: SPORTS NEWS
(00:06:53) PART 1: REFERENCE COUNTING
(00:08:28) New segment of 2025
(00:13:54) C++ is asymptotic Python
(00:15:37) Is Rust game yet?
(00:18:01) Names
(00:20:25) Breaking the law
(00:23:08) sys.getrefcount()
(00:25:21) Pedantic Pablo
(00:26:06) sys.gettotalrefcount()
(00:31:24) TraceRefs
(00:33:28) Advantages of refcounting
(00:36:16) Disadvantages of refcounting
(00:38:40) Reference cycles
(00:40:39) Multithreading
(00:41:25) When refcounting goes wrong
(00:44:05) Freeing memory in Python doesn't return it to the OS
(00:45:42) Leaks and cycles redux
(00:50:29) Double free
(00:53:05) Avoiding reference counting
(00:54:59) Immortal objects
(01:00:40) PART 2: WHAT'S GOING ON IN CPYTHON
(01:02:43) New features
(01:04:11) Assorted interesting changes
(01:15:23) Performance
(01:18:09) Free-threading changes galore
(01:27:02) AsyncIO
(01:34:25) Windows changes
(01:36:45) Security
(01:37:20) OUTRO