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)

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

time python3 -c "[ bytes('asdfg' * 10000, 'ascii') for _ in range(100000)]"

Интересный результат. На длинных строках скорость почти выравнивается. То есть тормозит именно вызов функции?

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

То есть ...

Ты хочешь ...

Сказать, что ...

Когда-то ...

Разрабы py3 могли принимать адекватные решения?

Ты мне сейчас весь внутренний мир сломал ....

Удоли! И больше никогда не показывай.

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

Я уже пояснил выше. В Python 3 строки могут быть только в UTF-8.

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

или ты что-то другое имеешь в виду?

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

Некоторые даже сути проблемы не поняли, но мнение имеют.

Так ты не объяснил где ты увидел проблему. Более того, тебе пытались объяснить почему так, но ты не хочешь понимать, а считаешь свою странную логику единственно правильной, а разработчиков питона и всех уто тут пытался тебе что-то, считаешь дураками. Ну что сказать. Удачи тебе с таким самомнением. Правду говорят, что красивые люди стесняются своей внешности, умные сомневаются в своих знаниях и только у долбоящеров полная уверенность в своём превосходстве.

тупости комментирующих я вообще не удивлён

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

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

python банально не предназначен для написания быстро работающих частей кода

зачем нам вообще медленно работающие части кода

Я, честно говоря, и насчет медленных частей не уверен. Кажется, все случаи, когда у меня что-то ломалось от обновлениев за последние года два, были связаны с отмиранием модулей в стандартной библиотеке Python. Это просто несерьезный инструмент для неодноразовых программ. Нужно либо поддерживать обратную совместимость в стандартной библиотеке, либо завязывать с batteries included, если это невозможно. Для второго варианта неплохо бы иметь нормальную систему управления зависимостями.

Я стараюсь избегать программ на пайтон в моих компьютерах.

JIT надо для того, чтобы косяки дата саентистов (если они, например, написали в пайтоне цикл) не приводили к совсем уж катастрофическим исходам. Но я сомневаюсь, что JIT тут поможет.

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

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

str берёт поток байт?

берёт

возвращает строку?

да, именно строку

str конвертирует поток байт в строку. именно в ту, которую я хочу получить

но при этом её корёжит.

всё.

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

Вот у меня С++ код импортится в python через SWIG. В C++ коде есть строки аки текст (std::string) и некоторые сырые данные которые передаются через тот же std::string и собираются/разбираются через struct.pack/unpack. В py2 это все прекрасно работало.

Теперь берем py3 и начинается какая то свистопляска с кодировки и прочим. Что бы эту свистопляску победить (и гонять сырые данные) приходится ВСЕ строки из SWIG автоматом конвертить в bytes, есть у SWIG такая опция. Ок. Но дальше, что бы передать/получить в/из C++ ОБЫЧНУЮ строку типа ‘myfile.dat’ мне приходится везде к этим строкам пихать encode/decode или префикс b.

Бесит это неимоверно, особенно с учетом того что такие ошибки вылезают только в рантайм и далеко не сразу. Аффторы этой гениальной идеи с разделением на bytes/str явно че то не додумали, сделано абсолютно по уродски.

Я уж не говорю про то что 3/2 раньше давало 1 а теперь 1.5, вот за такое точно надо бить канделяброй. С одной стороны они пытаются сделать из питона сурьезный ЯП, с другой привносят в него фичи недоязычков для домохозяек.

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

Я уж не говорю про то что 3/2 раньше давало 1 а теперь 1.5, вот за такое точно надо бить канделяброй. С одной стороны они пытаются сделать из питона сурьезный ЯП, с другой привносят в него фичи недоязычков для домохозяек.

для меня python2 и python3 разные языки

это как vb.net, который с какой-то радости назвали visual basic, который к vb6 вообще не имеет отношения. проще было бы оставить только c#, а «c# который хочет походить на vb» просто бы не делали, оставив оригинал. так же и с py2. например, perl5 и perl6 даже не скрывают что это разные языки, второй даже переименовали и живут оба.

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

зачем нам вообще медленно работающие части кода

Затем что оптимизировать надо не время выполнения программы а время выполнения + время разработки. Да и то, на время выполнения стоит обращать внимание только если оно кажется чрезмерно большим.

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

Питон стал несерьезным инструментом для долгоживущих программ ИСКЛЮЧИТЕЛЬНО из-за уродского отношения разработчиков питона к обратной совместимости. Других причин нет.

Сейчас я бы перешел на другой аналогичный ЯП в котором коллектив разработчиков повменяемей, но увы - в питоне держит накопленная кодовая база и то что его знает сейчас каждый. Для HPC кодов питоновский интерфейс сейчас стал фактически стандартом.

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

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

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

3/2 раньше давало 1 а теперь 1.5

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

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

Питон стал несерьезным инструментом для долгоживущих программ

Поэтому ютуб работает на питоне… Хотя Яндекс.Такси скорее всего написали на богомерзкой джанге, потому что Uber на ней — это какой-то постмодерн, который сложно выкупить… Ладно там есть вторая часть предложения

ИСКЛЮЧИТЕЛЬНО из-за уродского отношения разработчиков питона к обратной совместимости

Ах они негодяи… с 2007 года уговаривали всех переходить на троечку, чтобы привыкать к новому синтаксису, но нет они не предупреждали, не агитировали… Нужно было просто сразу сделать Python 2 deprecated и не тратить силы и время на заигрывание с ретроградами и фанатиками, верующими что раньше трава была зеленее, девки сисястее, а птицы давали молоко

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

Ах они негодяи… с 2007 года уговаривали всех переходить на троечку, чтобы привыкать к новому синтаксису

а зачем? что дал python3, сломав старое?

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

Нужно было просто сразу сделать Python 2 deprecated

Т.е. вариант не ломать обратную совместимость вообще не рассматривается? Интересно там у Вас в голове…

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

3/2 раньше давало 1 а теперь 1.5, вот за такое точно надо бить канделяброй.

То есть удобнее поведение, когда величина зависит от типа переменных, который в Питоне контролировать не так просто?

Конечно, старые программы от этого перестанут выдавать привычный результат.

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

В третьем питоне тот же range() работает на ленивых вычислениях, что экономит память… Тож самое с map()… Лень объяснять чем строки третьего питона лучше говна-набора байт… В третьем питоне есть асинхронщина, f-строки, тайп-хинты… и наконец можно отключить GIL, который мешал криворуким

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

Конечно, старые программы от этого перестанут выдавать привычный результат.

И выдавали ли они вообще «правильный» результат

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

Интересно, какая мотивация у разработчиков ограничивать длину пароля!?

Чтобы львы толстые туда войну и мир не вписывали.

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

Я думал почему-то, что это должен быть ожидаемый результат чтобы идти по пути меньшего удивления.

Вы неправильно думали, людей пишуших на C/C++/gnuplot etc такое удивляет безмерно.

в статически-типизированных язык все иначе

статическая типизация тут вообще к делу не относится, учите матчасть

3 // 2 работает как тебе надо

с т.з. обратной совместимости надо было 3/2 оставить как было, а вот 3//2 сделать по новому. Мелочь же, но сколько с ней головняка даже при переводе 2to3… особенно с учетом утиной типизации.

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

микросекунды сэкономленные за счет xrange

xrange увеличивает разницу вдвое. Но поскольку от старого range с list отказались в пользу генератора, я сравнивал генераторы.

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

В третьем питоне тот же range() работает на ленивых вычислениях, что экономит память… Тож самое с map()… Лень объяснять чем строки третьего питона лучше говна-набора байт… В третьем питоне есть асинхронщина, f-строки, тайп-хинты… и наконец можно отключить GIL, который мешал криворуким

хотелось бы знать имя и фамилию того, кто мешал это сделать во втором python. либо делать что-то концептуально новое, а мы бы в py2 обошлись бы с xrange

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