LINUX.ORG.RU

Python 3.13

 , ,


1

5

После года разработки вышла новая стабильная версия интерпретируемого языка программирования Python 3.13. Релиз включает изменения в собственно языке и его стандартной библиотеке. К важнейшим изменениям относятся использование нового интерактивного интерпретатора по умолчанию, экспериментальная поддержка работы в режиме free-threaded (т. е. с отключением global interpreter lock) (PEP 703), и JIT-компилятор (PEP 744).

С этого релиза осуществлён переход на новый цикл релизов Python (Annual Release Cycle for Python, PEP 602), в связи со стремлением расширить период «полной поддержки» новых выпусков:

  • Python 3.9–3.12 имеют полтора года полной поддержки, за ними следует три с половиной года исправления брешей в безопасности.
  • Python 3.13 и более поздние релизы будут иметь два года полной поддержки и три года исправлений уязвимостей.

Продолжается работа по усовершенствованию сообщений об ошибках. Теперь traceback’и по умолчанию подсвечиваются цветом. Встроенная функция locals() теперь имеет определённую семантику для изменения возвращаемого меппинга (PEP 667), а параметры типов (typing.TypeVar, typing.ParamSpec, typing.TypeVarTuple) поддерживают значения по умолчанию (PEP 696).

Изменения стандартной библиотеки включают удаление устаревших API и модулей (aifc, audioop, cgi, cgitb, chunk, crypt, imghdr, mailcap, msilib, nis, nntplib, ossaudiodev, pipes, sndhdr, spwd, sunau, telnetlib, uu и xdrlib), а также привычные улучшения в области дружелюбия к пользователю и корректности. Несколько модулей исключены из поставки в связи с объявлением их устаревшими в Python 3.11 (PEP 594), в том числе инструмент и библиотека 2to3.

Из улучшений безопасности стоит отметить, что ssl.create_default_context() устанавливает флагами по умолчанию ssl.VERIFY_X509_PARTIAL_CHAIN и ssl.VERIFY_X509_STRICT.

Добавлена поддержка платформ: Apple iOS и Android теперь официально поддерживаемые платформы (tier 3) (PEP 730, 738). wasm32-wasi поддерживается на уровне tier 2, прекращена официальная поддержка wasm32-emscripten.

Для более основательного ознакомления с нововведениями релиза, обращайтесь к официальной документации (по библиотеке, по языку). Руководствуйтесь статьей «Переход на Python 3.13» для обновления своих проектов на новую версию языка. Также см. changelog.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 7)
Ответ на: комментарий от AntonI

А что старый интерпритатор у тебя с компа удаляют? Мне казалось что даже старинное говно работает, ну а когда по прошествии 10-15 лет старый интерпритатор делается деприкейтед, то наверное пора переписывать свою лапшу если она всё ещё нужна. А если не нужна, то туда ей и дорога.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

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

Мне казалось что даже старинное говно работает, ну а когда по прошествии 10-15 лет старый интерпритатор делается деприкейтед, то наверное пора переписывать свою лапшу если она всё ещё нужна.

Тебе именно что казалось, на самом деле это НЕ так. Пока старый код работает и удовлетворяет всем требованиям его НЕ надо переписывать.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Бинарники поставляй, что ещё остаётся. У всех интерпретируемых такая беда.

InterVi ★★★★★
()
Ответ на: комментарий от AntonI

Ну если тебе на пенсию нескоро, и ты собираешься дальше работать, то лучше переписать, пришедший на твое место соевый обрыган, который увидит древнее говно мамонта может высрать тонны кирпичей и начать тебя пиарить в сети. Будет неприятно, если тебя будущие раб_отодатели попытаются гуглить, а там первая тема про Antonl, который за 20 лет не осилил 500 строчек с Python 2 на Python 3 переписать… В общем, перед увольнением хоть перепиши

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от alt-tab-let

Наоборот замечательно. bytes.decode() и string.decode() для явного преобразования и отлично.

no-dashi-v2 ★★★
()
Ответ на: комментарий от rtxtxtrx

А почему именно deepseek? Впервые вижу, поиграюсь на днях, но хотелось бы узнать отзыв от реального пользователя.

Irben ★★★
()
Ответ на: комментарий от rtxtxtrx

Это все не аргументы. Там побольше 500 строчек и главное непонятно- почему я должен тратить время на переписывание нормально работающего кода? Когда то в его создание было вложено много сил, почему я должен спускать это в помойку?!

Работодатели меня оценивают по другим критериям.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

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

Docker?

MOPKOBKA ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Я не поставлю докер на кластере. Даже если это возможно, это будет последнее чем я буду заниматься. А пользователи моего кода этим не будут заниматься абсолютно точно.

У нас код распространяется в сырцах и собирается на конкретной машине с максимально возможными оптимизациями. Традиция-с.

AntonI ★★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от AntonI

Это ты описал использование Docker как помощника для запуска приложения.

Я предлагал подготовить контейнер где будут нужные версии компиляторов, библиотек, python2, может даже настроенный редактор, и использовать его именно как окружения для разработки, где сразу можно будет сделать cmake --build и все твои библиотеки соберутся. И в нем собирать приложения для кластера, а не ставить весь докер с этим контейнером в кластер.

Такой контейнер можно будет развернуть на любой ОС, и поднять одной командой за пару минут на любом новом компьютере.

Ставил Visual Studio? Там в комплекте идет компилятор, ide, системы сборки, библиотеки, короче все нужное, вот можно из Docker такой установщик сделать.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от dicos

Можно почитать обсуждение, со временем многое отвалилось, библиотеки на которых он построен устарели, и он сам получается тоже.

Переписать его можно, но желающих нету. Это проблема некоторых OpenSource проектов, все хотят делать новое, а не поддерживать старый код, это обычно делают только за деньги. Видимо команда Python считает что инновации важнее сохранения совместимости.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Возможно, я не специалист. Но у нас так не делает никто, за исключением каких то коммерсов, и то кмк они просто не хотели сырцы отдавать.

На кластерах довольно специфические компайлеры стоят, иногда проприентарные, как я это себе в докер затащу? И, главное, - у нас юзеры не программисты как правило, а физики.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

На кластерах довольно специфические компайлеры стоят, иногда проприентарные, как я это себе в докер затащу?

Так же как и в linux, docker похож на chroot, с тем что бы в chroot поставить компилятор думаю проблем не возникнет.

И, главное, - у нас юзеры не программисты как правило, а физики

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

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

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от Playermet

В смысле? Я же кучу примеров привел когда ближайший аналог функции str в других языках принимает на вход все тот же массив байт и имеет на выходе строковый тип, при этом результат содержит все что угодно кроме исходной строки. Объясни конкретно в чем разница.

ну если ты не получаешь строку, ты получаешь что-то, что, вероятно, можно получить строку

нигде ты не получаешь строку, именно строку, но с кракозяблами «мама смотри что я нарисовала»

alt-tab-let ★★
()
Ответ на: комментарий от AntonI

Твой оптимизм быстро сдуется после общение с 22 y.o. сеньор рекрутерша, которая вчера ссаться перестала, но у нее есть власть, данная ей дефективным менегером, она может ничего гуглить и не будет, но забракует тебя, если не найдет 100% совпадение баззвордов в резюме и требованиях в описании вакансии, сгенерированном ChatGPT… Те у нас на входе идиотка, которая выбирает тупо по красивому резюме или фоточке в профиле, а на втором этапе тебя оценивать будет дурачок, которого она наняла, он тебя завалит уже какой хренью типа паттернов или вопросом можно ли set() использовать как ключ словаря, у нормального человека потребность такое проверять никогда не возникнет как и пытаться яйцами остановить ленту бензопилы, но у 22 y.o. сеньора квадробобера мнение другое… Тебя могут тупо не взять потому что ты уже старый…

rtxtxtrx ★★
()
Ответ на: комментарий от rtxtxtrx

В академии и инженерии разные цели и приоритеты. Если код реализует некую нетривиальную модель, которую можно изучать, пописывая статьи, проводя практикумы, тогда насрать, что оно реализовано на втором питоне, а не на третьем. И тем более насрать, что там по этому поводу думают мамкины хакеры.

seiken ★★★★★
()
Ответ на: комментарий от seiken

Сеньор квадробобик, который не знает ни физики, ни математики (даже если он учился в «лучшем» вузе страны, где свои сомнительные идеи преподает тот же упаси господе Столяров), просто забьет запрос в нейросетку и сделает за пару часов то над чем корпел Анатоль месяц, его спасает лишь то, что квадробобики в айти пошли ради денег, а в госах платят мало

rtxtxtrx ★★
()
Ответ на: комментарий от qulinxao3

Шекли умер в нищете, будучи любимым и известным в этой стране… Я помню лишь, что читал «Обмен разумов», когда увидел что ты написал, то у меня сложилось впечатление, что это рассказ, который выпустили по мотивам, прикрываясь именем автора, так нигде не видел его в сборниках… Я прочитал аннотацию, у меня сомнния не исчезли, потому как в оригинале его нигде не нашел… И конечно же я такое читать не хочу, потому как там нет инопланетян

rtxtxtrx ★★
()
Ответ на: комментарий от MOPKOBKA

Все равно странная позиция, язык вроде как хочет позицировать себя как enterprise, но питонячий код ломается при переходе на следующую версию.

dicos ★★
()
Ответ на: комментарий от rtxtxtrx

это ровно дайджест рассказа

о очередном демоне максвелла

qulinxao3 ★★
()
Ответ на: комментарий от alt-tab-let

ну если ты не получаешь строку, ты получаешь что-то, что, вероятно, можно получить строку

Нет, не получаю. Чтобы получить строку, мне нужно вызвать аналог .decode() и передать в него массив байт. Прям как в Python3.

нигде ты не получаешь строку, именно строку, но с кракозяблами

Везде я получаю намного хуже, чем просто строку с префиксом в кавычках, которые вообще никак не мешают чтению глазами, и элементарно удаляются при чтении кодом.

Playermet
()
Ответ на: комментарий от rtxtxtrx

Я хотел выпустить одну приколюху, которую в python 2 сделал бы за 10 минут
https://chat.deepseek.com/ он код лучше тебя пишет, инфа сотка.

А страница регистрации так и должна выглядеть?

https://i.ibb.co/193TNsW/2024-10-10-09-52-56.png

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Нет. У тебя какой-то firefox древний, либо ты систему сломал. У меня стоит ff из flatpak (я им не пользуюсь, использую Brave) и там все нормально выглядит

rtxtxtrx ★★
()
Ответ на: комментарий от perl5_guy

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

nuxster ★★★
()
Ответ на: комментарий от nionio35

питон 2 был еще и быстрее 3.

сеанс, так называемого, вранья (с)

[ec2-user@ip-10-10-151-202 ~]$ time python2 test.py
102334155

real	0m35.861s
user	0m35.852s
sys	0m0.008s

[ec2-user@ip-10-10-151-202 ~]$ time python3 test.py
102334155

real	0m21.820s
user	0m21.816s
sys	0m0.004s

[ec2-user@ip-10-10-151-202 ~]$ cat test.py
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

if __name__ == "__main__":
    print(fibonacci(40))

FishHook
()
Ответ на: комментарий от MOPKOBKA

Докер он как раз для того что бы меньше разбираться,

В реальности вот прямо сейчас уже который день пытаемся понять, кто виноват в глюках DNS: сервер в локалке или настройки докера.

olegd ★★★
()
Ответ на: комментарий от alt-tab-let

%s вроде появилась именно в 3.3. до этого это была ересь и догма, что только .format спасёт родину, а желающие %s приговариваются к расстрелу. но как-то вернули, и никто не помер.

https://docs.python.org/3.0/whatsnew/2.6.html#pep-3101-advanced-string-formatting

In Python 3.0, the % operator is supplemented by a more powerful string formatting method, format(). Support for the str.format() method has been backported to Python 2.6.

А %s использовались именно в сочетании с оператором %. Получается, если ты не застал время до холиваров, когда требовали отказаться от %s в пользу format(), ты начал осваивать Питон, когда 2.6 был прочно укоренившимся мэйнстримом, 3.0 — экспериментальной маргинальщиной, а 2.5 — отжившим старьём. Так?

question4 ★★★★★
()
Ответ на: комментарий от FishHook

сеанс, так называемого, вранья (с)

Если взять столь любимые им преобразования стрингов в bytes, python2 быстрее. По очевидным причинам.

$ time python3.12 -c "[ bytes('asdfg', 'ascii') for _ in range(10000000)]"

real    0m3,853s
user    0m3,548s
sys     0m0,302s

$ time python2.7 -c "[ bytes('asdfg') for _ in xrange(10000000)]"

real    0m2,574s
user    0m2,537s
sys     0m0,038s
question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Не сделает, проходили.

Но бабок возьмёт, а вы ему заплатите, а потом будете удивляться почему его говноподелка так красиво проходила простые синтетические тесты, но не работает на реальных задачах.

AntonI ★★★★★
()
Ответ на: комментарий от alt-tab-let
Ответ на: комментарий от question4

Если взять столь любимые им преобразования стрингов в bytes

да тоже херня

[ec2-user@ip-10-10-51-202]$  time python3 -c "[ bytes('asdfg' * 10000, 'ascii') for _ in range(100000)]"

real	0m3.699s
user	0m0.955s
sys	0m2.873s

[ec2-user@ip-10-10-51-202]$  time python2 -c "[ bytes('asdfg' * 10000) for _ in xrange(100000)]"

real	0m3.688s
user	0m0.904s
sys	0m2.783s

В пределах погрешности

FishHook
()
Ответ на: комментарий от MOPKOBKA

Не уверен что докер будет корректно работать под mpi например

AntonI ★★★★★
()
Ответ на: комментарий от alt-tab-let

А что должно смущать? Ты писал что-то про изменение содержимого, но я никакого изменения содержимого не вижу, ни в случае 2й версии, ни в случае 3. Везде содержимое объекта очевидно abcde. А если тебя смущает различное форматирование вывода, то оно отличется и во 2й версии в твоём же примере. Не говоря уже о том, что это вполне в твоих силах управлять форматированием вывода если это для тебя критично.

andalevor ★★★
()
Ответ на: комментарий от alt-tab-let

b’abcde’, тупо изменяя содержимое байт

ты путаешь содержимое и форматирование. зачем?

andalevor ★★★
()
Ответ на: комментарий от Desmond_Hume

Ну прям как в старой фидошной конференции SU.CHAINIK.:) Aж прослезился... :)

Туда периодически приходили монстры «чисто приколоться» с вопросами типа «Дайте мне строчку инициализации для нуль-модема» :)

gns ★★★★★
()
Ответ на: комментарий от Obezyan

На первом курсе нам мешала спать романтика, потом нам мешали спать романтики...

gns ★★★★★
()
Ответ на: комментарий от AntonI

С каждый годом установка py2 требует все больших усилий

Интересно, откуда для него теперь пакеты брать? В pip только третья версия поддерживается, по идее. Кроме как собрать и опакетить их вместе со старым интерпретатором, других вариантов, получается, не осталось

hateWin ★☆
()
Ответ на: комментарий от hateWin

Я собираю из сырцов, пакеты через pip - но с pipом уже проблемы, да

AntonI ★★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)

Товарищи ученые! Доценты с кандидатами! Может я чего-то не понимаю в вашей высоколобой специфике, но решил я проверить и, так сказать, на личном примере прочувствовать глубину и невыносимость вашей боли. Взял Убунту 22.04, свеженькую и чистенькую. Нагуглил актуальный на сегодня топ научных библиотек для питона. И все их без проблем накатил на второй питон.

ubuntu@ubuntu:~$ pip2 freeze
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
backports.functools-lru-cache==1.6.6
cycler==0.10.0
kiwisolver==1.1.0
matplotlib==2.2.5
numpy==1.16.6
pandas==0.24.2
plotly==4.14.3
pyparsing==2.4.7
python-dateutil==2.9.0.post0
pytz==2024.2
retrying==1.3.4
scipy==1.2.3
seaborn==0.9.1
six==1.16.0
subprocess32==3.5.4
ubuntu@ubuntu:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
ubuntu@ubuntu:~$ 

и, собственно, чего не хватает то?

FishHook
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.