Skip to content

PEP 432: Fix footnotes and syntax highlighting #2716

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 20, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 18 additions & 13 deletions pep-0432.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Requires: 587
Created: 28-Dec-2012
Post-History: 28-Dec-2012, 02-Jan-2013, 30-Mar-2019, 28-Jun-2020

.. highlight:: c

PEP Withdrawal
==============
Expand Down Expand Up @@ -151,10 +152,10 @@ Background

Over time, CPython's initialization sequence has become progressively more
complicated, offering more options, as well as performing more complex tasks
(such as configuring the Unicode settings for OS interfaces in Python 3 [10_],
(such as configuring the Unicode settings for OS interfaces in Python 3 [10]_,
bootstrapping a pure Python implementation of the import system, and
implementing an isolated mode more suitable for system applications that run
with elevated privileges [6_]).
with elevated privileges [6]_).

Much of this complexity is formally accessible only through the ``Py_Main``
and ``Py_Initialize`` APIs, offering embedding applications little
Expand All @@ -166,9 +167,9 @@ API cannot be used safely.
A number of proposals are on the table for even *more* sophisticated
startup behaviour, such as better control over ``sys.path``
initialization (e.g. easily adding additional directories on the command line
in a cross-platform fashion [7_], controlling the configuration of
``sys.path[0]`` [8_]), easier configuration of utilities like coverage
tracing when launching Python subprocesses [9_]).
in a cross-platform fashion [7]_, controlling the configuration of
``sys.path[0]`` [8]_), easier configuration of utilities like coverage
tracing when launching Python subprocesses [9]_).

Rather than continuing to bolt such behaviour onto an already complicated
system indefinitely, this PEP proposes to start simplifying the status quo by
Expand All @@ -195,7 +196,7 @@ The CPython startup sequence as of Python 3.6 was difficult to understand, and
even more difficult to modify. It was not clear what state the interpreter was
in while much of the initialization code executed, leading to behaviour such
as lists, dictionaries and Unicode values being created prior to the call
to ``Py_Initialize`` when the ``-X`` or ``-W`` options are used [1_].
to ``Py_Initialize`` when the ``-X`` or ``-W`` options are used [1]_.

By moving to an explicitly multi-phase startup sequence, developers should
only need to understand:
Expand Down Expand Up @@ -238,11 +239,15 @@ should minimise their impact on the startup overhead.
Experience with the importlib migration suggests that the startup time is
dominated by IO operations. However, to monitor the impact of any changes,
a simple benchmark can be used to check how long it takes to start and then
tear down the interpreter::
tear down the interpreter:

.. code-block:: bash

python3 -m timeit -s "from subprocess import call" "call(['./python', '-Sc', 'pass'])"

Current numbers on my system for Python 3.7 (as built by the Fedora project)::
Current numbers on my system for Python 3.7 (as built by the Fedora project):

.. code-block:: shell
Copy link
Member

@CAM-Gerlach CAM-Gerlach Jul 22, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you meant console here (shell is an alias for bash, and this has the $ prompt and output as in console)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well spotted, I did!

Please see PR #2729 to fix it.


$ python3 -m timeit -s "from subprocess import call" "call(['python3', '-Sc', 'pass'])"
50 loops, best of 5: 6.48 msec per loop
Expand All @@ -269,7 +274,7 @@ Implementation Strategy
=======================

An initial attempt was made at implementing an earlier version of this PEP for
Python 3.4 [2_], with one of the significant problems encountered being merge
Python 3.4 [2]_, with one of the significant problems encountered being merge
conflicts after the initial structural changes were put in place to start the
refactoring process. Unlike some other previous major changes, such as the
switch to an AST-based compiler in Python 2.5, or the switch to the importlib
Expand Down Expand Up @@ -1069,7 +1074,7 @@ aspects are the fact that user site directories are enabled,
environment variables are trusted and that the directory containing the
executed file is placed at the beginning of the import path.

Issue 16499 [6_] added a ``-I`` option to change the behaviour of
Issue 16499 [6]_ added a ``-I`` option to change the behaviour of
the normal CPython executable, but this is a hard to discover solution (and
adds yet another option to an already complex CLI). This PEP proposes to
instead add a separate ``system-python`` executable
Expand Down Expand Up @@ -1173,7 +1178,7 @@ Locating Python and the standard library

The location of the Python binary and the standard library is influenced
by several elements. The algorithm used to perform the calculation is
not documented anywhere other than in the source code [3_,4_]. Even that
not documented anywhere other than in the source code [3]_, [4]_. Even that
description is incomplete, as it failed to be updated for the virtual
environment support added in Python 3.3 (detailed in :pep:`405`).

Expand Down Expand Up @@ -1213,7 +1218,7 @@ the ``PYTHONPATH`` environment variable.

The ``site`` module, which is implicitly imported at startup (unless
disabled via the ``-S`` option) adds additional paths to this initial
set of paths, as described in its documentation [5_].
set of paths, as described in its documentation [5]_.

The ``-s`` command line option can be used to exclude the user site
directory from the list of directories added. Embedding applications
Expand Down Expand Up @@ -1372,7 +1377,7 @@ connection by the operating system.
TBD: Document how the "-x" option is handled (skips processing of the
first comment line in the main script)

Also see detailed sequence of operations notes at [1_]
Also see detailed sequence of operations notes at [1]_.


References
Expand Down