Here's an updated version:

   - display_hook, stdout, stdin, and stderr
   - flags and warn_options
   - settrace, and setprofile
   - traceback, excepthook
   - etc...
  

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

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]_!

Other implementations have clearly struggled with what to do about the contents
of sys they can't implement but must to retain compatibility.  For example,
Jython's sys module has dud set/getrecursionlimit functions.  Moving these items
items off to another module would send a clear message 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
functions mentioned in the second list above will be moved to it.


Transition Plan
===============

Once implemented in 3.x, the interpreter module will be back-ported to 2.6.
Py3k warnings will be added the the sys functions it replaces.


Open Issues
===========

Naming
------

The author proposes the name "interpreter" for the new module.  "pyvm" has also
been suggested [#pyvm-name]_.


References
==========

.. [#bug-1522]

   http://bugs.python.org/issue1522

.. [#types-removal]

   http://mail.python.org/pipermail/stdlib-sig/2008-April/000172.html

.. [#pyvm-name]

   http://mail.python.org/pipermail/python-3000/2007-November/011351.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:


On Sat, Apr 5, 2008 at 9:18 AM, Benjamin Peterson <musiccomposition@gmail.com> wrote:


On Fri, Apr 4, 2008 at 4:09 PM, Steven Bethard <steven.bethard@gmail.com> wrote:
On Fri, Apr 4, 2008 at 10:51 AM, Benjamin Peterson
<musiccomposition@gmail.com> wrote:
>  PEP: XXX
> Title: The interpreter module
> Version: $Revision$
> Last-Modified: $Date$
> Author: Benjamin Peterson
> Status: Draft
> Type: Standards Track
> Content-Type: text/x-rst
> Created: 4-April-2008
> Python-Version: 3.0
>
>
> 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 VM.
>
>    - display_hook, stdout, stdin, and stderr
>    - flags and warn_options
>    - settrace, and setprofile
>    - traceback, excepthook
>    - etc...
>
>
> 2. Data and function that affect the CPython interpreter.
>
>    - get/setrecursionlimit
>    - get/setcheckinterval
>    - _getframe and _current_frame
>    - getrefcount
>    - getdlopenflags

Why getdlopenflags? That seems general to any Python implementation
that opens dlls (though I believe the dl module is going away in
Python 3, so it may not matter).
I don't think any other implementations do open dynamic libs. Those flags don't affect the dl module; they define how Python opens C shared libs.


Also, maybe settscdump should be moved as well? Its description says
to look at "Python/ceval.c" 
Yes.


Otherwise, it looks pretty good to me.

Steve
--
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
 --- Bucky Katt, Get Fuzzy



--
Cheers,
Benjamin Peterson



--
Cheers,
Benjamin Peterson