Мемо: в ожидании Python 3.14
Финальный релиз Python 3.14 запланирован на 7 октября 2025. Уже вышел RC2 (14 августа), а финальный кандидат RC3 ожидается 16 сентября.
Этот пост — краткая шпаргалка, чтобы помнить, какие изменения стоит протестировать и чего ждать в новой версии.
1. Свободная многопоточность (Free-Threaded Python, без GIL)
Зачем нужно: наконец-то полноценный параллелизм и многопоточность на многоядерных системах без глобальной блокировки интерпретатора.
# Включение free-threaded режима при сборке # ./configure --disable-gil import threading def cpu_bound_task(n): return sum(i*i for i in range(n)) threads = [threading.Thread(target=cpu_bound_task, args=(10**6,)) for _ in range(4)] [t.start() for t in threads] [t.join() for t in threads]
Free-Threaded Python теперь не будет экспериментальным и будет официально поддерживаться, но пока пока будет являться опциональным, по умолчанию остаётся GIL.
2. Отложенная оценка аннотаций типов
Зачем нужно: ускорение работы и избавление от кавычек при forward references. Появился новый модуль annotationlib для работы с аннотациями.
# from __future__ import annotations import annotationlib class Node: def __init__(self, value: int, next: Node | None = None): self.value = value self.next = next print(annotationlib.get_annotations(Node.__init__))
Аннотации больше не обрабатываются при определении функций, классов и модулей. Они сохраняются в специальных функциях аннотирования и обрабатываются при необходимости.
Импорт from future import annotations можно удалить при поддержке Python 3.14 и новее.
3. Template-строки (t-строки)
Зачем нужно: безопасное форматирование строк, полезное для веба и DSL, расширение возможностей f-строк.
name = "<script>alert('xss')</script>" age = 25 tpl = t"Hello {name}, you are {age}" safe = tpl.format(name=escape_html(name), age=age) print(safe)
4. Zstandard-сжатие
Зачем нужно: современный алгоритм сжатия, быстрее gzip и удобнее для больших блоков данных.
import compression.zstd data = b"Large dataset" * 1000 compressed = compression.zstd.compress(data, level=3) decompressed = compression.zstd.decompress(compressed) print(f"Ratio: {len(data) / len(compressed):.2f}")
5. Удалённая отладка процессов
Зачем нужно: можно подключать отладчик к работающему приложению без перезапуска и накладных расходов.
import sys import pdb # Подключение отладчика к работающему процессу sys.remote_exec(""" import pdb; pdb.set_trace() """, target_pid=12345) # Безопасное выполнение кода в удаленном процессе result = sys.remote_exec("print('Debug info:', some_variable)", target_pid=12345)
6. Экспериментальный JIT-компилятор
Зачем нужно: ускорение выполнения вычислительно интенсивных задач.
# Включается флагом при запуске # python --jit script.py def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) # JIT автоматически оптимизирует "горячие" функции result = fibonacci(35) # Заметно быстрее с JIT
7. REPL с подсветкой синтаксиса
Зачем нужно: удобнее писать и отлаживать код прямо в интерактивной оболочке.
>>> def hello(name: str) -> str: ... return f"Hello, {name}!" >>> hello("World") 'Hello, World!'
Что стоит попробовать?
Потестировать free-threaded режим на CPU-нагруженных задачах.
Перейти на новый синтаксис аннотаций без кавычек.
Проверить t-строки в веб-шаблонах и DSL.
Протестировать
zstdдля больших массивов данных.
Ожидается значительное улучшение производительности многопоточных приложений и удобства разработки.
Подробнее на python.org: What’s new in Python 3.14
