[REVIEW] 2026-04-15-python3-14: New item for Python 3.14 switch

Michał Górny <[email protected]>
Newsgroups gmane.linux.gentoo.devel
Message-ID <[email protected]>
Signed-off-by: Michał Górny <[email protected]>
---
 .../2026-04-15-python3-14.en.txt              | 130 ++++++++++++++++
 .../2026-04-15-python3-14.pl.txt              | 143 ++++++++++++++++++
 2 files changed, 273 insertions(+)
 create mode 100644 2026-04-15-python3-14/2026-04-15-python3-14.en.txt
 create mode 100644 2026-04-15-python3-14/2026-04-15-python3-14.pl.txt

diff --git a/2026-04-15-python3-14/2026-04-15-python3-14.en.txt b/2026-04-15-python3-14/2026-04-15-python3-14.en.txt
new file mode 100644
index 0000000..bef2c1e
--- /dev/null
+++ b/2026-04-15-python3-14/2026-04-15-python3-14.en.txt
@@ -0,0 +1,130 @@
+Title: Python 3.14 to become the default on 2026-06-01
+Author: Michał Górny <[email protected]>
+Posted: 2026-04-15
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: dev-lang/pypy:3.11
+Display-If-Installed: dev-lang/python:3.11
+Display-If-Installed: dev-lang/python:3.12
+Display-If-Installed: dev-lang/python:3.13
+
+We are planning to switch the default Python target of Gentoo systems
+on 2026-06-01, from Python 3.13 to Python 3.14.  If you have not changed
+the values of PYTHON_TARGETS or PYTHON_SINGLE_TARGET, the change will
+have immediate effect on your system and the package manager will try
+to switch automatically on the next upgrade following the change.
+
+If you did change the values, prefer a safer approach or have problems
+with the update, read on.
+
+Please note that the default upgrade method switches packages to the new
+Python versions as they are rebuilt.  This means that all interdependent
+packages have to support the new version for the upgrade to proceed,
+and that some programs may temporarily fail to find their dependencies
+throughout the upgrade (although programs that are already started
+are unlikely to be affected).
+
+
+If you have PYTHON_TARGETS or PYTHON_SINGLE_TARGET declared
+in make.conf, please remove these declarations as they will interfere
+with the package.use samples provided below.  Using make.conf for Python
+targets is discouraged as it prevents package defaults from applying
+when necessary.  This news item assumes using /etc/portage/package.use
+or your package manager's equivalent file for configuration.
+
+
+At this point, you have a few configuration options to choose from:
+
+1. If you wish Python upgrades to apply automatically, you can remove
+   PYTHON_TARGETS and PYTHON_SINGLE_TARGET declarations.  When
+   the defaults change, your package manager should handle the upgrade
+   automatically.  However, you may still need to run the update
+   commands if any problems arise.
+
+2. If you wish to defer the upgrade for the time being, you can
+   explicitly set the old values in package.use.
+
+3. If you wish to force the upgrade earlier, you can explicitly set
+   the new values and run the upgrade commands.
+
+4. If you wish to use a safer approach (i.e. less likely to temporarily
+   break packages during the upgrade), you can perform a multi-step
+   upgrade as outlined below.
+
+5. Finally, you can use an arbitrary combination of PYTHON_TARGETS
+   and PYTHON_SINGLE_TARGET.
+
+
+Deferring the upgrade
+=====================
+To defer the upgrade, explicitly set the old targets:
+
+    */* PYTHON_TARGETS: -* python3_13
+    */* PYTHON_SINGLE_TARGET: -* python3_13
+
+This will enforce Python 3.13 and block any future updates.  However,
+please note that this is only a temporary solution and you will
+eventually need to perform the migration.
+
+
+Forcing the upgrade
+===================
+To force the upgrade earlier, explicitly select the Python 3.14 targets:
+
+    */* PYTHON_TARGETS: -* python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+However, it is important to remember to remove this after the defaults
+change, as it will interfere with the automatic switch to the next
+Python version in the future.
+
+
+Safer upgrade procedure
+=======================
+A safer approach is to add Python 3.14 support to your system first,
+and only then remove Python 3.13.  However, note that this involves two
+rebuilds of all the affected packages, so it will take noticeably
+longer.
+
+First, enable both Python 3.13 and Python 3.14, and then run the upgrade
+commands:
+
+    */* PYTHON_TARGETS: -* python3_13 python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_13
+
+Then switch PYTHON_SINGLE_TARGET and run the second batch of upgrades:
+
+    */* PYTHON_TARGETS: -* python3_13 python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+Finally, switch to the final version and upgrade:
+
+    */* PYTHON_TARGETS: -* python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+You may wish to remove the target overrides after the defaults switch.
+Alternatively, you can keep them to block the next automatic upgrade
+to Python 3.15, and upgrade manually then.
+
+
+Upgrade commands
+================
+The Python 3.13 cleanup requires that Python 3.13 is removed from
+the complete dependency trees in batch.  If some of the
+installed packages using an older Python version are not triaged
+for the upgrade, the package manager will throw dependency conflicts.
+This makes it important that the upgrade is carried via a --deep
+--changed-use @world upgrade, as well as that any stray packages
+are removed prior to it, e.g.:
+
+    emerge --depclean
+    emerge -1vUD @world
+    emerge --depclean
+
+
+Other Python implementations
+============================
+At the same time, we are also going to remove the target support
+for Python 3.11 (python3_11) and PyPy 3.11 (pypy3_11).  Since there are
+no plans to release a Python 3.12-compatible PyPy version yet, Gentoo
+will be removing PyPy support for the time being.
diff --git a/2026-04-15-python3-14/2026-04-15-python3-14.pl.txt b/2026-04-15-python3-14/2026-04-15-python3-14.pl.txt
new file mode 100644
index 0000000..2042bea
--- /dev/null
+++ b/2026-04-15-python3-14/2026-04-15-python3-14.pl.txt
@@ -0,0 +1,143 @@
+Title: Python 3.13 stanie się domyślną wersją począwszy od 2026-06-01
+Author: Michał Górny <[email protected]>
+Translator: Michał Górny <[email protected]>
+Posted: 2026-04-15
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: dev-lang/pypy:3.11
+Display-If-Installed: dev-lang/python:3.11
+Display-If-Installed: dev-lang/python:3.12
+Display-If-Installed: dev-lang/python:3.13
+
+Gentoo planuje zmienić domyślną wersję Pythona z 3.13 na 3.13 w dniu
+1. czerwca 2026 r.  Użytkownicy, którzy nie zmieniali wartości flag
+PYTHON_TARGETS oraz PYTHON_SINGLE_TARGET nie muszą nic robić.  Menadżer
+pakietów automatycznie zaktualizuje wsparcie Pythona do nowej wersji
+przy kolejnej aktualizacji systemu po tej zmianie.
+
+Informacje zawarte w tej wiadomości przeznaczone są dla użytkowników,
+którzy zmieniali preferowaną wersję Pythona bądź chcą przeprowadzić
+aktualizację w bezpieczniejszy sposób.
+
+Uwaga: standardowa metoda aktualizacji podmienia obsługiwaną wersję
+Pythona w poszczególnych pakietach w miarę ich aktualizacji.
+Oznacza to, że aktualizacja systemu możliwa będzie wyłącznie, jeżeli
+wszystkie zainstalowane pakiety obsługują nową wersję.  W trakcie
+aktualizacji zależności poszczególnych zainstalowanych programów mogą
+stać się tymczasowo niedostępne, nie powinno to jednak mieć wpływu
+na działanie już uruchomionych aplikacji.
+
+
+Użytkownicy, którzy wykorzystują plik make.conf do ustawienia wartości
+zmiennych PYTHON_TARGETS lub PYTHON_SINGLE_TARGET powinni usunąć
+te wartości, gdyż będą one kolidowały z przykładami package.use
+przedstawionymi w tej wiadomości.  Wykorzystywanie pliku make.conf
+do konfiguracji tych zmiennych jest niewskazane, gdyż ustawienia te
+nadpisują domyślne wartości flag zawarte w poszczególnych pakietach.
+Dalszy ciąg tej wiadomości zakłada wykorzystywanie package.use
+lub równoważnego pliku konfiguracyjnego.
+
+
+Dostępne są następujące możliwości aktualizacji:
+
+1. Automatyczna aktualizacja wersji Pythona.  Aby skorzystać z tej
+   opcji, należy usunąć zmienne PYTHON_TARGETS
+   oraz PYTHON_SINGLE_TARGET.  Wówczas menadżer pakietów automatycznie
+   przeprowadzi aktualizację ilekroć zmieni się domyślna wersja Pythona
+   w Gentoo.  Niemniej, może zaistnieć konieczność ręcznej aktualizacji
+   w przypadku wystąpienia problemów.
+
+2. Odroczenie aktualizacji poprzez wymuszenie poprzedniej wersji
+   w pliku package.use.
+
+3. Wymuszenie wcześniejszej aktualizacji poprzez podanie nowej wersji
+   i dokonanie aktualizacji systemu.
+
+4. Zastosowanie bezpiecznego podejścia (tj. zmniejszającego ryzyko
+   niesprawnych programów w trakcie aktualizacji) poprzez wykonanie
+   aktualizacji w kilku krokach.  Proces ten jest szczegółowo opisany
+   w dalszej części wiadomości.
+
+5. Zastosowanie dowolnej kombinacji zmiennych PYTHON_TARGETS
+   oraz PYTHON_SINGLE_TARGET.
+
+
+Odroczenie aktualizacji
+=======================
+Aby odroczyć aktualizację do późniejszego terminu, należy wymusić
+poprzednią wersję Pythona:
+
+    */* PYTHON_TARGETS: -* python3_13
+    */* PYTHON_SINGLE_TARGET: -* python3_13
+
+W ten sposób Python 3.13 zostanie wymuszony na stałe i przyszłe
+aktualizacje zostaną zablokowane.  Należy jednak pamiętać, że jest
+to rozwiązanie tymczasowe i w przyszłości aktualizacja stanie się
+konieczna.
+
+
+Wymuszenie aktualizacji
+=======================
+Aby wymusić aktualizację wcześniej, należy wybrać Pythona 3.13:
+
+    */* PYTHON_TARGETS: -* python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+Zalecane jest jednak usunięcie tych ustawień po podanym wyżej terminie,
+aby nie kolidowały w przyszłości z kolejną zmianą domyślnej wersji
+Pythona.
+
+
+Bezpieczna procedura aktualizacji
+=================================
+Bezpieczniejszą alternatywą do standardowego procesu jest wprowadzenie
+wsparcia Pythona 3.13 w pierwszym kroku, a następnie usunięcie Pythona
+3.13.  Należy jednak pamiętać, że będzie wymagało to dwukrotnego
+przebudowania wszystkich pakietów używających Pythona, tak więc łączny
+czas aktualizacji zostanie wydłużony.
+
+Najpierw załączyć należy obydwie wersje Pythona i przeprowadzić
+aktualizację systemu:
+
+    */* PYTHON_TARGETS: -* python3_13 python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_13
+
+Następnie przełączyć należy wartość PYTHON_SINGLE_TARGET i przebudować
+pakiety używające tych flag:
+
+    */* PYTHON_TARGETS: -* python3_13 python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+W ostatnim kroku należy wyłączyć poprzednią wersję i przeprowadzić
+kolejną aktualizację:
+
+    */* PYTHON_TARGETS: -* python3_14
+    */* PYTHON_SINGLE_TARGET: -* python3_14
+
+Po terminie zmiany domyślnych wartości, konfigurację tę można usunąć.
+Alternatywnie, pozostawienie jej zablokuje przyszłą aktualizację
+do Pythona 3.15 i pozwoli na ręczne przeprowadzenie bezpieczniej
+aktualizacji.
+
+
+Proces aktualizacji
+===================
+Usunięcie Pythona 3.13 wymaga, by odpowiednie flagi zostały jednocześnie
+wyłączone w całym drzewie zależności.  Jeżeli niektóre z zainstalowanych
+pakietów nie zostaną uwzględnione w planowanej aktualizacji, mogą one
+zablokować ten proces.  Dlatego też istotne jest przeprowadzenie
+aktualizacji przy pomocy parametrów `--deep --changed-use @world` bądź
+równoważnych, jak również wcześniejsze usunięcie niepotrzebnych
+pakietów.  Można tego dokonać używając poleceń:
+
+    emerge --depclean
+    emerge -1vUD @world
+    emerge --depclean
+
+
+Inne implementacje Pythona
+==========================
+W tym samym czasie, Gentoo usunie wsparcie flag dla Pythona 3.11
+(flaga python3_11) oraz PyPy 3.11 (flaga pypy3_11).  Aktualnie autorzy
+nie planują wersji PyPy kompatybilnej z Pythonem 3.12, w związku z czym
+Gentoo nie będzie aktualnie wspierać żadnej wersji PyPy.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.