Сравнение Python 3.13.3 и Python 3.12: ключевые отличия

Опубликовано: 27.04.2025
Категория: Python
Теги: #Python
Просмотров: 855

Python 3.13.3 (выпущен 8 апреля 2025 года) представляет собой значительное обновление по сравнению с еще недавно новой версией Python 3.12. Сразу хочется отметить долгожданное многими разработчиками отсутствие GIL. Но начнем по порядку. Вот основные различия между этими версиями:

1. Производительность и многопоточность

  • Экспериментальный режим без GIL: Python 3.13 впервые предлагает экспериментальную сборку без Global Interpreter Lock (GIL), что позволяет потокам работать более параллельно на многоядерных процессорах. В 3.12 такой возможности не было.

  • JIT-компилятор: Добавлен экспериментальный JIT-компилятор (PEP 744), который может значительно ускорить выполнение кода. В 3.12 JIT отсутствовал.

  • Улучшенный сборщик мусора: В 3.13 внесены оптимизации в работу сборщика мусора, что особенно полезно для долго работающих приложений.

2. Интерактивный интерпретатор (REPL)

Python 3.13 получил полностью обновленный интерактивный интерпретатор на основе кода из PyPy с новыми возможностями:

  • Многострочное редактирование с сохранением истории.

  • Подсветка синтаксиса и трассировок по умолчанию.

  • Нативные команды help/exit/quit без вызова как функций.

  • Режим вставки для больших блоков кода (F3).

В Python 3.12 эти улучшения отсутствовали.

3. Сообщения об ошибках и отладка

  • Более точные и информативные сообщения об ошибках, включая подсказки при конфликте имен модулей.

  • Улучшенная подсветка трассировок стека цветом по умолчанию.

  • Более понятные подсказки при неправильных именах аргументов функций.

4. Типизация и аннотации типов

Python 3.13 добавляет несколько новых возможностей для системы типов:

  • typing.ReadOnly для пометки полей TypedDict как доступных только для чтения.

  • Декоратор warnings.deprecated() для маркировки устаревшего кода.

  • Улучшенная поддержка вариативных generics и типизированных исключений.

5. Стандартная библиотека

  • Новый модуль dbm.sqlite3 как backend по умолчанию для DBM.

  • Удаление 19 устаревших модулей ("мертвые батарейки" из PEP 594).

  • Улучшения в модулях argparse, copy, base64 и других.

  • Поддержка записи TOML в tomllib (в 3.12 была только чтение).

6. Платформенная поддержка

  • WASI теперь поддерживается как платформа уровня 2.

  • Добавлена поддержка iOS и Android (уровень 3).

  • Повышен минимальный поддерживаемый уровень macOS до 10.13

7. Прочие улучшения

  • Оптимизация docstrings (удаление начальных отступов) для экономии памяти.

  • Новый C API для работы с системным временем и легковесные мьютексы.

  • Улучшенная поддержка асинхронного кода.

Производительность: тесты

Согласно тестам на процессорах AMD Ryzen 7000 и Intel 13-го поколения:

  • В среднем Python 3.13 показывает прирост производительности 5-15%.

  • Наибольший прирост (до 60%) наблюдается в асинхронных операциях ввода-вывода.

  • Некоторые синтетические тесты показывают замедление до 4%.

Вывод

Python 3.13.3 предлагает значительные улучшения по сравнению с 3.12, особенно в области производительности (JIT, режим без GIL), интерактивной работы (новый REPL) и системы типов. Однако некоторые функции пока остаются экспериментальными и могут быть нестабильны. Для production-окружений рекомендуется тщательное тестирование перед переходом.