Permalink
Cannot retrieve contributors at this time
194 lines (139 sloc)
4.46 KB
| PEP: 3139 | |
| Title: Cleaning out sys and the "interpreter" module | |
| Version: $Revision$ | |
| Last-Modified: $Date$ | |
| Author: Benjamin Peterson <benjamin@python.org> | |
| Status: Rejected | |
| Type: Standards Track | |
| Content-Type: text/x-rst | |
| Created: 04-Apr-2008 | |
| Python-Version: 3.0 | |
| Rejection Notice | |
| ================ | |
| Guido's -0.5 put an end to this PEP. See | |
| https://mail.python.org/pipermail/python-3000/2008-April/012977.html. | |
| Abstract | |
| ======== | |
| This PEP proposes a new low-level module for CPython-specific interpreter | |
| functions in order to clean out the sys module and separate general Python | |
| functionality from implementation details. | |
| Rationale | |
| ========= | |
| The sys module currently contains functions and data that can be put into two | |
| major groups: | |
| 1. Data and functions that are available in all Python implementations and deal | |
| with the general running of a Python virtual machine. | |
| - argv | |
| - byteorder | |
| - path, path_hooks, meta_path, path_importer_cache, and modules | |
| - copyright, hexversion, version, and version_info | |
| - displayhook, __displayhook__ | |
| - excepthook, __excepthook__, exc_info, and exc_clear | |
| - exec_prefix and prefix | |
| - executable | |
| - exit | |
| - flags, py3kwarning, dont_write_bytecode, and warn_options | |
| - getfilesystemencoding | |
| - get/setprofile | |
| - get/settrace, call_tracing | |
| - getwindowsversion | |
| - maxint and maxunicode | |
| - platform | |
| - ps1 and ps2 | |
| - stdin, stderr, stdout, __stdin__, __stderr__, __stdout__ | |
| - tracebacklimit | |
| 2. Data and functions that affect the CPython interpreter. | |
| - get/setrecursionlimit | |
| - get/setcheckinterval | |
| - _getframe and _current_frame | |
| - getrefcount | |
| - get/setdlopenflags | |
| - settscdumps | |
| - api_version | |
| - winver | |
| - dllhandle | |
| - float_info | |
| - _compact_freelists | |
| - _clear_type_cache | |
| - subversion | |
| - builtin_module_names | |
| - callstats | |
| - intern | |
| The second collections of items has been steadily increasing over the years | |
| causing clutter in sys. Guido has even said he doesn't recognize some of things | |
| in it [#bug-1522]_! | |
| Moving these items off to another module would send a clear message to | |
| other Python implementations about what functions need and need not be | |
| implemented. | |
| It has also been proposed that the contents of types module be distributed | |
| across the standard library [#types-removal]_; the interpreter module would | |
| provide an excellent resting place for internal types like frames and code | |
| objects. | |
| Specification | |
| ============= | |
| A new builtin module named "interpreter" (see `Naming`_) will be added. | |
| The second list of items above will be split into the stdlib as follows: | |
| The interpreter module | |
| - get/setrecursionlimit | |
| - get/setcheckinterval | |
| - _getframe and _current_frame | |
| - get/setdlopenflags | |
| - settscdumps | |
| - api_version | |
| - winver | |
| - dllhandle | |
| - float_info | |
| - _clear_type_cache | |
| - subversion | |
| - builtin_module_names | |
| - callstats | |
| - intern | |
| The gc module: | |
| - getrefcount | |
| - _compact_freelists | |
| Transition Plan | |
| =============== | |
| Once implemented in 3.x, the interpreter module will be back-ported to 2.6. | |
| Py3k warnings will be added to the sys functions it replaces. | |
| Open Issues | |
| =========== | |
| What should move? | |
| ----------------- | |
| dont_write_bytecode | |
| ^^^^^^^^^^^^^^^^^^^^ | |
| Some believe that the writing of bytecode is an implementation detail and should | |
| be moved [#bytecode-issue]_. The counterargument is that all current, complete | |
| Python implementations do write some sort of bytecode, so it is valuable to be | |
| able to disable it. Also, if it is moved, some wish to put it in the imp | |
| module. | |
| Move to some to imp? | |
| -------------------- | |
| It was noted that dont_write_bytecode or maybe builtin_module_names might fit | |
| nicely in the imp module. | |
| Naming | |
| ------ | |
| The author proposes the name "interpreter" for the new module. "pyvm" has also | |
| been suggested [#pyvm-name]_. The name "cpython" was well liked | |
| [#cpython-name]_. | |
| References | |
| ========== | |
| .. [#bug-1522] | |
| http://bugs.python.org/issue1522 | |
| .. [#types-removal] | |
| https://mail.python.org/pipermail/stdlib-sig/2008-April/000172.html | |
| .. [#bytecode-issue] | |
| https://mail.python.org/pipermail/stdlib-sig/2008-April/000217.html | |
| .. [#pyvm-name] | |
| https://mail.python.org/pipermail/python-3000/2007-November/011351.html | |
| .. [#cpython-name] | |
| https://mail.python.org/pipermail/stdlib-sig/2008-April/000223.html | |
| Copyright | |
| ========= | |
| This document has been placed in the public domain. | |
| Local Variables: | |
| mode: indented-text | |
| indent-tabs-mode: nil | |
| sentence-end-double-space: t | |
| fill-column: 70 | |
| coding: utf-8 | |
| End: |