Python 3.15: UTF-8 за замовчуванням та нові можливості

Python 3.15.0 стабільної версії офіційно випущено 9 жовтня. Цей реліз, що став значним кроком вперед порівняно з попередньою версією 3.14, приносить низку нових функцій та оптимізацій продуктивності. Робота над цим випуском включала 5 643 комітів коду від 1 012 співавторів, що підкреслює колективні зусилля спільноти Python.
Ключові нововведення на рівні інтерпретатора
Python 3.15 запроваджує кілька важливих змін на рівні інтерпретатора, що впливають на базову функціональність мови:
- PEP 661: Вбудований тип Sentinel — додано спеціалізований тип для створення унікальних, незмінних об’єктів-сторожів, що спрощує порівняння та покращує читабельність коду.
- PEP 686: UTF-8 за замовчуванням — кодування UTF-8 тепер використовується за замовчуванням для всіх файлів та системних операцій, що спрощує роботу з різними мовами та символами, усуваючи потенційні проблеми з локалізацією.
- PEP 698: Розпакування у Comprehensions — операції розпакування тепер підтримуються безпосередньо у виразах-генераторах (comprehensions), роблячи код більш лаконічним та виразним.
- PEP 810: Явні відкладені імпорти (Lazy Imports) — нова можливість дозволяє відкладати імпорт модулів до моменту їх фактичного використання, що може значно прискорити час запуску програм, особливо складних.
- PEP 814: Вбудований тип frozendict — додано новий незмінний тип словника (immutable dictionary), який корисний для створення константних колекцій даних та покращення безпеки даних.
- PEP 829: Конфігураційні файли для пакетів — тепер можна визначати файли конфігурації на рівні пакетів, що спрощує налаштування поведінки окремих бібліотек.
Експериментальний JIT-компілятор значно покращено
Експериментальний компілятор Just-In-Time (JIT) отримав серйозні оновлення. На платформі x86-64 Linux середній приріст продуктивності досягає 7-8% порівняно зі стандартним інтерпретатором. Для платформи AArch64 macOS швидкість виконання зросла на 11-12% у порівнянні з інтерпретатором, що підтримує хвостову рекурсію.
Оптимізація повідомлень про помилки
Повідомлення про помилки стали більш інформативними та зрозумілими, що полегшує процес налагодження коду.
Оновлення стандартної бібліотеки
Стандартна бібліотека Python також отримала значні покращення:
- PEP 799: Інструментарій для профілювання — додано спеціалізований пакет інструментів для управління та використання інструментів профілювання (profiling tools) у Python.
- PEP 799: Tachyon Profiler — представлено новий високочастотний статистичний профайлер Tachyon, що дозволяє глибше аналізувати продуктивність програм.
- Кольорове виділення виводу — термінальний вивід та повідомлення про помилки тепер підтримують більше опцій кольорового виділення, що покращує візуальне сприйняття та швидкість аналізу інформації.
Нововведення у системі типів
Система типів Python стала потужнішою завдяки наступним додаткам:
- PEP 728: TypedDict з додатковими ключами — тепер можна визначати TypedDict з підтримкою додаткових, нетипізованих пар ключ-значення.
- PEP 747: Анотація типів за допомогою TypeForm — введено новий спосіб анотування самих типів за допомогою TypeForm.
- PEP 800: Механізм взаємовиключних базових класів — в системі типів реалізовано механізм, що запобігає успадкуванню від несумісних базових класів.
Покращення C API
Для розробників, що працюють з C API, доступні такі нововведення:
- PEP 782: PyBytesWriter — новий C API для ефективного створення об’єктів bytes.
- PEP 788: Захист від передчасної фіналізації — додано механізми для запобігання передчасному завершенню об’єктів у C API.
- PEP 803, 820, 793: Стабільний ABI для Free-threaded Builds — забезпечено стабільний інтерфейс бінарних програм (Stable ABI) та відповідні C API для збірок Python без глобальної блокування інтерпретатора (Global Interpreter Lock), що дозволяє ефективніше використовувати багатопоточність.
Зміни у конфігурації збірки
PEP 831: Увімкнення покажчиків стеку за замовчуванням — покажчики стеку (stack frame pointers) тепер увімкнені за замовчуванням, що значно полегшує системну діагностику та аналіз продуктивності на низькому рівні.
Зміни в офіційних дистрибутивах
Офіційні дистрибутиви Python також зазнали змін:
- Windows (64-bit): попередньо скомпільовані двійкові пакети тепер за замовчуванням використовують інтерпретатор з підтримкою хвостової рекурсії.
- macOS: попередньо скомпільовані пакети тепер за замовчуванням містять підтримку free-threaded builds.
Випуск Python 3.15.0 знаменує собою важливий етап у розвитку мови, пропонуючи розробникам потужніші інструменти, покращену продуктивність та спрощену роботу з кодуванням. Детальніше з усіма змінами можна ознайомитись у офіційній документації.
Джерело: https://www.ithome.com/1/011/316.htm