PyPy
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
PyPy는 동적 언어 구현을 위한 프레임워크로, 파이썬 프로그래밍 언어의 호환 가능하고 빠른 구현을 목표로 한다. RPython이라는 파이썬의 제한된 부분 집합으로 PyPy 인터프리터를 작성하여, JIT 컴파일러를 생성하는 기술을 사용한다. PyPy는 Python뿐만 아니라 다른 동적 프로그래밍 언어의 구현을 위한 툴킷으로도 사용될 수 있으며, Python 2.7과 3.10 버전을 지원한다. 2007년 공식 릴리스 1.0 버전을 발표했으며, 지속적인 개발을 통해 CPython과의 호환성을 개선해왔다. PyPy는 유럽 연합, 구글, 파이썬 소프트웨어 재단 등으로부터 자금 지원을 받아왔다.
더 읽어볼만한 페이지
- 파이썬 구현 - 사이썬
사이썬은 파이썬 문법에 C 언어의 정적 타입 선언을 추가하여 성능을 향상시키는 프로그래밍 언어이자 컴파일러로, 파이썬과 C/C++ 라이브러리 간 연동을 용이하게 하여 과학 컴퓨팅 라이브러리에서 활용된다. - 파이썬 구현 - 스택리스 파이썬
스택리스 파이썬은 파이썬 인터프리터 내에서 마이크로 스레드를 이용해 프로그램 실행을 관리하는 그린 스레드 형태로서, 이벤트 기반 비동기 프로그래밍의 대안으로 사용되며, CPython의 GIL로 병렬 처리는 불가하지만 greenlet을 통해 그린 스레딩 솔루션을 제공한다. - 파이썬 소프트웨어 - 패키지킷
패키지킷은 다양한 리눅스 배포판에서 패키지 설치, 업데이트 및 관리를 단순화하기 위해 서로 다른 패키지 관리 시스템을 통합하여 일관된 인터페이스를 제공하는 시스템이다. - 파이썬 소프트웨어 - Trac
Trac은 웹 기반 프로젝트 관리 및 버그 추적 시스템으로, 티켓 관리, 버전 관리, 위키 기능을 통합하고 Subversion, Git 등 다양한 버전 관리 시스템과 연동되며 플러그인으로 기능 확장이 가능하다. - 2007년 소프트웨어 - 윈도우 비스타
윈도우 비스타는 2007년 1월 30일에 출시된 마이크로소프트의 운영 체제이며, 윈도우 XP의 후속작으로 윈도우 에어로, 빠른 검색, 보안 강화 등을 특징으로 한다. - 2007년 소프트웨어 - 맥 OS X 레퍼드
맥 OS X 레퍼드는 2007년에 출시된 애플의 운영 체제로, Time Machine, Spaces 등의 주요 기능을 제공하며 사용자 인터페이스와 개발자 기술 측면에서 다양한 개선을 이루었다.
| PyPy - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
| 이름 | PyPy |
| 종류 | 파이썬 인터프리터 및 컴파일러 툴체인 |
| 개발 | |
| 프로그래밍 언어 | RPython |
| 릴리스 | |
| 첫 릴리스 | 2007년 중반 |
| 최신 릴리스 날짜 | }} |
| 플랫폼 및 라이선스 | |
| 운영 체제 | 크로스 플랫폼 |
| 라이선스 | MIT 라이선스 |
| 기타 | |
| 웹사이트 | PyPy 공식 웹사이트 |
2. 상세 및 프로젝트의 동기
PyPy는 동적 언어 구현을 위한 공통 번역 및 지원 프레임워크를 제공하며, 언어 명세와 구현 측면 간의 명확한 분리를 강조한다. 또한 소프트웨어 프레임워크를 사용하여 파이썬 프로그래밍 언어의 호환 가능하고 유연하며 빠른 구현을 제공하여, 낮은 수준의 세부 정보를 인코딩하지 않고도 새로운 고급 기능을 사용할 수 있도록 한다.
PyPy는 파이썬 처리기 상에서 동작 가능하며, 파이썬의 제한적인 구현인 RPython으로 구현되었다. 따라서 PyPy 내부 개선 영역 파악 및 개발자의 다양한 실험적 구현 시도가 용이하다.
PyPy는 파이썬뿐만 아니라 일반적인 동적 프로그래밍 언어 구현을 위한 툴킷 및 프레임워크로도 사용될 수 있다. 언어 사양 정의와 구체적이고 낮은 수준의 구현 분리가 가능하다. 파이썬 이외의 언어를 구현한 예로, PyPy로 구현된 Ruby 처리기인 Topaz가 있다.
PyPy의 목적 중 하나는 파이썬의 유연하고 빠른 구현을 만드는 것이다. 제공된 프레임워크를 사용하면 낮은 수준의 세부 사항을 고려하지 않고도 고도화된 기능을 구현할 수 있다.
2. 1. RPython
PyPy 인터프리터는 RPython (Restricted Python)이라는 파이썬의 제한된 부분 집합으로 작성되었다.[6] RPython은 변수의 유형이 컴파일 시간에 타입 추론될 수 있도록 파이썬 언어에 몇 가지 제약 조건을 둔다.[7] RPython은 픽시와 같은 비 Python 언어 구현을 작성하는 데에도 사용된다.[9]2. 2. JIT 컴파일러
PyPy는 트레이싱 실행 시 컴파일 (트레이싱 JIT)을 채용하고 있다. 특징적인 것은, 실행되는 코드에 JIT 컴파일을 적용하는 것이 아니라, 처리계의 코드를 JIT 컴파일로 특수화하는 것이다. 이 기법은 통상적인 JIT보다 성능이 더 좋다는 것이 실험으로 밝혀졌기 때문에 채용되었다. PyPy는 이 기법을 Meta-tracing JIT라고 부르고 있다.[8]3. 프로젝트 현황
PyPy는 버전 7.3.17 기준으로 CPython 2.7과 3.10 두 가지 버전을 지원한다.[10][11] CPython v3와 호환되는 최초의 PyPy 버전은 2014년에 나온 PyPy v2.3.1이다.[12] CPython v3와 호환되는 PyPy 인터프리터는 PyPy3라고도 부른다.
PyPy는 32비트/64비트 x86 및 32비트/64비트 ARM 프로세서에서 JIT 컴파일을 지원한다.[13] 윈도우, 리눅스, OpenBSD 및 Mac OS X에서 매일 밤 테스트를 거친다. PyPy는 구현 관련 기능을 사용하지 않는 순수 Python 소프트웨어를 실행할 수 있다.[14]
CPython C API 확장 기능을 위한 호환성 계층인 CPyExt가 있지만, 아직 불완전하고 실험적인 상태이다. C 공유 라이브러리와 인터페이스하는 선호되는 방법은 내장 C 외부 함수 인터페이스 (CFFI) 또는 ctypes 라이브러리를 사용하는 것이다.
4. 역사
PyPy는 Psyco 프로젝트의 후속작으로, 스코프를 갖춘 JIT 특수화 컴파일러를 갖는 것을 목표로 했다. 연구 개발 중심 프로젝트에서 시작하여, 2007년 중반에 성숙 단계에 도달하여 공식 1.0 버전을 출시했다. PyPy의 주요 연혁은 다음과 같다.
| 연도 | 내용 |
|---|---|
| 2008년 8월 | 파일론스(Pylons), 파이글렛(Pyglet), Nevow 및 장고(Django)와 같은 인기 있는 Python 라이브러리 실행 지원[18] |
| 2010년 3월 12일 | 속도에 초점을 맞춘 PyPy 1.2 출시. 안정적이지는 않지만 작동하는 JIT 컴파일러 포함[19] |
| 2011년 4월 30일 | PyPy 버전 1.5 출시, CPython 2.7과의 호환성 달성[20] |
| 2013년 5월 9일 | PyPy 2.0 출시, ARMv6 및 ARMv7 JIT에서 알파 품질의 JIT 컴파일 지원 도입, CFFI를 표준 라이브러리에 포함[21][22] |
| 2014년 6월 20일 | PyPy3 안정 버전 선언, Python 3 호환성 도입. PyPy 2.3.1과 함께 출시[12] |
| 2017년 3월 21일 | PyPy와 PyPy3의 버전 5.7 출시, PyPy3는 Python 3.5에 대한 베타 품질 지원 도입[23] |
| 2018년 4월 26일 | 버전 6.0 출시, Python 2.7 및 3.5 지원 (Windows에서는 여전히 베타 품질)[24] |
| 2019년 2월 11일 | 버전 7.0 출시, Python 2.7 및 3.5 지원[25] |
| 2019년 10월 14일 | 버전 7.2 출시, Python 3.6.9 지원[26] |
| 2019년 12월 24일 | 버전 7.3 출시, Python 3.6.9 지원[27] |
| 2020년 2월 16일 | 소스 코드 호스팅을 Bitbucket에서 heptapod.net으로 이전, CFFI 프로젝트 저장소 이전 발표. 새로운 로고와 웹사이트 디자인 공개 (새로운 로고의 저작자와 라이선스는 미상)[28] |
| 2023년 12월 29일 | 호스팅이 GitHub로 이전, 개발은 이제 git으로 추적[29] |
4. 1. 자금 지원
PyPy는 2004년 12월부터 2007년 3월까지 유럽 연합의 특정 목표 연구 프로젝트[30]로 자금 지원을 받았다. 2008년 6월, 구글 오픈 소스 프로그램의 일환으로 PyPy에 자금 지원을 발표했으며 CPython과의 호환성을 높이는 데 주력하기로 합의했다. 2009년, 중소기업[31]에 특화된 유럽 연합 자금 지원 기관인 Eurostars는 "PYJIT - PyPy 기반의 동적 프로그래밍 언어를 위한 빠르고 유연한 툴킷"이라는 PyPy 프로젝트 멤버들의 제안을 수락했다. Eurostars의 자금 지원은 2011년 8월까지 지속되었다.[32]PyCon US 2011에서 파이썬 소프트웨어 재단은 PyPy가 언어의 최신 버전과의 성능 및 호환성 작업을 계속할 수 있도록 10000USD의 보조금을 지급했다.[33]
ARM 아키텍처로의 포팅은 라즈베리 파이 재단의 부분적인 지원을 받았다.[21]
PyPy 프로젝트는 또한 상태 블로그 페이지를 통해 기부를 받는다.[34] 2013년 현재, 파이썬 3 버전 호환성, 수치 계산을 위한 내장 최적화 NumPy 지원 및 더 나은 병렬 처리를 가능하게 하는 소프트웨어 트랜잭션 메모리 지원 등 다양한 하위 프로젝트에 자금이 지원되었다.[21]
참조
[1]
웹사이트
Interview Maciej Fijalkowski PyPy
https://decisionstat[...]
2015-11-29
[2]
웹사이트
PyPy Speed
https://speed.pypy.o[...]
2019-12-01
[3]
웹사이트
PEP 634 -- Structural Pattern Matching: Specification
https://www.python.o[...]
2021-02-15
[4]
웹사이트
PyPy – Goals and Architecture Overview
http://codespeak.net[...]
2007-03
[5]
웹사이트
PyPy – Goals and Architecture Overview – Mission Statement
http://doc.pypy.org/[...]
2013-10-11
[6]
문서
Our runtime interpreter is “RPython”
https://doc.pypy.org[...]
[7]
문서
It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation
2007
[8]
conference
Tracing the Meta-Level: PyPy's Tracing JIT Compiler
[9]
문서
Timothy Balridge interview
https://medium.com/t[...]
[10]
웹사이트
PyPy – Python compatibility
http://pypy.org/comp[...]
2019-12-28
[11]
웹사이트
PyPy v7.3.7: bug-fix release of 3.7, 3.8
https://www.pypy.org[...]
2021-10-25
[12]
뉴스
PyPy3 2.3.1 – Fulcrum
http://morepypy.blog[...]
PyPy blog
2014-06-20
[13]
뉴스
PyPy v7.2.0: release of 2.7, and 3.6
https://pypy.readthe[...]
pypy.org
2019-10-16
[14]
웹사이트
PyPy – Python compatibility
http://pypy.org/comp[...]
2019-12-28
[15]
웹사이트
Running pylons on top of PyPy
http://morepypy.blog[...]
2008-06-10
[16]
웹사이트
Running Pyglet on top of PyPy
http://morepypy.blog[...]
2008-02-20
[17]
웹사이트
Running Nevow on top of PyPy
http://morepypy.blog[...]
2008-06-20
[18]
웹사이트
PyPy runs unmodified django 1.0 beta
http://morepypy.blog[...]
2008-08-19
[19]
웹사이트
Introducing the PyPy 1.2 release
https://morepypy.blo[...]
2011-04-30
[20]
웹사이트
PyPy 1.5 Released: Catching Up
https://morepypy.blo[...]
2010-03-12
[21]
뉴스
A look at the PyPy 2.0 release
https://lwn.net/Arti[...]
LWN.net
2013-05-15
[22]
웹사이트
PyPy 2.0 – Einstein Sandwich
https://morepypy.blo[...]
2013-05-09
[23]
웹사이트
PyPy2.7 and PyPy3.5 v5.7 – two in one release
https://morepypy.blo[...]
2017-03-21
[24]
웹사이트
PyPy2.7 and PyPy3.5 v6.0 dual release
https://morepypy.blo[...]
2018-04-26
[25]
웹사이트
PyPy Status Blog: PyPy v7.0.0: triple release of 2.7, 3.5 and 3.6-alpha
https://morepypy.blo[...]
2020-08-17
[26]
웹사이트
PyPy Status Blog: PyPy v7.2 released
https://morepypy.blo[...]
2020-08-17
[27]
웹사이트
PyPy Status Blog: PyPy v7.3.0 released
https://morepypy.blo[...]
2019-12-24
[28]
웹사이트
PyPy and CFFI have moved to Heptapod
https://www.pypy.org[...]
2020-02-16
[29]
웹사이트
PyPy has moved to Git, GitHub
https://www.pypy.org[...]
2023-12-29
[30]
웹사이트
EU Community Research and Development Information Service Entry
http://cordis.europa[...]
[31]
웹사이트
Eurostars – Aim Higher
http://www.eurostars[...]
[32]
웹사이트
Project Page on Eureka Network
http://www.eurekanet[...]
2011-10-17
[33]
웹사이트
A thank you to the PSF
http://morepypy.blog[...]
2011-03-22
[34]
웹사이트
PyPy Status Blog: Oh, and btw: PyPy gets funding through "Eurostars"
http://morepypy.blog[...]
2010-12-10
[35]
웹사이트
PyPy 2.1 - Considered ARMful
https://morepypy.blo[...]
2013-08-04
[36]
웹사이트
PyPy 2.2 - Incrementalism
https://morepypy.blo[...]
2013-11-14
[37]
웹사이트
PyPy 2.3 - Terrestrial Arthropod Trap
https://morepypy.blo[...]
2014-05-09
[38]
웹사이트
PyPy v7.2 released
https://morepypy.blo[...]
2019-12-14
[39]
웹사이트
CPython 2.6.2의 성능을 기준으로 비교한 PyPy 1.4 벤치마크
http://speed.pypy.or[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com