PEP 3139 – Cleaning out sys and the “interpreter” module | peps.python.org
Following system colour scheme
Selected dark colour scheme
Selected light colour scheme
Python Enhancement Proposals
Toggle light / dark / auto colour theme
PEP 3139 – Cleaning out sys and the “interpreter” module
PEP 3139 – Cleaning out sys and the “interpreter” module
Author
:
Benjamin Peterson <benjamin at python.org>
Status
:
Rejected
Type
:
Standards Track
Created
:
04-Apr-2008
Python-Version
:
3.0
Table of Contents
Guido’s -0.5 put an end to this PEP. See
https://mail.python.org/pipermail/python-3000/2008-April/012977.html.
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.
The sys module currently contains functions and data that can be put into two
major groups:
- 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
- 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 !
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 ; the interpreter module would
provide an excellent resting place for internal types like frames and code
objects.
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
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.
Some believe that the writing of bytecode is an implementation detail and should
be moved . 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.
It was noted that dont_write_bytecode or maybe builtin_module_names might fit
nicely in the imp module.
The author proposes the name “interpreter” for the new module. “pyvm” has also
been suggested . The name “cpython” was well liked
.
[
1]
http://bugs.python.org/issue1522
[
2]
https://mail.python.org/pipermail/stdlib-sig/2008-April/000172.html
[
3]
https://mail.python.org/pipermail/stdlib-sig/2008-April/000217.html
[
4]
https://mail.python.org/pipermail/python-3000/2007-November/011351.html
[
5]
https://mail.python.org/pipermail/stdlib-sig/2008-April/000223.html
This document has been placed in the public domain.
Contents
Page Source (GitHub)
Source: https://github.com/python/peps/blob/main/peps/pep-3139.rst
Last modified: 2025-02-01 08:59:27 UTC