TurboPython - Python 코드를 C++를 거쳐 네이티브 실행 파일로 컴파일하는 언어
요약
TurboPython은 Python 코드를 C++를 거쳐 네이티브 실행 파일로 컴파일하는 언어입니다. 이 과정에서 소유권 및 빌림 모델을 도입하여 메모리 안전성을 높이고, CPython 런타임 없이 독립적으로 작동합니다. 또한, 기존 프로젝트에 통합 가능한 확장 모듈 형태로도 배포가 가능하며, GIL 없는 OS 스레드와 같은 고급 기능을 지원합니다.
핵심 포인트
- Python 코드를 네이티브 실행 파일로 컴파일하여 성능 향상 및 의존성 제거
- 소유권(Ownership) 모델을 도입해 메모리 안전성을 확보하고 객체 수명 관리
- GIL 없이 OS 스레드, 원자적 연산 등 멀티스레딩 기능을 지원
- CPython 확장 모듈 형태로 빌드 가능하여 기존 프로젝트 통합 용이
- Python 문법으로
독립 실행 파일과 네이티브 라이브러리를 만들려는 개발자를 위한 정적 타입 언어와 컴파일러 - 타입을 지정한 코드를
C++로 변환한 뒤 컴파일하고, 생성된 프로그램은 CPython 런타임, 가비지 컬렉터, 자동 참조 카운팅 없이 실행
소유권과 빌림 모델로 객체의 수명을 관리하고, 소유자보다 오래 살아남는 참조를 컴파일 단계에서 검사.Own[T]
로 값의 소유권을 호출자나 컨테이너에 전달 가능
-
Python 리스트는 같은 객체의 참조를 담지만, TurboPython 리스트는 객체 자체를 보관함
-
리스트에 넣은 뒤에도 원래 객체를 사용하면
복사본을 저장하고, 더 이상 사용하지 않으면 객체를 리스트로 이동 -
함수 매개변수와 클래스 필드에 타입 명시가 필요하며, 지역 변수는 타입 추론 지원. 정수 리터럴은 기본적으로
int32
이고, 오버플로 발생 시 오류로 실행 중단
GIL 없는 OS 스레드와 잠금, 원자적 연산, 채널 지원. async/await
와 asyncio
는 일부 기능 제공
- 독립 실행 파일뿐 아니라
CPython 확장 모듈로 빌드 가능. 생성한 C++ 코드를 기존 프로젝트에 통합하거나@native
로 C/C++ 함수와 타입을 연결
- 일반적인 Python 편집기와 린터를 활용할 수 있으며, 코딩 에이전트용으로 Python과의 차이, 소유권 규칙, 설치 버전의 API 문서를 프로젝트에 생성하는 기능 제공
NumPy, requests 같은 기존 CPython 패키지는 직접 import 불가. 표준 라이브러리 일부와 전용tplib
을 제공하며, 의존성은 TurboPython으로 작성하거나 포팅해야 함
- Python 3.12 이상과 C++23 컴파일러 필요. Linux/macOS 지원, Windows는 WSL 권장. 컴파일러를 포함한 설치 옵션도 제공
초기 개발 단계로 Python 호환성과 메모리 안전성 검사가 아직 부분적임. 지원 범위는 호환성 문서에서 확인 가능
Apache 2.0 + LLVM 예외 조항 적용
댓글과 토론
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기