Python 3.13.16 опубликован 30 сентября 2026 года и стал последним полноценным maintenance-релизом ветки 3.13. Выпуск появился раньше даты 6 октября, указанной в PEP 719, принёс около 290 исправлений и закрыл несколько уязвимостей в стандартной библиотеке. Следующие версии Python 3.13 будут выходить только как security-fix релизы.

Python 3.13.16 поставил точку в регулярных обновлениях ветки 3.13
У Python 3.13 теперь есть чёткая граница между обычным сопровождением и длительной фазой безопасности. Python 3.13.16 вышел 30 сентября 2026 года как шестнадцатый maintenance-релиз серии и одновременно как последний выпуск с полным набором исправлений ошибок, изменений сборки и документации.
Разработчики насчитали примерно 290 изменений после Python 3.13.15, который появился 5 августа. Для ветки, вышедшей осенью 2024 года, это финальный большой пакет накопившихся правок.
Есть и небольшая неожиданность со сроками. В PEP 719 финальный regular bugfix-релиз 3.13.16 ожидался 6 октября 2026 года. Фактический выпуск состоялся 30 сентября — на шесть дней раньше указанной там даты.
После 3.13.16 серия переходит в режим security-only. PEP 719 предусматривает нерегулярные исходные релизы с исправлениями безопасности примерно до октября 2029 года. Для Python 3.13 это меняет сам характер дальнейшего сопровождения: плановых пакетов с сотнями обычных bugfix-изменений уже не предполагается.
Несколько уязвимостей затронули SSL, архивы и работу с учётными данными
Блок безопасности в Python 3.13.16 получился заметным даже на фоне общего объёма релиза. Часть исправлений касается сценариев, где приложение обрабатывает сетевые соединения или чужие архивы.
В ssl закрыты две отдельные проблемы. CVE-2026-19445 связана с use-after-free серверного SSLContext, когда sni_callback переключает контексты. CVE-2026-19553 исправляет отсутствие проверки параметра server_hostname в SSLContext.wrap_bio().
Сразу несколько изменений пришлись на tarfile. CVE-2026-82049 устраняет обход extraction-фильтров через жёсткую ссылку на символическую ссылку: специально подготовленный архив мог воздействовать на файл за пределами каталога распаковки и раскрывать его содержимое внутри извлечённого дерева. CVE-2026-19672 закрывает вариант обхода фильтра, при котором путь временно выходит за пределы каталога назначения, а затем возвращается внутрь него. Ещё одна правка, CVE-2026-87910, касается fallback-механизма жёстких ссылок и пользовательского extraction-фильтра.
В zipfile CVE-2026-15310 ограничивает объём данных, который декомпрессор может получить за одно чтение для Bzip2, LZMA и Zstandard. До исправления небольшой сжатый элемент архива мог развернуться в слишком крупное выделение памяти даже при чтении небольшими порциями.
Отдельная проблема, CVE-2026-15806, находилась в urllib.request.HTTPPasswordMgr. Учётные данные, сохранённые для URL с одной схемой, могли использоваться для совпадающего адреса с другой схемой. После исправления область действия credentials учитывает http и https.
Ещё один security-патч ограничивает stringprep и IDNA-кодек атрибутами кодовых точек Unicode, определёнными в Unicode 3.2.0, как того требует RFC 3454.
Полный набор изменений разработчики собрали в официальном changelog Python 3.13.16.
OpenSSL в готовых сборках перескочил с ветки 3.0 на 3.5 LTS
Для Windows, macOS и Android Python 3.13.16 получил OpenSSL 3.5.9. В предыдущих сборках ветки использовался OpenSSL 3.0.21, поэтому переход сразу на серию 3.5 выглядит крупнее обычного обновления встроенной зависимости.
Причина совпала по времени с завершением публичной поддержки OpenSSL 3.0 в сентябре 2026 года. В результате финальный maintenance-релиз Python 3.13 входит в длительную security-фазу уже с OpenSSL 3.5 LTS в официальных сборках для этих платформ.
В релиз также вошёл Expat 2.8.5. Эта библиотека отвечает за низкоуровневый разбор XML и поставляется вместе с CPython на ряде платформ.
Для Android в сборочных сценариях обновлён SQLite до 3.53.4, а функции median() и percentile() включены в поставляемую конфигурацию. В сборке iOS Simulator исправлен минимальный deployment-флаг: вместо флага для физического устройства теперь используется вариант для симулятора, из-за чего линкер корректно видит библиотеки из simulator SDK.
Исправления ядра затронули компилятор, импорты и работу с памятью
За пределами CVE у 3.13.16 есть несколько правок, которые интересны разработчикам из-за редких, но неприятных сбоев.
Компилятор больше не падает на чрезмерно глубоко вложенных inline-comprehension: при превышении статического лимита блоков теперь возникает SyntaxError. Для строк с не-ASCII символами исправлены позиции диапазонных синтаксических ошибок, поэтому указатель ошибки точнее совпадает с реальным фрагментом исходника.
Токенизатор получил исправление квадратичного по времени поведения на модулях с большим количеством f-строк. В contextvars внутренние HAMT-итераторы теперь отслеживаются сборщиком мусора, что устраняет утечку циклических ссылок вместе с контекстом.
Исправлены две гонки при параллельном импорте модулей, которые могли приводить к ложному ModuleNotFoundError. Ещё одна низкоуровневая правка касается bytearray.extend(): при одновременном изменении размера bytearray во время получения буфера могла возникнуть запись за его границами.
Есть и более мелкие изменения поведения. Попытка удалить f_trace_opcodes у frame-объекта теперь приводит к AttributeError вместо падения процесса, а compile() в debug-сборке корректно выдаёт ValueError для недопустимых идентификаторов AST вместо аварийного завершения.
Windows получил несколько исправлений консоли и кодировок
В Windows-версии поправлено чтение из консоли после Ctrl+C. Если чтение было отменено, но обработчик SIGINT не выбросил исключение, интерпретатор теперь продолжает чтение. Раньше такой случай мог выглядеть как конец файла.
Режим PYTHONLEGACYWINDOWSSTDIO снова использует кодовую страницу консоли для стандартных потоков. Это возвращает поведение к тому, которое применялось в Python 3.7, вместо использования системной ANSI-кодовой страницы.
os.device_encoding() теперь умеет возвращать кодировку для любого дескриптора, связанного с консолью, а не только для 0, 1 и 2. Для UTF-8 функция выдаёт строку utf-8 вместо cp65001.
В IDLE исправлена сортировка файлов в диалоге открытия и работа сочетаний клавиш с ASCII-буквами при включённом Caps Lock.
Python 3.13.15 и 3.13.16 различаются не только числом исправлений
| Область | Python 3.13.15 | Python 3.13.16 |
| Дата выпуска | 5 августа 2026 | 30 сентября 2026 |
| Статус ветки | регулярное maintenance-сопровождение | последний полный maintenance-релиз |
| Масштаб изменений | предыдущая точка обслуживания | около 290 bugfix, build и documentation изменений |
| OpenSSL в официальных Windows/macOS-сборках | 3.0.21 | 3.5.9 |
| Expat | более ранняя bundled-версия | 2.8.5 |
| Дальнейшая судьба ветки | ожидался ещё один bugfix-релиз | далее только security-fix релизы |
Сам переход к security-only делает 3.13.16 заметнее обычного точечного обновления. Ветка сохраняется, но её дальнейшие версии будут появляться по другой модели и с гораздо более узким набором изменений.
Ветка 3.13 остаётся до 2029 года уже в режиме безопасности
Python 3.13.16 завершает двухлетний период регулярного обслуживания серии, начавшийся после выхода Python 3.13.0 в октябре 2024 года. При этом сама ветка не исчезает: официальный график предусматривает security-fix релизы примерно до октября 2029 года.
Python 3.14 к этому моменту уже является актуальной feature-серией, тогда как 3.13 превращается в стабильную ветку длительного сопровождения без новых регулярных bugfix-пакетов. Следующие изменения номера 3.13.x будут связаны уже с обнаруженными проблемами безопасности и публиковаться по мере необходимости.
Для экосистемы остаётся один конкретный вопрос: насколько часто после перехода в security-only будут появляться новые исходные выпуски 3.13.x. PEP 719 фиксирует срок поддержки, но заранее определить частоту таких релизов невозможно — она зависит от будущих находок в CPython и его встроенных компонентах.