쓰레드 자유 시대 선언—Python Steering Council 결정

8 hours ago 1

나동희님의 노력으로 프리-스레딩이 이제 실험태그를 벗어나 공식 지원 됩니다.


Python Steering Council(SC)은 PEP 779를 승인하여 Python 3.14의 프리-스레딩(free-threaded) 빌드에서 “experimental” 태그를 제거하기로 했습니다. 이 결정은 Phase II 동안 다음 과제를 충족해야 한다는 조건과 함께 내려졌습니다.

  1. C API/ABI 호환성 및 Stable C API 마련

    • 기존 API/ABI 호환을 깨는 변경은 반드시 C API 워킹그룹과 사전 합의해야 함
    • Python 3.15까지 프리-스레딩 전용 Stable C API 정의·제공
  2. 새 실험적 프로젝트 기준

    • CPython 내부의 신규 실험 프로젝트는 프리-스레딩 빌드와 호환되고 이를 기반으로 개발
    • GIL·프리-스레딩 병행 유지에 따른 복잡성 최소화
  3. 성능·메모리 가드레일

    • 목표: GIL 빌드 대비 성능 저하 10 % 이내
    • 최대 15 % 저하 / 15 % 메모리 증가까지는 SC 사전 합의 필요(메모리 상한 20 %)
  4. 문서화 요구 사항

    • Python 사용자: 표준 라이브러리 API 보장 및 변화 명확화
    • Python·C API 개발자: 시그널·스레드 안전성 등 동시성 보장 문서화
    • CPython 개발자: 구현 시 고려 사항 문서화
    • 모든 자료를 모은 공식 ‘프리-스레딩 랜딩 페이지’ 제공
  5. 고수준 동시성 프리미티브 준비

    • concurrent 패키지를 중심으로, 사용자가 내부 구현을 몰라도 활용 가능한 고수준 동시성 도구 제안·검토
  6. 벤치마크 요건

    • 성능·메모리·정확성 주장을 pyperformance 기반 반복 가능한 테스트로 검증
    • 실제 워크로드를 반영한 추가 벤치마크 기여 장려

SC는 프로젝트의 진척 상황에 확신을 표하며, Python 커뮤니티가 프리-스레딩 빌드를 정식 지원 옵션으로 적극 홍보하기를 권장합니다. 3.14 beta 3에서 “experimental” 태그가 공식적으로 제거될 예정이며, Phase III(프리-스레딩을 기본 또는 유일한 빌드로 전환) 여부는 추후 논의됩니다.

Read Entire Article