1. CPython 살펴보기#
앞으로 저희는 CPython에 대해 아래 내용을 다루게 됩니다 🚀
CPython 소스 코드 읽고 탐색 / 컴파일하기
Python 문법 수정하고 컴파일해서 자신만의 CPython 버전 만들기
list, dictionary, generator 등의 내부 작동 방식 이해하기
CPython 메모리 관리 기능 이해하기
병렬성과 동시성을 통해 Python 코드 확장하기
코어 타입에 새로운 기능 추가하기
테스트 스위트 실행하기
Python 코드와 런타임 성능을 프로파일하고 벤치마크하기
C 코드와 Python 코드를 전문가처럼 디버깅하기
CPython 라이브러리의 구성 요소를 수정하거나 개선해서 향후 CPython에 기여하기
1.1 CPython이란?#
Python 구현체 중 하나로, 일반적으로 이용하는 python.org 에서 제공하는 공식 파이썬 구현체입니다.
이름에서 알 수 있듯이, CPython은 C로 구현되어 있습니다.
다른 python 구현체
Jython
Java로 작성된 파이썬 구현체
JVM(Java Virtual Machine)에서 실행
IronPython
C#로 작성된 파이썬 구현체
.NET 프레임워크 사용
PyPy
Python 정적 타입으로 작성된 파이썬 구현체
(정적 타입: 실행하기 전에 변수의 type을 미리 결정하고, 그 이후에는 type을 변경하지 않는 방식)JIT(Just-In-Time: 프로그램을 실행하는 동안 실시간으로 기계어로 변환) 컴파일러 방식으로 구현되어 기존 interpreter 방식보다 빠르고 효율적
1.2 CPython 배포판 구성 요소#
언어 사양(Language Specification): 파이썬 언어의 문법, 구문, 의미론
ex)
[]
: 인덱싱, 슬라이싱, 빈 리스트 생성을 위해 사용
컴파일러(Interpreter): C 언어로 작성된 컴파일러
파이썬 소스 코드 → 실행 가능한 기계어로 변환하는 역할
표준 라이브러리 모듈(Standard Library Modules): 기본적으로 포함되어 있는 패키지
ex) 파일 입출력, 네트워킹, 문자열 처리, 데이터 구조, GUI 프로그래밍 등
코어 타입(Core Types): 내장 데이터 type
ex) 숫자, 문자열, list, tuple, dictionary
테스트 스위트(Test Suite): 개발 및 유지 보수에 사용되는 테스트 모음
ex) 유닛 테스트, 통합 테스트, 성능 테스트
1.3 소스 코드 들여다보기#
소스 코드 다운로드 (3.9 버전을 기준으로 살펴볼 예정입니다.)
git clone --branch 3.9 https://github.com/python/cpython
소스 코드 구성
cpython ├── CODE_OF_CONDUCT.md ├── Doc # 문서 소스 파일 ├── Grammar # 컴퓨터가 읽을 수 있는 언어 정의 ├── Include # C 헤더 파일 ├── LICENSE ├── Lib # 파이썬으로 작성된 표준 라이브러리 모듈 ├── Mac # macOS를 위한 파일 ├── Makefile.pre.in ├── Misc # 기타 파일 ├── Modules # C로 작성된 표준 라이브러리 모듈 ├── Objects # 코어 타입과 객체 모델 ├── PC # 이전 버전의 윈도우를 위한 윈도우 빌드 지원 파일 ├── PCbuild # 윈도우 빌드 지원 파일 ├── Parser # 파이썬 파서 소스 코드 ├── Programs # python 실행 파일과 기타 바이너리를 위한 소스 코드 ├── Python # CPython 인터프리터 소스 코드 ├── README.rst ├── Tools # CPython 빌드하거나 확장하는 데 유용한 독립 실행형 도구 ├── aclocal.m4 ├── config.guess ├── config.sub ├── configure ├── configure.ac ├── install-sh ├── pyconfig.h.in └── setup.py