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)
Ответ на: комментарий от alt-tab-let

В отличие от объектов, чисел, структур (список, словарь…), байты не всегда можно однозначно привести к строке. Я считаю что попытка применить str к байтам вообще должна приводить к ошибке независимо от того что в этих байтах лежит.

UPD: Ну т.е. ИМХО поведение ни в 2, ни в 3 адекватным назвать нельзя, учитывая что мы имеем дело с языком с сильной типизацией, а не Перлом, Си или Джаваскриптом.

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

пусть бы и делали - не можем привести к строке, падаем. но мы то можем, и даже выдаём эту самую строку. но зачем-то рисуем сверху никому не нужные кракозяблы. почему 800 лет в python без этих кракозябл жили и были все довольные, а в 3м надо было так тупануть на ровном месте.

вообще - любое решение, падать, не падать, выдавать строку, делить Польшу, что угодно - однозначно лучше, чем выдавать строку, но рисовать на ней b"

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

я знаю, как это решить 100 более простыми способами

я только говорил о том запое, в котором проектировщики py3 эту фичу делали. как исправить для себя - я знаю, я сразу написал про обёртку.

alt-tab-let ★★
()

мы в top3. но до lagrange очень далеко. надо чёбы разрабы по-быстрому ещё чё-нибудь сломали, тогда и до gnome47 дотянемся

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

Ну так сделали чтобы не падало, а также тебе прямым текстом говорят, что это bytes. Что не так?

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

я-то в отличие от тебя это всё прекрасно знаю, и зачем нужен асинк/авейт прекрасно знаю.

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

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

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

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

TypeError: can only concatenate list (not «dict_items») to list

прикольно. str(b'abc') выдаёт тип строка, хоть и является какой-то мурзилкой внутри

зато dict.items() у нас теперь не list, а некий dict_items, и его надо называть Капитан list(dict.items())

вы уж определитесь, вы за белых или за красных?

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

10 лет игнорировали весь прогресс в мире программирования на питоне

Так прогресс в мире программирования или на питоне?

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

зато dict.items() у нас теперь не list, а некий dict_items, и его надо называть Капитан list(dict.items())

Претензии уровня пихать в жопу банки было раньше удобнее. Их не надо пихать куда не следует… Я не пользуюсь вторым питоном более 10 лет и радуюсь жизни, и я уже забыл насколько он был «прекрасен».

вы уж определитесь, вы за белых или за красных?

За голубых (просто люблю голубой цвет). Так пойдет?

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

Под капотом там вроде бы одно из трех:

  1. нуль-терминированная С-строка
  2. строка (массив байт) с длиной в отдельном поле
  3. нуль терминированная строка с длиной в отдельном поле

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

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

Прогресс - это просто развитие языка в третьей ветке. Вторая не развивалась с 2010, там лишь правились ошибки

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

Лично мне по большому счёту этот прогресс и не нужен был никогда. С одной стороны, мечталось бы о языке, который просто стабилен, просто идеален и лишь правятся ошибки. С другой - поддерживать инфраструктуру, биндинги. С третьей - сколько там версий lua одновременно сейчас поддерживается? Вообще не в теме. Или tcl. Думаю, если бы python2 не похоронили а вывели бы в отдельную ветку, сообщество у него было бы больше чем у конкретной версии lua или tcl, и как-нибудь худо бедно всё это поддерживало. Но добровольно-принудительный переход с py2 на py3 заставил сообщество смириться и переобвыкаться. Грустно, конечно, но хотелось бы как с perl 5 и perl 6, а не как с python2 и python3.

Хороший был язык для домохозяек.

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

сколько там версий lua одновременно сейчас поддерживается?

В дистрибутивах по умолчанию 5.1, выпущенная в 6-ом и прекращена поддержка в 12-ом. Актуальная сейчас - 5.4.

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

Нет.

std::string = два указателя

std::rope = бинарное дерево массивов

Haskell = односвязный список

В рамках юникода ещё бывает массив байтов с динамическим чтением символов, массив символов, массив графем.

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

Думаю, если бы python2 не похоронили а вывели бы в отдельную ветку,

Он никому не нужен, потому что глобальных проблем не решает.

Но добровольно-принудительный переход с py2 на py3 заставил сообщество смириться и переобвыкаться.

В 2010 «заставили», перестав развивать язык, лишь изредка правя баги типа ошибок ssl

Грустно, конечно, но хотелось бы как с perl 5 и perl 6

Raku вообще другой язык. Его столько ждали, что успели перейти на PHP или Python, и когда он вышел, то оказалось что никому уже не нужен… А Perl 5 поддерживают, потому что некому переписать всякие скрипты для automake и git на Python

rtxtxtrx ★★
()

https://pypy.org/

PyPy вроде как до сих пор поддерживает 2.7. По крайней мере, они пишут об этом у себя на официальном сайте. Интересно, кто-то пробовал использовать PyPy 2.7 вместо референсной реализации?

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

некому переписать всякие скрипты для automake и git на Python

И переписывать их снова и снова, да.

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

stripes(которые ropes) для быстрого редактирования

а вообще AТД строка и васякот

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

pypy не нужен. там на сайте до сих пор тесты в сравнении с каким-то python 3.7, когда в python 3.12 все ускорили раза в два, а в 13 без GIL он будет работать быстрее pypy (хотя он и с 3.11 стал быстрее в некоторых случаях)

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

Жаль. Потеряли лучших бойцов к тому самому моменту, когда они так нужны.

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

а, ну тут логика есть, видимо это итератор а не список как раньше. ладно, это мелочь жизни

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

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

Хм, как ни странно за пару часов со всеми влётами енкодов и декодов вроде разобрался, вроде даже работает. Криво конечно стало, python2 благодаря своей неряшливости позволял делать элегантные однострочники, а этот слишком правильный...

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

Я повторю вопрос. То есть пятнадцать лет до сего дня, ты третий питон не пробовал? И когда вонь развел в этом топике, на тот момент ты тоже питон3 не пробовал. Всё правильно?

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

So, actually, if the script ends quickly, it doesn’t give PyPy a chance to catch up

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

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

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

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

python2 благодаря своей неряшливости позволял делать элегантные однострочники

Как ты ёмко объяснил почему мне нравится Tcl.

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

Я сейчас Bash изучаю. Как думаете, Python стоит изучать или после Bash надо взять что-то посерьёзнее?

Python сейчас основной язык для собеседований и алгоритмического программирования (leetcode.com). «Посерьёзнее» в смысле болиже к железу это Си, но там надо не язык изучать, а устройство ОС - читать книгу Таненбаума. Зная синтаксис языка Си, но не понимая устройства системы ничего толкового не написать.

UPD: Даже если вы планируете писать на С, собеседовать вас будут на Python, за 1.5 часа у вас просто не хватит времени реализовать несколько стандартных структур данных на С для решения поставленых интервьюером задач. В Python эти структуры уже в типах данных и стандартной библиотеке. Для примера: HashTable, Heap, и банально раз банально Cтроки!

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

Ломание обратной совместимости - тренд у мамкиных смузихлёбов

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

… Go chooses to add a little verbosity in exchange for a great deal of simplicity and clarity. You’ll see this trade-off multiple times. Idiomatic Go values comprehensibility over conciseness.

Learning Go. An Idiomatic Approach to Real-World Go programming

(c) Jon Bodner

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

Python сейчас основной язык для собеседований

Ни-че-го ты не понимаешь! Python - это язык для написания ботов для телеграм.

алгоритмического программирования (leetcode.com)

Не нужно. В обосранном яндексе платят меньше чем в любой галере. Оно не стоит того.

«Посерьёзнее» в смысле болиже к железу это Си, но там надо не язык изучать, а устройство ОС - читать книгу Таненбаума. Зная синтаксис языка Си, но не понимая устройства системы ничего толкового не написать.

Не нужно. Напиши на своем C ютуб! Не можешь? — А на питоне можно!

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

Go — ужасный язык.

Например Go, там обратную совместимость сохраняют

Ага, переименовывая все и удаляя… Особенно когда ввели модули… А анонсированный выход Go 2 сломает все что было. Это вообще другой язык будет

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

Если от такого положения вещей коробит, выход переходить в другие пространства. Например Go

Ну капец блин. Товарищ. Го из беты вышел во времена питона 3.3.

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