[이 글은 이전에 쓰던 블로그에서 작성된 이후 새 블로그로 이전된 글입니다.]

pypy

PyPy을 한 마디로 표현하자면 Python으로 Python을 만드는 프로젝트이다.

이 부분만 들었을 때는 뭘 하는 프로젝트인지 잘 느껴지지 않겠지만, 기존의 CPython에 비해 전혀 느리지 않을 뿐더러, 심지어 몇 배나 빠르다(!)

게다가 점점 빨라지고 있다.

PyPy의 동작 원리는 다음과 같다.

  1. Python에서 문법을 엄격하게 만들어 컴파일이 가능하도록 만든 파이썬 해석기 RPython(translater.py)를 파이썬 코드로 작성한다.
  2. 파이썬 구현(런타임)을 RPython 문법으로 작성한다.
  3. 2에서 만든 Python 문법을 1로 컴파일한다.
  4. 결과로 나온 Python 구현으로 1부터 다시 반복한다.

또 여기서 하나가 더 들어가게 되는데,

PyPy는 JIT 컴파일러인데, 그냥 JIT 컴파일러가 아니라 meta tracing JIT라고 해서 JIT이 필요한 부분에 약간의 코드 힌트를 넣으면 RPytho 컴파일러가 알아서 JIT 컴파일이 되는 언어 구현을 만들어준다.

PyPy 개발팀의 호환성 기준은 굉장히(!) 간단한데, CPython에서 되던게 PyPy에 안 되면 버그다.

굉장히 재밌는 프로젝트인 것 같다.