$ 45.54USD
€ 50.95EUR


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