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 ↗
