Skip to content

Conversation

@HernaniSamuel
Copy link

@HernaniSamuel HernaniSamuel commented Jan 23, 2026

Clarify that the objects listed in the free-threading HOWTO are additional immortalizations specific to the free-threaded build.

This addresses the inconsistency reported in #144161, where sys.intern() documentation states that interned strings are not immortal, while the free-threading HOWTO suggested otherwise. Both are correct for their respective contexts (default vs. free-threaded builds).

Changes follow the suggestion by @Prometheus3375 in the issue discussion.


📚 Documentation preview 📚: https://cpython-previews--144176.org.readthedocs.build/

…build

Clarify that the objects listed in the free-threading HOWTO are
additional immortalizations specific to the free-threaded build.
This addresses the inconsistency with sys.intern() documentation,
which describes the default (mortal) behavior.
@python-cla-bot
Copy link

python-cla-bot bot commented Jan 23, 2026

All commit authors signed the Contributor License Agreement.

CLA signed

Copy link
Contributor

@sharktide sharktide left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

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

I think it would make much more sense to just add a note to sys.intern and PyUnicode_InternInPlace saying that the free-threaded build makes all interned strings immortal.

Copy link
Contributor

@Prometheus3375 Prometheus3375 left a comment

Choose a reason for hiding this comment

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

LGTM, though perhaps in both "Note" blocks I would also highlight "are" in bold as on the picture below.

Image

Comment on lines 1753 to 1755
Note that interned strings are not “immortal”.
You must keep a reference to the result to benefit from interning.
Copy link
Contributor

Choose a reason for hiding this comment

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

Just to avoid double "Note", here's rephrase of the previous paragraph.

Suggested change
Note that interned strings are not immortal.
You must keep a reference to the result to benefit from interning.
Interned strings are not :term:`immortal`.
You must keep a reference to the result to benefit from interning.

---------------

In the free-threaded build, some objects are :term:`immortal`.
The free-threaded build introduces additional :term:`immortal` objects.
Copy link
Member

Choose a reason for hiding this comment

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

I think "additional ... objects" is ambiguous. This reads to me as if there are more total objects on the free-threaded build, not that more existing objects are immortal. I would say something like "On the free-threaded build, more objects are made immortal."

then -- as with any other error -- the argument is left unchanged.
Note that interned strings are not immortal.
Interned strings are not :term:`immortal`.
Copy link
Member

Choose a reason for hiding this comment

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

Only strings interned by this function are not immortal, not all interned strings. Let's clarify that.

Comment on lines 1756 to 1757
.. note::
In the free-threaded build, all interned strings **are** :term:`immortal`.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
.. note::
In the free-threaded build, all interned strings **are** :term:`immortal`.
.. note::
On the :term:`free threaded` build, all interned strings are :term:`immortal`.
This may change in the future.

Ditto for the sys.intern note below.

return value of :func:`intern` around to benefit from it.

.. note::

Copy link
Member

Choose a reason for hiding this comment

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

Suggested change

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting review docs Documentation in the Doc dir skip news

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

4 participants