Выпущена новая версия Python 3.13

Год разработки завершился публикацией новой версии выпуска Python 3.13.
В новой ветке поддержка будет осуществляться полтора года, затем еще три с половиной года для нее будут создаваться обновления, устраняющие уязвимости.
📌На Python телеграм канал: https://t.me/pythonl
Новшества в Python 3.13 включают:
- Экспериментальную реализацию JIT-компилятора, повышающую производительность. В CPython добавлена сборка с опцией “–enable-experimental-jit”. Для ее использования требуется установка LLVM в качестве дополнительной зависимости. Трансляция машинного кода в JIT построена на архитектуре “Copy-and-Patch”. Она использует LLVM для создания объектного файла формата ELF, который содержит данные об инструкциях байткода и информацию о необходимых заменах данных. JIT заменяет сгенерированные инструкции байткода на их представления в машинном коде, одновременно подставляя нужные для вычислений данные. Копируются готовые шаблоны уже скомпилированных функций и в них подставляются необходимые значения, такие как аргументы и константы.
- В Python 3.13 добавлен экспериментальный режим сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock), который включается опцией “–without-gil”. Это решение проблемы с распараллеливанием операций на многоядерных системах, вызванных ограничением доступа к разделяемым объектам из разных потоков. Отключение GIL ведет к дополнительным накладным расходам, связанным с изменениями в управлении памятью и блокировках. Однако эти затраты могут быть компенсированы распараллеливанием операций.
- Представлен новый улучшенный интерактивный интерпретатор, основанный на наработках PyPy. Он поддерживает многострочное редактирование, сохранение и просмотр истории, цветовое оформление запросов и трассировок, поддержку REPL-подобных команд (help, exit, quit и др.), интерактивную справку и режим вставки больших блоков кода.
- Семантика встроенной функции locals() была изменена для оптимизированных областей видимости, таких как функции, генераторы и сопрограммы. Теперь она возвращает независимые снапшоты локальных переменных и не локальных переменных, отраженных в замыканиях.
- В состав по умолчанию включена измененная версия библиотеки mimalloc от Microsoft, которая демонстрирует высокую производительность. Эта библиотека используется при сборке без GIL.
- Компилятор очищает лидирующие пробелы из каждой документирующей строки (docstring), что уменьшает потребление памяти и размер кэша с байткодом.
- В модуле dbm реализован бэкенд dbm.sqlite3, использующий SQLite и применяемый по умолчанию при создании новых файлов.
- Поддержка указания значений по умолчанию в параметрах типов реализована через аннотацию ‘T = TypeVar(“T”, default=int)’.
- Аннотация typing.TypeIs для уточнения типов стала более интуитивной, чем typing.TypeGuard.
- Аннотация typing.ReadOnly позволяет помечать элементы TypeDicts, доступные только для чтения.
- Функция warnings.deprecated() добавлена для пометки устаревших элементов в системе типов.
- Модули aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib и lib2to3 были удалены из стандартной библиотеки как устаревшие.
- В модуль copy добавлена функция copy.replace().
- В модуль os добавлены функции для работы с таймером через дескрипторы timerfd.
- Для модуля random реализован интерфейс командной строки.
- Прекращена поддержка версий macOS c 10.9 по 10.12.
- Обеспечена поддержка мобильных платформ iOS и Android, которая отнесена к третьему уровню (Tier 3), на котором гарантируется надёжная сборка и как минимум один ключевой разработчик обеспечивает сопровождение платформы, но связанные с платформой сбои не блокируют релиз и не охватываются SLA-поддержкой.
- Поддержка платформы wasm32-wasi (WebAssembly System Interface) переведена на второй уровень, на котором сбои блокируют релиз, а вызывающие их изменения исправляются или отменяются в течение 24 часов. Прекращена официальная поддержка платформы wasm32-emscripten.
Альфа-тестирование ветки Python 3.14 начнется в ближайшие часы. Она будет находиться на стадии альфа-выпусков семь месяцев, в течение которых будут добавляться новые возможности и исправляться ошибки. По новому графику разработки, работа над новой веткой начинается за пять месяцев до релиза предыдущей ветки и достигает стадии альфа-тестирования к моменту очередного релиза. Затем в течение трех месяцев будет проходить тестирование бета-версий, где добавление новых возможностей будет запрещено, и вся энергия будет направлена на исправление ошибок. За два месяца до релиза ветка перейдет в стадию кандидата в релизы, где будет проведена окончательная стабилизация.