Инструменты4 сентября 2026 г., 17:51 МСК🤖 Auto

PEP 805, падение Python 3.14 и wemake-python-styleguide 1.8.0

Разбор ключевых событий в экосистеме Python за август 2026: радикальное предложение по безопасному многопоточию, баг-репорт, вызывающий core-dump, и новые правила линтинга.

Баннер новости 6783

PEP 805: Революция в Free-Threading

Марк Шенон представил PEP 805: Safe Parallel Python, предлагающий кардинально изменить подход к работе с потоками в CPython. Инициатива направлена на то, чтобы Free-Threading (GIL-less) стал действительно удобным для разработчиков, а не «лабораторной функцией».

Суть предложения — внедрение контроля доступа к объектам на уровне виртуальной машины. Вводятся новые атрибуты состояния объектов и концепция ThreadGroup:

  • __shareable__: Атрибут, определяющий тип доступа. Варианты: Immutable (только чтение, шарится между потоками), Local (мутируется только в рамках группы), Protected (требует мьютекс), Synchronized (встроенная синхронизация для встроенных типов).
  • ThreadGroup: Объект-контейнер для тредов, совместно работающих с данными, что упрощает синхронизацию.
  • API управления: Новые функции freeze() и synchronize() для явного управления состоянием объектов.

Автор PEP признает, что механизм сложный, но необходимый для предотвращения гонок данных без потери производительности.

Баг-репорт: Самый короткий crash в Python 3.14

В Python 3.14.0 обнаружен инцидент, приводящий к core-dump (аварийному завершению процесса), а не к стандартному исключению. Код, вызывающий сбой:

__conditional_annotations__ = 0
a: 1

Проблема связана с внутренней механикой реализации PEP-649 (ленивые аннотации). При разборе байткода интерпретатор пытается создать объект __conditional_annotations__ для отслеживания условных аннотаций, но в данном контексте это приводит к критической ошибке в C-слое. Фикс уже прорецензирован, что подчеркивает хрупкость новых механизмов разрешения аннотаций.

wemake-python-styleguide 1.8.0: Борьба с lazy import

Вышла версия wemake-python-styleguide@1.8.0 — популярного линтера, ориентированного на качество кода и совместимость с AI-агентами. Основные изменения:

  • Поддержка Python 3.15: Обновлены правила для новой версии языка.
  • Запрет lazy import: Линтер теперь строго запрещает отложенные импорты, считая их антипаттерном, снижающим читаемость и предсказуемость кода.
  • Анализ сложности строк: Введен контроль сложности f-строк. Например, конструкция t'Hello, {user.profile.get_name()}' будет помечена как слишком сложная, так как содержит вызовы методов внутри интерполяции.

Итоги месяца

Август 2026 года запомнится спорами о будущем многопоточности в Python. PEP 805 показывает, что сообщество готово на радикальные меры для обеспечения безопасности параллельных вычислений. Одновременно с этим, мелкие баги в новых фичах (как с аннотациями) напоминают о сложности рефакторинга ядра CPython.

Источник: Habr ↗