Мемо: в ожидании 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