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)

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

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

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

ничё не понял. почему мы в файл пишем байты, а когда я делаю file.read() у меня получается почему то тип str?

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