dovidnyk

Випуск мови програмування Python 3.14



Середа 08 Жов 2025

Після року розробки опубліковано значний випуск мови програмування Python 3.14. Нова вітка буде підтримуватися протягом півтора року, після чого ще три з половини року для неї не будуть формуватися ісправлення з усуненням уязвимостей.

Серед новин, доданих у Python 3.14 (1, 2, 3): 

Реалізована офіційна підтримка збірки CPython без глобальної блокування інтерпретатора (GIL, Global Interpreter Lock). Збірка без GIL дозволяє позбавитися від проблем з розпалюванням операцій на багатоядерних системах, викликаних тим, що глобальна блокування не допускає паралельне звернення до розділених об'єктів з різних потоків. Відключення GIL призводить до додаткових вкладних витрат, визваних змінами в збірці мусора, системі управління пам'яттю та примітивах для організації блокировок. Наприклад, із-за використання підрахунку ссылок для ізоляції потоків спостерігається зниження продуктивності однопоточних сценаріїв приблизно на 10%. При цьому подібні накладні витрати можуть компенсуватися розпараллеливанием операцій. 
Додана підтримка t-строк (буквально з префіксом 't'), що дозволяє використовувати синтаксис, схожий на f-строки, для створення власних обробників шаблонів у рядках. На відміну від f-строк t-строки повертають об'єкт, роздільно зберігаючи статичні рядкові дані та надані значення. Раздельное хранение дозволяє зв'язувати власні обработчики, що впливають тільки на підставні значення. Наприклад, можна підключити обробник для перекладу поданих значень у верхній реєстр або для екранування спецсимволів при підстановці в рядку зовнішніх даних. 


У стандартну бібліотеку додано модуль concurrent.interpreters, який дозволяє одночасно виконувати в одному процесі кілька ізольованих інших копій Python-інтерпретатора. Раніше дана можливість була доступна тільки через C-API. Одночасне виконання кількох інтерпретаторів може використовуватися для розпалювання операцій за аналогією із запуском кількох паралельно виконуваних процесів, але на відміну від багатопроцесорної моделі витрачається менше ресурсів. На рівні додатків для розділення операцій за інтерпретаторами можуть використовуватися моделі гравців і CSP (взаємодія послідовних процесів). 
У CPython реалізований новий тип інтерпретатора, що використовує хвостові виклики між C‑функціями, реалізуючи окремі байтки Python, замість однієї великої функції з вираженим switch/case. При зборі в Clang 19 новий інтерпретатор демонструє підвищення продуктивності на 3-5% при виконанні тестів pyperformance. Новий інтерпретатор доступний у якості опцій для архитектури x86-64 і AArch64 і вимагає для збірки мінімум версії Clang 19 (підтримка GCC обіцяє пізніше). 
Забезпечена відкладена обробка анотацій для функцій, класів і модулів. Анотації тепер не обробляються відразу, а зберігаються у формі спеціальних функцій і вираховуються при виникненні необхідності. Нова поведінка дозволяє спростити роботу з анотаціями та знизити вкладні витрати на обробку анотації під час виконання. Для інспектування відкладених анотацій запропоновано модуль annotationlib. 
У стандартну бібліотеку додано пакет стиснення, що забезпечує функції стиснення та розпакування даних за допомогою різних алгоритмів. Крім модулів compression.lzma, compression.bz2, compression.gzip і compression.zlib, що надають доступ до функціональності, раніше доступної в модулях lzma, bz2, gzip і zlib, додано новий модуль compression.zstd з реалізацією алгоритму ZSTD (Zstandard). 
У виразах "except" і "except*" дозволено не поміщати вміст у скобки, якщо у вираженні показано кілька виключених типів і не використовується ключове слово "as". 


В інтерактивній оболонці PyREPL реалізована підсвітка синтаксису. Включений кольоровий висновок в CLI-утилітах з модулів unittest, argparse, json і calendar. 
Доданий інтерфейс для підключення зовнішніх відладчиків і профілювачів до вже працюючих процесів CPython, не вимагає встановлення та перезапуску та не впливає на продуктивність. 
У модуль pdb додана підтримка видаленого підключення до працюючих Python-процесів. Наприклад, для підключення до процесу з номером 1234 можна використовувати команду "python -m pdb -p 1234". 
У модуль uuid додані функції uuid6(), uui

Переглядів: 17

Схожі статті


Подати оголошення
  • Новини
  • Учбові посібники
  • Зворотній зв'язок
  • Партнери
  • Нові оголошення
  • Нові компанії