- Published on
PEP 779로 free-threaded 빌드는 3.14에서 실험 딱지를 뗐지만, 기본 빌드가 되는 Phase III 앞에는 인터프리터 성능 말고 하나가 더 있었습니다 — 배포입니다. free-threaded 빌드에서는 stable ABI(abi3)를 쓸 수 없어서, C 확장 저자들은 파이썬 버전 × 스레딩 모드마다 휠을 따로 찍어야 했습니다. PEP 803은 이 구멍을 abi3t라는 stable ABI 변종으로 메우고 3.15를 겨냥합니다 — 하나의 바이너리가 3.15 이상의 GIL 빌드와 free-threaded 빌드를 모두 섬깁니다. 대신 abi3t는 abi3보다 좁습니다: PyObject가 불투명해지고, PyObject_HEAD를 쓸 수 없고, PyModExport 훅으로 갈아타야 하고, 가변 크기 타입은 아예 포팅이 안 됩니다. 그리고 가장 중요한 오해 하나 — abi3t는 확장이 free-threaded 파이썬에서 로드되게 해 줄 뿐, 스레드 안전을 만들어 주지 않습니다. 이 글은 왜 하나의 .so가 두 빌드를 못 섬겼는지, abi3t가 정확히 무엇을 요구하는지, 그리고 Phase III가 아직 PEP조차 없는 이유를 정리합니다.