0/c/8b7112cbdbbf4234fbfa799e8208241757fffc2e96ce8171922f3859ab52e97754175f25.webp
0/c/8b7112cbdbbf4234fbfa799e8208241757fffc2e96ce8171922f3859ab52e97754175f25.webp

7 октября 2024 года состоялся релиз стабильной версии языка программирования Python 3.13 с экспериментальным JIT-компилятором, улучшенным интерактивным интерпретатором на основе PyPy и экспериментальным режимом сборки free-threaded build mode. Поддержка этой ветки запланирована в течение полутора лет. Потом ещё три с половиной года для Python 3.13 будут выходить исправления с устранением уязвимостей.

По информации OpenNET, основные изменения и добавления в Python 3.13:

• добавлена экспериментальная реализация JIT-компилятора, позволяющего добиться существенного повышения производительности. Для включения JIT в CPython добавлена сборочная опция --enable-experimental-jit, использование которой требует установки LLVM в качестве дополнительной зависимости. Процесс трансляции машинного кода в JIT построен c использованием архитектуры Copy-and-Patch, при которой при помощи LLVM собирается объектный файл в формате ELF, содержащий данные об инструкциях байткода и информацию о необходимой замене данных. JIT заменяет сгенерированные в ходе интерпретации программы инструкции байткода на их представления в машинном коде, попутно подставляя необходимые для вычислений данные (JIT копирует готовые шаблоны уже скомпилированных функций и подставляет в них необходимые значения, такие как аргументы и константы);

• добавлен экспериментальный режим сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock), который включается при помощи опции --without-gil и позволяет избавиться от проблемы с распараллеливанием операций на многоядерных системах, вызванной тем, что глобальная блокировка не допускает параллельное обращение к разделяемым объектам из разных потоков. Отключение GIL приводит к дополнительным накладным расходам, вызванным изменениями в сборщике мусора, системе управления памятью и примитивах для организации блокировок. Например, из-за использования подсчёта ссылок для изоляции потоков наблюдается снижение производительности однопоточных сценариев примерно на 10%. При этом подобные накладные расходы могут компенсироваться распараллеливанием операций;

• предложен новый улучшенный интерактивный интерпретатор, основанный на наработках проекта PyPy и поддерживающий такие возможности, как многострочное редактирование, сохранение и просмотр истории, цветное оформление запросов и трассировок, использование REPL-подобных команд (help, exit, quit) без привлечения функций, интерактивная справка, режим вставки больших блоков кода;

• семантика встроенной функции locals(), возвращающей все локальные переменные и их значения в текущей области видимости, изменена для оптимизированных областей видимости, таких как функции, генераторы и сопрограммы, для которых теперь возвращаются независимые снапшоты выставленных в данный момент локальных переменных и не локальных переменных, отражённых в замыканиях;

• в состав по умолчанию включена изменённая версия библиотеки mimalloc с открытой компанией Microsoft системой распределения памяти, демонстрирующей очень высокую производительность. Библиотека задействована при сборке без GIL;

• обеспечена очистка компилятором лидирующих пробелов из каждой документирующей строки (docstring), что позволило сократить потребляемую память и уменьшить размер кэша с байткодом (файлов *.pyc);

• в модуле dbm реализован бэкенд dbm.sqlite3, который использует SQLite и применяется по умолчанию при создании новых файлов;

• реализована поддержка указания значений по умолчанию в параметрах типов (typing.TypeVar, typing.ParamSpec и typing.TypeVarTuple). Например: '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.

В октябре 2023 года состоялся выпуск языка программирования Python 3.12. Эта ветка будет поддерживаться в течение полутора лет после релиза. Потом ещё три с половиной года для неё будут формироваться исправления с устранением уязвимостей.

Источник: habr.com
Все права защищены. Полное или частичное копирование материалов Сайта в коммерческих целях разрешено только с письменного разрешения владельца Сайта. В случае обнаружения нарушений, виновные лица могут быть привлечены к ответственности в соответствии с действующим законодательством Российской Федерации.
Команда-пресс, 2022 г. 18+
Нашли опечатку? Нажмите Ctrl+Enter
Телефон редакции: +7 (499) 322-15-26
 
load