Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 3003 – Python 언어 모라토리엄

Author:
Brett Cannon, Jesse Noller, Guido van Rossum
Status:
Final
Type:
Process
Created:
21-Oct-2009
Post-History:
03-Nov-2009

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 Python 3.1 출시 시점부터 최소 2년 동안 Python 언어의 문법, 의미론, 내장 기능에 대한 모든 변경을 일시적으로 중단하는 모라토리엄(유예)을 제안합니다. 구체적으로 이 모라토리엄은 Python 3.2(3.1 출시 후 18~24개월 뒤 출시 예정)까지 적용됩니다. Python 3.3(너무 이르게 출시되지 않는다고 가정할 때)부터는 다시 언어 변경을 포함할 수 있습니다.

이렇게 기능 추가를 중단하는 목적은 CPython이 아닌 구현들이 언어의 핵심 구현을 “따라잡을” 수 있도록 하고, Python 3.x의 도입을 수월하게 하며, 커뮤니티에 더 안정적인 기반을 제공하는 것입니다.

근거

이 아이디어는 Guido van Rossum이 python-ideas [1] 메일링 리스트에서 제안했습니다. 그의 이메일은 Python 핵심 문법, 내장 기능, 의미론의 변경 속도를 늦추어 CPython이 아닌 구현들이 2.x와 3.x 모두에서 Python의 현재 상태를 따라잡을 수 있게 하자는 것을 전제로 했습니다.

언어로서의 Python은 핵심 구현인 CPython에 그치지 않습니다. Jython [2], IronPython [3], PyPy [4] 같은 구현들이 풍부하고 성숙하며 활기찬 커뮤니티를 이루고 있으며, 이들은 커뮤니티뿐 아니라 언어 자체에도 이익이 됩니다.

또 다른 프로젝트들, 예를 들어 Unladen Swallow [5] (CPython의 한 브랜치)는 대안 구현을 만드는 것이 아니라 CPython 자체의 성능과 구현을 개선하는 것을 목표로 합니다.

지난 몇 년간 Python 개발에서 Python 3.x가 차지한 비중은 컸습니다. Python 3.x의 출시와 더불어 3.x 및 이전 2.6.x 릴리스에서 도입된 수많은 언어 변경 때문에 대안 구현들은 핵심 Python 개발과 “보조를 맞추는” 데 있어 심각하게 불리한 처지에 놓였습니다.

또한 CPython으로 구현된 최근 언어 릴리스에 들어간 변경 사항 중 상당수는 아직 일반 사용자층에서 널리 사용되지 않고 있습니다. 예를 들어 대부분의 사용자는 운영 체제에 미리 설치되어 제공되는 버전의 인터프리터(일반적으로 CPython)만 사용할 수 있습니다. 대부분의 OS 공급업체는 이제 겨우 Python 2.6을 탑재하기 시작했으며, Python 3.x를 탑재하는 곳은 그보다도 훨씬 적습니다.

Python 2.7이 사실상 Python 2.x 코드 라인의 “수명 종료” 버전이 되고 Python 3.x가 미래가 될 것으로 예상됩니다. 따라서 이러한 모든 외부 주체가 따라잡을 수 있게 하고 Python 3.x의 도입과 Python 3.x로의 이전을 돕기 위해 언어 자체의 변경을 일시적으로 중단하는 것이 Python 핵심 개발에 가장 이롭습니다.

마지막으로, 이 모라토리엄은 핵심 개발의 여력을 확보하여 CPython 인터프리터와 그 개선, 표준 라이브러리 등 다른 문제에 집중할 수 있도록 하기 위한 것입니다.

이 모라토리엄은 예외를 허용하지 않습니다. 일단 채택되면 언어의 문법이나 의미론에 대해 계류 중인 모든 변경은 모라토리엄이 해제될 때까지 연기됩니다.

이 모라토리엄은 다른 Python 구현에 적용하려는 것이 아닙니다. 즉, 원한다면 다른 구현들은 표준 구현과 다른 기능을 추가할 수 있습니다.

세부 사항

변경할 수 없는 것

  • 새 내장 기능
  • 언어 문법
    문법 파일은 모호성 수정을 제외하면 사실상 변경할 수 없게 됩니다.
  • 일반적인 언어 의미론
    언어는 특정 예외 사항(아래 참조)을 제외하고 현재 상태 그대로 동작합니다.
  • 새 __future__ 임포트
    이는 (컴파일러 지시문을 사용하기는 하지만) 사실상 언어의 문법 및/또는 의미론을 변경하므로 명시적으로 금지됩니다.

사안별 예외

  • 내장 객체의 새 메서드
    내장 객체에 메서드를 추가하자는 주장은 제기할 수 있습니다.
  • 잘못된 언어 의미론
    원래 설계 의도에 비추어 언어 의미론이 모호하거나 잘못 구현된 것으로 드러나면 해당 의미론은 변경될 수 있습니다.
  • 구현하기 어려운 언어 의미론
    다른 VM들은 아직 Python 3.x 의미론을 구현하기 시작하지 않았으므로, 특정 의미론은 재현하기가 지나치게 어려울 가능성이 있습니다. 그러한 경우에는 다른 VM들이 Python 3.x를 더 쉽게 도입할 수 있도록 해당 의미론을 변경할 수 있습니다.

변경이 허용되는 것

  • C API
    이 모라토리엄의 다른 제약을 어기지 않는 한, CPython의 기반 C 코드를 변경하는 것은 전적으로 허용됩니다. 예를 들어, 현재 원자적인 특정 연산들이 계속 원자적으로 유지된다는 전제하에 GIL을 제거하는 것도 괜찮습니다.
  • 표준 라이브러리
    표준 라이브러리는 언어 정의와 직접 연결되어 있지 않으므로 이 모라토리엄의 적용 대상이 아닙니다.
  • 3.x 기능의 2.x 백포트
    모라토리엄은 3.x에서 새로 도입될 기능에만 영향을 미칩니다.
  • 임포트 의미론
    예를 들어 PEP 382가 있습니다. 어차피 임포트 의미론은 Python 구현마다 다릅니다.

소급 적용

모라토리엄은 Python 3.1 릴리스 이후의 모든 변경 사항에 적용된다는 점에 유의해야 합니다. 이 규칙은 모라토리엄이 논의되는 동안 기능이 CPython 소스 트리에 서둘러 추가되거나 몰래 들어가는 것을 막기 위한 것입니다. py3k 개발 브랜치의 NEWS 파일을 검토한 결과, 이 목표를 충족하기 위해 되돌려야 할 커밋은 없는 것으로 확인되었습니다.

연장

모라토리엄 기간은 새로운 PEP를 통해서만 연장할 수 있습니다.

References