LINUX.ORG.RU

Python 3.13

 , ,


0

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 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.