aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Doc/library/sys.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/library/sys.rst')
-rw-r--r--Doc/library/sys.rst86
1 files changed, 86 insertions, 0 deletions
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index fbfd5e1e75b..1626a89a073 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -1185,6 +1185,15 @@ always available. Unless explicitly noted otherwise, all variables are read-only
``cache_tag`` is set to ``None``, it indicates that module caching should
be disabled.
+ *supports_isolated_interpreters* is a boolean value, whether
+ this implementation supports multiple isolated interpreters.
+ It is ``True`` for CPython on most platforms. Platforms with
+ this support implement the low-level :mod:`!_interpreters` module.
+
+ .. seealso::
+
+ :pep:`684`, :pep:`734`, and :mod:`concurrent.interpreters`.
+
:data:`sys.implementation` may contain additional attributes specific to
the Python implementation. These non-standard attributes must start with
an underscore, and are not described here. Regardless of its contents,
@@ -1194,6 +1203,9 @@ always available. Unless explicitly noted otherwise, all variables are read-only
.. versionadded:: 3.3
+ .. versionchanged:: 3.14
+ Added ``supports_isolated_interpreters`` field.
+
.. note::
The addition of new required attributes must go through the normal PEP
@@ -1282,6 +1294,64 @@ always available. Unless explicitly noted otherwise, all variables are read-only
.. versionadded:: 3.5
+.. data:: _jit
+
+ Utilities for observing just-in-time compilation.
+
+ .. impl-detail::
+
+ JIT compilation is an *experimental implementation detail* of CPython.
+ ``sys._jit`` is not guaranteed to exist or behave the same way in all
+ Python implementations, versions, or build configurations.
+
+ .. versionadded:: 3.14
+
+ .. function:: _jit.is_available()
+
+ Return ``True`` if the current Python executable supports JIT compilation,
+ and ``False`` otherwise. This can be controlled by building CPython with
+ the ``--experimental-jit`` option on Windows, and the
+ :option:`--enable-experimental-jit` option on all other platforms.
+
+ .. function:: _jit.is_enabled()
+
+ Return ``True`` if JIT compilation is enabled for the current Python
+ process (implies :func:`sys._jit.is_available`), and ``False`` otherwise.
+ If JIT compilation is available, this can be controlled by setting the
+ :envvar:`PYTHON_JIT` environment variable to ``0`` (disabled) or ``1``
+ (enabled) at interpreter startup.
+
+ .. function:: _jit.is_active()
+
+ Return ``True`` if the topmost Python frame is currently executing JIT
+ code (implies :func:`sys._jit.is_enabled`), and ``False`` otherwise.
+
+ .. note::
+
+ This function is intended for testing and debugging the JIT itself.
+ It should be avoided for any other purpose.
+
+ .. note::
+
+ Due to the nature of tracing JIT compilers, repeated calls to this
+ function may give surprising results. For example, branching on its
+ return value will likely lead to unexpected behavior (if doing so
+ causes JIT code to be entered or exited):
+
+ .. code-block:: pycon
+
+ >>> for warmup in range(BIG_NUMBER):
+ ... # This line is "hot", and is eventually JIT-compiled:
+ ... if sys._jit.is_active():
+ ... # This line is "cold", and is run in the interpreter:
+ ... assert sys._jit.is_active()
+ ...
+ Traceback (most recent call last):
+ File "<stdin>", line 5, in <module>
+ assert sys._jit.is_active()
+ ~~~~~~~~~~~~~~~~~~^^
+ AssertionError
+
.. data:: last_exc
This variable is not always defined; it is set to the exception instance
@@ -1875,6 +1945,22 @@ always available. Unless explicitly noted otherwise, all variables are read-only
interpreter is pre-release (alpha, beta, or release candidate) then the
local and remote interpreters must be the same exact version.
+ .. audit-event:: sys.remote_exec pid script_path
+
+ When the code is executed in the remote process, an
+ :ref:`auditing event <auditing>` ``sys.remote_exec`` is raised with
+ the *pid* and the path to the script file.
+ This event is raised in the process that called :func:`sys.remote_exec`.
+
+ .. audit-event:: cpython.remote_debugger_script script_path
+
+ When the script is executed in the remote process, an
+ :ref:`auditing event <auditing>`
+ ``cpython.remote_debugger_script`` is raised
+ with the path in the remote process.
+ This event is raised in the remote process, not the one
+ that called :func:`sys.remote_exec`.
+
.. availability:: Unix, Windows.
.. versionadded:: 3.14