PEP 3139 – sys 및 “인터프리터” 모듈 정리
- Author:
- Benjamin Peterson <benjamin at python.org>
- Status:
- Rejected
- Type:
- Standards Track
- Created:
- 04-Apr-2008
- Python-Version:
- 3.0
Table of Contents
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
거부 통지
Guido의 -0.5로 이 PEP는 종료되었습니다. 다음을 참조하십시오: https://mail.python.org/pipermail/python-3000/2008-April/012977.html.
초록
이 PEP는 sys 모듈을 정리하고 일반적인 Python 기능을 구현 세부 사항에서 분리하기 위해 CPython 전용 인터프리터 함수를 위한 새로운 저수준 모듈을 제안합니다.
근거
sys 모듈에는 현재 두 가지 주요 그룹으로 나눌 수 있는 함수와 데이터가 포함되어 있습니다.
- 모든 Python 구현에서 사용할 수 있고 Python 가상 머신의 일반적인 실행을 다루는 데이터와 함수입니다.
- argv
- byteorder
- path, path_hooks, meta_path, path_importer_cache 및 modules
- copyright, hexversion, version 및 version_info
- displayhook, __displayhook__
- excepthook, __excepthook__, exc_info 및 exc_clear
- exec_prefix 및 prefix
- executable
- exit
- flags, py3kwarning, dont_write_bytecode 및 warn_options
- getfilesystemencoding
- get/setprofile
- get/settrace, call_tracing
- getwindowsversion
- maxint 및 maxunicode
- platform
- ps1 및 ps2
- stdin, stderr, stdout, __stdin__, __stderr__, __stdout__
- tracebacklimit
- CPython 인터프리터에 영향을 미치는 데이터와 함수입니다.
- get/setrecursionlimit
- get/setcheckinterval
- _getframe 및 _current_frame
- getrefcount
- get/setdlopenflags
- settscdumps
- api_version
- winver
- dllhandle
- float_info
- _compact_freelists
- _clear_type_cache
- subversion
- builtin_module_names
- callstats
- intern
두 번째 항목 모음은 수년에 걸쳐 꾸준히 증가하여 sys를 복잡하게 만들었습니다. Guido는 심지어 그 안에 있는 일부 항목을 알아보지 못한다고까지 말했습니다 [1]!
이러한 항목을 다른 모듈로 옮기면 다른 Python 구현에 어떤 함수를 구현해야 하고 어떤 함수를 구현할 필요가 없는지 명확한 메시지를 전달할 수 있습니다.
types 모듈의 내용을 표준 라이브러리 전반에 분산하자는 제안도 있었습니다 [2]; 인터프리터 모듈은 프레임과 코드 객체 같은 내부 타입을 보관하기에 매우 적합한 장소가 될 것입니다.
명세
“인터프리터”라는 새 내장 모듈이 추가됩니다(Naming을 참조하십시오).
위의 두 번째 항목 목록은 다음과 같이 표준 라이브러리로 나뉩니다.
- 인터프리터 모듈
- get/setrecursionlimit
- get/setcheckinterval
- _getframe 및 _current_frame
- get/setdlopenflags
- settscdumps
- api_version
- winver
- dllhandle
- float_info
- _clear_type_cache
- subversion
- builtin_module_names
- callstats
- intern
- gc 모듈:
- getrefcount
- _compact_freelists
전환 계획
3.x에서 구현되면 인터프리터 모듈이 2.6으로 역포팅됩니다. 이를 대체하는 sys 함수에 Py3k 경고가 추가됩니다.
미해결 문제
무엇을 옮겨야 합니까?
dont_write_bytecode
일부는 바이트코드 작성이 구현 세부 사항이므로 [3] 옮겨야 한다고 생각합니다. 이에 대한 반론은 현재 완전한 모든 Python 구현이 어떤 형태로든 바이트코드를 작성하므로, 이를 비활성화할 수 있는 것이 가치 있다는 것입니다. 또한 이를 옮긴다면 일부는 imp 모듈에 넣기를 원합니다.
일부를 imp로 옮깁니까?
dont_write_bytecode 또는 어쩌면 builtin_module_names를 imp 모듈에 넣으면 잘 어울릴 수 있다는 의견이 제기되었습니다.
명명
작성자는 새 모듈의 이름으로 “인터프리터”를 제안합니다. “pyvm”도 제안된 바 있으며 [4], “cpython”이라는 이름도 좋은 반응을 얻었습니다 [5]. “cpython”이라는 이름도 좋은 반응을 얻었습니다 [5].
참고 자료
Copyright
This document has been placed in the public domain.