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

Python 개선 제안 한국어 번역

PEP 3003 – 파이썬 언어 유예

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 3.2(3.1 이후 18~24개월 후 릴리스 예정)가 포함되지만, Python 3.3은(조기에 릴리스되지 않는다는 가정하에) 다시 언어 변경을 포함할 수 있도록 허용합니다.

이 기능 중지는 비-CPython 구현체가 언어의 핵심 구현을 “따라잡도록” 하고, Python 3.x의 도입을 용이하게 하며, 커뮤니티에 더욱 안정적인 기반을 제공하기 위한 것입니다.

근거

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

언어로서의 Python은 핵심 구현인 CPython 그 이상이며, Jython [2], IronPython [3] 및 PyPy [4]와 같이 풍부하고 성숙하며 활발한 구현체 커뮤니티를 갖추고 있습니다. 이러한 구현체는 커뮤니티뿐만 아니라 언어 자체에도 이익이 됩니다.

Unladen Swallow [5] (CPython의 한 브랜치)와 같은 다른 구현체들은 대체 구현을 만들려는 것이 아니라 CPython 자체의 성능과 구현을 향상하려고 합니다.

Python 3.x는 지난 몇 년간 Python 개발에서 큰 부분을 차지했습니다. Python 3.x의 릴리스와 더불어, 이 릴리스 및 이전 2.6.x 릴리스에서 도입된 수많은 언어 변경은 대체 구현체가 핵심 Python 개발을 “따라가는” 데 심각한 불리함을 초래합니다.

또한 CPython에 구현된 최근 언어 릴리스의 많은 변경 사항은 아직 일반 사용자층에서 널리 사용되지 않고 있습니다. 예를 들어 대부분의 사용자는 운영 체제에 사전 설치되어 제공되는 인터프리터 버전(일반적으로 CPython)에 제한되어 있습니다. 대부분의 운영 체제 공급업체는 이제 막 Python 2.6을 제공하기 시작했으며, Python 3.x를 제공하는 업체는 더욱 적습니다.

Python 2.7이 Python 2.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