Release of programming language Python 3.13

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

Среди добавленных в 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-поддержкой.
  • Mbështetje për platformën wasm32-wasi (WebAssembly System Interface) është çuar në një nivel të dytë, ku dështimet bllokojnë lëshimin dhe ndryshimet që i shkaktojnë ato rregullohen ose anulohen brenda 24 orëve. Mbështetja zyrtare për platformën wasm32-emscripten është ndaluar.

Në orët e ardhshme do të fillojë testimi alfa i degës Python 3.14, e cila do të jetë në fazën e lëshimeve alfa për shtatë muaj, gjatë të cilëve do të shtohen mundësi të reja dhe do të bëhen rregullime gabimesh (sipër bazës së re të zhvillimit, puna për degën e re fillon pesë muaj para lëshimit të degës së mëparshme dhe në momentin e lëshimit tjetër arrin fazën e testimit alfa). Pas kësaj, për tre muaj do të zhvillohet testimi i versioneve beta, gjatë të cilit do të ndalohet shtimi i mundësive të reja dhe gjithë vëmendja do t'i kushtohet rregullimit të gabimeve. Dy muajt e fundit para lëshimit, dega do të jetë në fazën e kandidatëve për lëshim, ku do të realizohet stabilizimi përfundimtar.

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster