The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Python 3.13

07.10.2024 23:09

После года разработки опубликован значительный выпуск языка программирования 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-поддержкой.
  • Поддержка платформы wasm32-wasi (WebAssembly System Interface) переведена на второй уровень, на котором сбои блокируют релиз, а вызывающие их изменения исправляются или отменяются в течение 24 часов. Прекращена официальная поддержка платформы wasm32-emscripten.

В ближайшие часы начнётся альфа-тестирование ветки Python 3.14, которая будет находиться на стадии альфа-выпусков в течение семи месяцев, во время которых будут добавляться новые возможности и производиться исправление ошибок (в соответствии с новым графиком разработки работа над новой веткой начинается за пять месяцев до релиза предыдущей ветки и к моменту очередного релиза достигает стадии альфа-тестирования). После этого в течение трёх месяцев будет проводиться тестирование бета-версий, во время которого добавление новых возможностей будет запрещено и всё внимание будет уделяться исправлению ошибок. Последние два месяца перед релизом ветка будет находиться на стадии кандидата в релизы, на которой будет выполнена финальная стабилизация.

  1. Главная ссылка к новости (https://pythoninsider.blogspot...)
  2. OpenNews: В Python добавлен JIT-компилятор
  3. OpenNews: Выпуск языка программирования Python 3.12
  4. OpenNews: Опубликован план избавления CPython от глобальной блокировки интерпретатора
  5. OpenNews: Гвидо ван Россум намерен достигнуть двукратного увеличения производительности в CPython 3.11
  6. OpenNews: Для Python предложен JIT-компилятор, использующий технику copy-and-patch
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62009-python
Ключевые слова: python
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Ivan_83 (ok), 23:36, 07/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Из стандартной библиотеки удалены модули aifc, audioop, chunk, cgi, cgitb, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu, xdrlib и lib2to3, ранее объявленные устаревшими.

    Ага, и заодно по больше фигни типа py-cryptography чтобы зависило от раста, и глядишь питон быстрее загнётся, ибо вместо написания нового функционала все силы будут уходить на поддержку того что было написано в рабочем состоянии.

     
     
  • 2.9, Аноним (9), 23:57, 07/10/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Нужна сильна рука пожизненного диктатора, но он уронил знамя.
     
     
  • 3.102, Аноним (102), 09:15, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Уронил змея
     
  • 2.85, Ароним (?), 06:22, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >вместо написания нового функционала

    Надо больше функционала.

     

  • 1.2, qweo (?), 23:41, 07/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Pythons aren't meant to have gills, anyway. Nor batteries, it seems.
     
     
  • 2.7, Аноним (9), 23:56, 07/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Но ничего лучше питона у нас для вас нет.
     
     
  • 3.86, Аноним (86), 06:25, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >  Но ничего лучше питона у нас для вас нет.

    Тогда, кажется, это именно тот случай когда говорят "suxx to be you".

     
  • 3.98, Аноним (98), 08:43, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Где же вы живёте, что вас заставляют писать на питоне в то время как прогрессивный мир способен использовать современные ЯП? И для чего, самое гланое?....
     
     
  • 4.99, Василий Пупов (?), 09:07, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В современном мире питон будет а топе популярных языков. А вот ты видимо в каком-то своем мире находишься
     
     
  • 5.103, Аноним (103), 09:31, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну когда-то бейсик был так же популярен
     
  • 2.78, Аноним (78), 04:28, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Старые удаляют, новые добавляют. Всë нормально.
     
     
  • 3.88, Аноним (86), 06:28, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Старые удаляют, новые добавляют. Всë нормально.

    ...так что опять питонисты пойдут сотни кода переписывать. Хотя половину, конечно, просто утилизируют - ибо бухать сотни ресурсов в майнтенанс 1-разовых макетов сами понимаете, такое себе.

    > Pythons aren't meant to have gills, anyway.

    Not meant to have GILs? :)) Зато вот на тебе pythonic jit :)

     
     
  • 4.94, Anonimous (?), 07:07, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не думаю. Удалили старые и не нужные в наше время пакеты.
     

  • 1.5, Аноним (5), 23:50, 07/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Для модуля random реализован интерфейс командной строки.

    Если и реализовывать, то не для random, а для secrets.

     
  • 1.10, Аноним (10), 00:00, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По п.1. Неужели нельзя было использовать наработки проектов Nuitka и PyPy для JIT-компилятора, вместо того, чтобы и в Python тащить этот LLVM?
     
     
  • 2.12, 8482 (?), 00:12, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам собери делов то ? Или тут мы уже потихоньку приходим к тому что это не благодатный бесплатный труд?
     
     
  • 3.13, 12yoexpert (ok), 00:22, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    для того и приудумали вещи вроде llvm, чтобы выкинуть свободных разработчиков из индустрии как класс. усложнить проекты до невозможности, чтобы никто в одиночку не смог разобраться
     
     
  • 4.23, 8482 (?), 00:55, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Чё то на сочинял , звучит как: теперь я не смогу поднять стекло с помощью лебедки , ведь мне дали автоматические кнопки и теперь если я смотрю на такой вариатор то мне лень крутить ручку и я лучше нажму кнопку.
     
  • 2.89, Аноним (86), 06:29, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > По п.1. Неужели нельзя было использовать наработки проектов Nuitka и PyPy
    > для JIT-компилятора, вместо того, чтобы и в Python тащить этот LLVM?

    После теплых отношений жабы и гадюки появилось наконец потомство. Правда, никто не понимает что это за зверь такой - но что-то от жабы и гадюки в нем точно есть.

     

  • 1.14, Аноним (14), 00:37, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я так понимаю следующая версия будет последней?)
     
     
  • 2.48, Аноним (48), 02:35, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не, после 3.14 будет 3.141 и далее по списку
     
     
  • 3.100, 1 (??), 09:07, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не TeX.
     

  • 1.15, Вы забыли заполнить поле Name (?), 00:38, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    > Добавлена экспериментальная реализация JIT-компилятора, позволяющего добиться существенного повышения производительности

    Существенной - это какой? Судя по PEP 744 https://peps.python.org/pep-0744/ там не более 5%.

     
  • 1.75, Аноним (75), 03:39, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Обеспечена очистка компилятором лидирующих пробелов из каждой документирующей строки (docstring), что позволило сократить потребляемую память и уменьшить размер кэша с байткодом (файлов .pyc).

    Почему бы их вообще не загружать как-то по требованию? В продакшене они вообще не нужны.

     
     
  • 2.97, Аноним (97), 08:36, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Имеено для этого и существуют pyo-файлы (без docstring-ов).
     

  • 1.76, Аноним (75), 03:41, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Семантика встроенной функции locals(), возвращающей все локальные переменные и их значения в текущей области видимости, изменена

    В минорах начали ломать обратную совместимость?

     
     
  • 2.95, Ggg (?), 07:07, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не минор, это раз в год и всегда так у питона.
     
  • 2.101, 1 (??), 09:08, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как всегда в питоне - вышло обновление, переписывай скрипты.
     
     
  • 3.104, Аноним (103), 09:32, 08/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    не,у меня они на bash
     

  • 1.96, Аноним (96), 07:39, 08/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлен экспериментальный режим сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock), который включается при помощи опции "--without-gil"

    А метастазы асинхронщины где можно и где нельзя уже не убрать.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру