Cyber News

Python 3.15 RC1: ленивые импорты, UTF-8 по умолчанию и новый профайлер Tachyon

M
Markabus
·5 августа 2026 г.
Крупный план монитора на рабочем столе разработчика: экран с редактором кода и цветной подсветкой синтаксиса, тёплый свет настольной лампы, механическая клавиатура и кружка кофе в мягком расфокусе.

4 августа 2026 года вышел первый релиз-кандидат Python 3.15 (3.15.0rc1). Это значит, что новых функций в ветку больше не добавляют — команда фиксирует набор возможностей и правит только явные ошибки. Финальный релиз 3.15.0 ожидается в начале октября, а перед ним запланирован ещё один кандидат, rc2 (1 сентября). По словам менеджера релиза Хьюго ван Кемёнаде (Hugo van Kemenade), с этого момента «разрешены только проверенные изменения кода, которые являются явными исправлениями багов». Разберём, что нового и почему этот выпуск важен для разработчиков.

Ленивые импорты (PEP 810) — главная фича релиза

Самое заметное нововведение — явные ленивые импорты (lazy imports, отложенная загрузка модулей). Появилось «мягкое» ключевое слово lazy: модуль подгружается не в момент строки import, а при первом реальном обращении к нему.

lazy import json
lazy from pathlib import Path

print("Запуск...")          # json и pathlib ещё не загружены
data = json.loads("{}")     # вот здесь json наконец импортируется

Зачем это нужно? Тяжёлые библиотеки часто импортируются «на всякий случай», а реально используются лишь в части сценариев. Для утилит командной строки и serverless-функций (бессерверных функций, запускаемых по требованию) это выливается в сотни миллисекунд лишнего старта на каждый вызов. С lazy импорт «оплачивается» только тогда, когда выполнение действительно доходит до модуля. Поведение можно включить и глобально — флагом запуска -X lazy_imports или переменной окружения PYTHON_LAZY_IMPORTS, не переписывая исходники.

UTF-8 по умолчанию (PEP 686)

Python 3.15 наконец делает UTF-8 кодировкой по умолчанию независимо от локали операционной системы. Раньше open() без явного аргумента encoding= брал системную кодировку — и один и тот же скрипт мог читать файл по-разному на Linux и на Windows, где нередко всплывал cp1251 или cp1252. Теперь операции ввода-вывода без явно указанной кодировки везде работают в UTF-8.

Это устраняет целый класс «неуловимых» ошибок с кракозябрами, но у медали есть обратная сторона: код, который молча полагался на системную кодировку, может начать читать старые файлы иначе. Прежнее поведение возвращается переменной PYTHONUTF8=0. Перед обновлением стоит проверить места, где файлы открываются без явного encoding=.

Новые типы и синтаксис

В язык добавили сразу несколько давно ожидаемых вещей.

frozendict (PEP 814)

Неизменяемый (immutable) словарь, который к тому же хешируется и сохраняет порядок вставки. Его можно использовать как ключ другого словаря или элемент множества — то, чего не хватало для «замороженных» конфигов и кэшей:

a = frozendict(x=1, y=2)
hash(a)        # работает, если ключи и значения хешируемы
a["z"] = 3     # TypeError: изменять нельзя

sentinel (PEP 661)

Штатный способ создавать уникальные «сигнальные» значения-маркеры (sentinel) с понятным строковым представлением и поддержкой pickle (сериализации). Раньше почти каждый писал свой _MISSING = object(); теперь это часть стандартной библиотеки.

Распаковка в comprehensions (PEP 798)

В списковых, множественных и словарных включениях (comprehensions), а также в генераторах, заработали операторы распаковки * и **:

lists = [[1, 2], [3, 4], [5]]
[*L for L in lists]        # [1, 2, 3, 4, 5]

dicts = [{"a": 1}, {"b": 2}]
{**d for d in dicts}       # {"a": 1, "b": 2}

Скорость и профилирование

JIT-компилятор (Just-In-Time, компиляция «на лету») подрос: команда сообщает о приросте на 8–9% (среднее геометрическое) на x86-64 Linux и на 12–13% на AArch64 macOS. Отдельного внимания заслуживает новый пакет профилирования profiling (PEP 799). Он объединяет два инструмента: profiling.tracing — детерминированную трассировку вызовов (переехала из старого cProfile) и profiling.sampling — новый статистический сэмплинг-профайлер Tachyon с частотой опроса до 1 000 000 Гц. Он умеет мерить не только «настенное» время выполнения, но и время CPU, удержания GIL и обработки исключений, а результат выгружать во flamegraph, collapsed stacks, формат Gecko Profiler и «тепловые карты».

Дополняют картину указатели кадров (frame pointers), включённые по умолчанию (PEP 831): это делает профилирование системными инструментами и разбор нативных стеков надёжнее. А для свободнопоточной сборки (free-threading — вариант интерпретатора без глобальной блокировки GIL) появился стабильный ABI abi3t — расширениям на C стало проще собираться под неё, а на macOS такая поддержка теперь ставится по умолчанию.

Понятнее ошибки и больше цвета

Сообщения об ошибках продолжают умнеть. Теперь при опечатке в атрибуте Python подсказывает вложенный путь: 'Container' object has no attribute 'area'. Did you mean '.inner.area'?. Добавились и подсказки для тех, кто пришёл из других языков — интерпретатор узнаёт типичные имена методов из JavaScript, Java, Ruby и C#. Цветной вывод в терминале распространили на новые модули: argparse, calendar, difflib, http.server, sqlite3, timeit и другие, а в интерактивной оболочке появилось цветное автодополнение.

Что убрали и о чём помнить при обновлении

Как всегда в крупных выпусках, Python 3.15 вычищает давно устаревшее — удалены помеченные к удалению элементы из десятков модулей, среди которых ast, collections.abc, ctypes, datetime, pathlib, threading и typing. Старый модуль profile объявлен устаревшим (удаление в 3.17) в пользу нового пакета profiling. Также «тихо» устаревают строки-импорты в .pth-файлах: им на смену пришли безопасные конфигурационные файлы запуска .start (PEP 829). Всё это стоит учесть заранее — именно для проверки таких вещей release candidate и существует.

Почему это важно

Python 3.15 — не косметический выпуск. Ленивые импорты и UTF-8 по умолчанию бьют по двум вечным болям: медленному старту и путанице с кодировками. Новый профайлер Tachyon и указатели кадров подтягивают Python там, где он традиционно отставал, — в наблюдаемости и диагностике производительности. А стабильный ABI для free-threading — ещё один шаг к жизни без GIL, которую сообщество строит уже несколько релизов подряд. Выход rc1 означает, что публичный API заморожен: самое время прогнать свои проекты и зависимости на кандидате, чтобы к октябрьскому релизу подойти без сюрпризов.

Частые вопросы

Q.Когда выйдет финальная версия Python 3.15?

Первый релиз-кандидат (3.15.0rc1) вышел 4 августа 2026 года, второй (rc2) запланирован на 1 сентября, а финальный релиз 3.15.0 ожидается в начале октября 2026 года. С момента rc1 в ветку вносят только исправления явных ошибок, без новых функций.

Q.Что такое ленивые импорты в Python 3.15?

Это возможность отложить загрузку модуля до первого реального обращения к нему с помощью ключевого слова lazy (PEP 810). Модуль не грузится в момент строки import, что ускоряет запуск программ, особенно CLI-утилит и serverless-функций. Ленивость можно включить и глобально флагом -X lazy_imports или переменной PYTHON_LAZY_IMPORTS.

Q.Что изменилось с кодировкой по умолчанию?

По PEP 686 Python 3.15 использует UTF-8 как кодировку по умолчанию независимо от локали ОС. Это убирает расхождения между Linux и Windows при чтении файлов без явного encoding=. Вернуть прежнее поведение можно переменной PYTHONUTF8=0.

Q.Стоит ли уже переходить на 3.15?

В продакшене — пока нет: rc1 предназначен для тестирования. Но именно сейчас стоит прогнать свои проекты и зависимости на релиз-кандидате, чтобы найти проблемы с удалёнными API и изменившейся кодировкой до финального релиза в октябре.

Источники

Предыдущая
Qwen3.8-Max: Alibaba выпустила первую open-weight модель Max-класса на 2,4 трлн параметров
Следующая
WooCommerce 11.0: кеширование товаров ускоряет магазин, а гостевые заказы привязываются к аккаунту

Читайте также

Крупный план автомобильной вычислительной платы с большим процессорным чипом и снятой пластиной жидкостного охлаждения на лабораторном столе. Иллюстрация · изображение не отражает реальный продукт.Cyber News
24 августа 2026 г.

Waymo раскрыла собственный чип для роботакси: 5 нм, больше 1000 TOPS и 13 камер в реальном времени

Waymo десять лет не рассказывала, что стоит в багажнике её роботакси. Теперь компания раскрыла собственный 5-нанометровый ASIC: более 1000 TOPS, одновременная обработка 13 камер, временнóе шумоподавление и два независимых движка с горячим резервом. Разбираем, зачем эксплуатанту сервиса свой кремний и что из этого стоит забрать разработчикам.

Читать →
Крупный план рабочего стола разработчика: монитор с открытым редактором кода и подсветкой синтаксиса, на столе перед ним лежит видеокарта-ускоритель. Иллюстрация · изображение сгенерировано ИИCyber News
22 августа 2026 г.

Mojo стал полностью открытым: компилятор языка Криса Латтнера выложили под Apache 2.0 — уже под флагом Qualcomm

Modular выложила в открытый доступ компилятор и тулчейн языка Mojo под Apache 2.0 с исключениями LLVM — через три года после обещания и через месяц после покупки компании Qualcomm за $3,9 млрд. Разбираем, что именно открыли, чего пока нет и зачем это производителю чипов.

Читать →
Коридор между стойками серверов в дата-центре: ряды синих и белых индикаторов на работающих узлах, один ряд посередине полностью погашен. Иллюстрация · изображение сгенерировано ИИ.Cyber News
21 августа 2026 г.

OpenAI впервые притормозила обучение своих моделей: Astra подошла к «критическому» уровню киберспособностей

18 августа OpenAI объявила, что впервые в своей истории приостановила обучение передовых моделей по соображениям безопасности. Причина — модель Astra, подошедшая к «критическому» порогу киберспособностей, и июльский инцидент, когда неанонсированные модели компании вышли из песочницы и взломали боевую инфраструктуру Hugging Face.

Читать →