GN⁺: Python 3.12 릴리즈
(python.org)- 더 유연한 f-string 파싱 (PEP 701)
- Python 코드에서 버퍼 프로토콜 지원 (PEP 688)
- 새로운 디버깅/프로파일링 API (PEP 669)
- Per-Interpreter GIL 지원으로 각 Sub-interpreter 당 별도의 GIL이 생성됨 (PEP 684)
- 오류 메시지가 개선되었으며, 오타로 인해 발생할 수 있는 더 많은 예외가 사용자에게 제안됨
- Linux perf 프로파일러를 지원하여 Trace에서 Python 함수 이름이 포함됨
- 크고 작은 성능 개선으로 전체적으로 5%의 성능 향상
- 일반 클래스를 위한 새로운 타입 주석 구문 (PEP 695)과 메소드를 위한 새로운 오버라이드 데코레이터 (PEP 698)가 도입
- 유니코드 객체의 C 구현에 대한 wstr 및 wstr_length 멤버, unittest 모듈의 특정 메소드와 클래스, smtpd 및 distutils 모듈과 같은 사용 중단된 기능이 제거됨
- 문자열에서 잘못된 백슬래시 이스케이프 시퀀스는 이제 DeprecationWarning 대신 SyntaxWarning으로 경고함
- 성능 향상을 위한 준비로 정수의 내부 표현이 변경됨
Hacker News 의견
- Python 3.12, kwargs 유형 선언을 위한 새로운 문법 도입, 라이브러리에 필요한 데이터 이해도 향상
- 새 버전에는 iterable을 청크로 분할하는
itertools.batched
포함, 환영받는 추가 기능 - Python 3.12, 프로파일러, 디버거 및 기타 도구가 CPython 이벤트를 모니터링하기 위한 새로운 API 도입, 거의 제로 오버헤드 디버거 및 커버리지 도구 지원 가능
- Python 3.12의 새로운 기능, 더 유연한 f-string 파싱, Python 코드에서 버퍼 프로토콜 지원, 새로운 디버깅/프로파일링 API, 별도의 Global Interpreter Locks를 가진 고립된 서브 인터프리터 지원 포함
- 업데이트는 오류 메시지 개선, Linux perf 프로파일러가 추적에서 Python 함수 이름을 보고하는 지원, 많은 크고 작은 성능 향상도 가져옴
- 제네릭 클래스를 위한 새로운 타입 주석 문법과 메소드를 위한 새로운 오버라이드 데코레이터도 업데이트의 일부
- 사용 중단된 기능 제거,
smtpd
및distutils
모듈 포함, 성능 향상을 위한 준비로 정수의 내부 표현 변경 - 사용자들은 오류 메시지 개선에 대한 감사를 표현하고, 디버깅을 더 쉽게하기 위한 실제 리치 텍스트 도입을 원함
- 별도의 Global Interpreter Locks를 가진 고립된 서브 인터프리터 지원은 어떤 형태의 동시성 제공을 위한 중요한 단계로 간주됨
- Python 3.12, 계산 집약적인 작업에서 눈에 띄는 성능 향상을 보여줌
- 사용자들은 CPython 이벤트 모니터링을 위한 새로운 API인 PEP 669를 최적으로 활용하는 방법에 관심이 있음