Cyber News

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

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

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: кеширование товаров ускоряет магазин, а гостевые заказы привязываются к аккаунту

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

Ноутбук на тёмном рабочем столе разработчика: на экране терминал с выводом менеджера пакетов, рядом клавиатура с подсветкой и внешний SSD. Иллюстрация · изображение сгенерировано ИИCyber News
14 сентября 2026 г.

Homebrew 7.0.0: встроенный сканер уязвимостей, графическое приложение и понижение Intel-маков до Tier 3

13 сентября вышел первый за полтора года мажорный релиз Homebrew: команда brew vulns проверяет пакеты по базе OSV, появилось приложение BrewUI, установка стала параллельной. Intel-маки переведены в третий уровень поддержки — запуск на них отключат в сентябре 2027-го.

Читать →
Крупный план рабочего места разработчика в тёмной графитовой комнате: на большом мониторе запущенная терминальная сессия с логами и редактор кода с подсветкой синтаксиса, позади — второй экран с панелями мониторингаCyber News
11 сентября 2026 г.

OpenAI открыла Agents API: обвязка Codex доступна через один вызов, песочницы — в комплекте

10 сентября OpenAI выпустила Agents API в публичной бете: управляющий слой Codex, долгоживущие сессии, автоматическая компактация контекста, субагенты, MCP и хостируемые песочницы. Разбираем, что это меняет для разработчиков, сколько стоят контейнеры и почему бета пока не подойдёт части команд.

Читать →
Двое инженеров у большого настенного экрана с панелями код-ревью и статусами сборок в тёмной переговорной; на переднем плане коллега с ноутбуком. Иллюстрация · изображение сгенерировано ИИ.Cyber News
10 сентября 2026 г.

Cognition привлекла более $2 млрд при оценке $48 млрд: выручка создателя Devin почти удвоилась за четыре месяца

Разработчик ИИ-агента Devin и владелец Windsurf закрыл раунд Series E на сумму свыше $2 млрд при оценке $48 млрд — почти вдвое больше майской. Ещё показательнее выручка: run-rate вырос с $492 млн до почти $900 млн за четыре месяца. Разбираем, что нового в самом Devin и что это значит для команд.

Читать →