파이썬 재단의 공식 문서에 따르면, 파이썬 3.14 버전에는 ‘꼬리 호출(tail calls) 기반의 새로운 인터프리터’가 탑재된다. 사실 이 문구는 파이썬 개발 과정을 잘 모르는 사람들에게는 다소 오해를 불러일으킬 수 있는 표현이다. 여기서 말하는 ‘꼬리 호출’은 CPython 또는 파이썬 언어 자체가 꼬리 호출 최적화를 지원한다는 의미가 아니다. 그보다는 C 컴파일러가 CPython 코드에서 수행하는 최적화 기법으로, 인터프리터가 바이트코드를 실행하는 과정을 최적화해 전체 실행 속도를 높인다.
기존 파이썬 코드나 CPython용 C 확장 모듈은 변경이나 재컴파일이 필요 없다. CPython API나 ABI에 변화가 없기 때문이다. 또한 새로운 인터프리터는 기존 코드를 주로 재활용해 구현되어 CPython의 유지보수 부담도 크게 늘리지 않는다.
사전 빌드된 CPython 바이너리 사용자는 파이썬 3.14로 업그레이드하면서 새로운 인터프리터를 자동으로 받게 된다. 하지만 소스에서 CPython을 빌드하는 경우에는 이 기능을 사용하기 위해 특정 컴파일 플래그(–with-tail-call-interp)가 필요하다.
주목할 만한 점은 이 새로운 인터프리터를 사용하려면 꼬리 호출 최적화를 지원하는 C 컴파일러가 필요하다는 것이다. 모든 C 컴파일러가 꼬리 호출 최적화를 지원하는 것은 아니지만, 현재 MSVC와 Clang 19 이상(x86-64 및 AArch64 아키텍처)에서 컴파일이 가능하다. 향후 GCC에서도 지원될 것으로 예상된다.
파이썬은 러스트나 C/C++ 같은 기계어 수준으로 컴파일되는 언어보다 속도가 느린 편이다. 파이썬의 동작 방식 때문에 속도 최적화가 어렵기 때문이다. 그러나 이러한 한계를 극복하기 위한 최적화 작업은 꾸준히 진행되어 왔다. 대부분의 최적화는 CPython 인터프리터가 불필요한 작업을 줄이는 방식으로 이루어지고 있다. 예를 들어, 특수한 옵코드(opcode)를 사용하거나 JIT(Just-In-Time) 컴파일과 같은 기법이 적용된다.
그동안의 최적화 노력들은 대부분 제한적인 성능 향상만을 가져왔다. 그러나 많은 개선이 누적되어 효과를 내며, 꼬리 호출 최적화와 같은 일부 최적화는 전반적으로 큰 성능 향상을 가져올 수 있다.
CPython 최적화의 공통된 목표는 사용자에게 별다른 부담을 주지 않으면서 성능을 높이는 것이다. 파이썬의 광범위한 사용자층과 방대한 라이브러리 생태계를 고려할 때, 기존 코드와의 호환성을 유지하면서 성능을 개선하는 것이 가장 효과적인 접근 방식이다.
새로운 인터프리터를 테스트할 수 있는 파이썬 3.14의 첫 번째 베타 버전은 2025년 5월 출시될 예정이다. 중간 알파 버전에도 새로운 인터프리터가 포함될 예정이다.
[email protected]
Read More from This Article: C언어와 속도 격차 좁힌다··· 파이썬 새 버전, 인터프리터 개선해 30% 성능↑
Source: News