LINUX.ORG.RU

Выпуск Python 3.12

 


0

7

2 октября 2023 года вышла новая стабильная версия популярного языка программирования Python 3.12.

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

Последняя стабильная версия Python 3.12 предлагает множество изменений в языке и стандартной библиотеке. Изменения в библиотеке направлены на очистку устаревших API, улучшение удобства использования и пр. Отметим, что пакет distutils был удалён из стандартной библиотеки (вместо него следует использовать setuptools). Поддержка файловой системы в os и pathlib претерпела ряд улучшений, некоторые модули стали работать лучше.

Среди множества изменений и улучшений можно выделить следующие:

  • Более гибкий анализ форматированных f-строк, позволяющий многое из того, что ранее было невозможно (PEP 701).
  • Улучшенный синтаксис для указания параметров типа при объявлении универсального (generic) класса, функции или псевдонима (alias) типа. (PEP 695).
  • Новый API для профилировщиков, отладчиков и других инструментов для мониторинга событий в CPython (PEP 669).
  • Поддержка изолированных субинтерпретаторов с отдельными глобальными блокировками интерпретатора GIL (PEP 684). Программы, написанные с использованием субинтерпретаторов, могут использовать преимущества многоядерного параллелизма, который был ранее невозможен из-за GIL.
  • Улучшенные сообщения об ошибках. В случае ошибок, вызванных потенциальными опечатками, предлагаются варианты исправления.
  • Поддержка профилировщика производительности Linux perf для передачи названий функций Python в трассировщик.
  • Множество крупных и мелких улучшений производительности (например, см. PEP 709, касающийся улучшения производительности генератора списка list comprehension, поддержка двоичного оптимизатора BOLT и др.), обеспечивающих общее повышение производительности примерно на 5%.

Анонс релиза

Небольшой поэтический позитивчик от редакторов выпуска и Brian Bilston :)

They have no need of our help
So do not tell me
These haggard faces could belong to you or me
Should life have dealt a different hand
We need to see them for who they really are
Chancers and scroungers
Layabouts and loungers
With bombs up their sleeves
Cut-throats and thieves
They are not
Welcome here
We should make them
Go back to where they came from
They cannot
Share our food
Share our homes
Share our countries
Instead let us
Build a wall to keep them out
It is not okay to say
These are people just like us
A place should only belong to those who are born there
Do not be so stupid to think that
The world can be looked at another way

(now read from bottom to top)

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

★★★★☆

Проверено: hobbit ()
Последнее исправление: Virtuos86 (всего исправлений: 6)

Я так и не понял к чему тут стих? И вниз и вверх прочёл.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

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

perl5_guy ★★★★★
()

позволяющий многое из того, что ранее было невозможно

Ура.

Если серьёзно, то конец чехарды с вложенными кавычками - это хорошо. Хоть это и не было проблемой, потому что по-хорошему там больше двух уровней не надо делать, но всё равно, не надо теперь менять для обращения по ключам.

vvn_black ★★★★★
()

Поддержка изолированных субинтерпретаторов с отдельными глобальными блокировками интерпретатора GIL (PEP 684). Программы, написанные с использованием субинтерпретаторов, могут использовать преимущества многоядерного параллелизма, который был ранее невозможен из-за GIL.

Это и в 3.12 невозможно, и скорее всего и в 3.13 будет невозможно этим пользоваться. Поддержка субинтерпретаторов только начинается.

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

Из питоновского кода - да, пока невозможно. Можно создать несколько интерпретаторов из C-кода.

Поддержку создания интерпретаторов из питоновского кода добавляет PEP 554, но он пока не принят.

eternal_sorrow ★★★★★
()

Я лет 15 использую python и с каждым релизом пользоваться им хочется всё меньше...

Небольшой поэтический позитивчик от редакторов выпуска и Brian Bilston :)

Лучше бы он дзен перечитал вместо сочинения всякой бойды.

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

и с каждым релизом пользоваться им хочется всё меньше…

Что в 3.12 «сломали» из привычного, что влияет на такое настроение?

vvn_black ★★★★★
()

Стихи напомнили известное в узких кругах ограниченных людей творчество Х.М. Эбеккуева.

«Хороший язык питон!
Я писать на нём готов
Скриптов хоть миллион
Или квесты про котов!»

***

«Кто питон не обновляет —
новых фич не получает;
Я питон свой обновил,
Сразу distutils удалил!»

***

«Бывает пишу на питоне,
Бывает пишу на баше,
Бывает пишу я в виме,
А бывает, что и в ема́ксе!»

Smacker ★★★★★
()
Ответ на: комментарий от Smacker
Плачет маленький Питон:
Сам себя запутал он.
Сам себя переползал
И себя узлом связал.
Кто теперь ему поможет:
Он себя найти не может.

:)

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

О нет, только не это! Они же сейчас его добавят в portage по-умолчанию, и надо будет снова пересобирать мир под новый питон…

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

Что в 3.12 «сломали» из привычного, что влияет на такое настроение?

PEP20 причем сломали очень давно, сейчас доламывают.

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

Это брюзжание )

Язык же должен как-то развиваться, конкурировать. Но согласен, что ситуация как с трусами и крестиком.

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

Изучай язык питон,
Всем новичкам полезен он.
Будешь лишний пробел полдня искать,
И всё на свете проклинать!

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

конец чехарды с вложенными кавычками - это хорошо

Пример с https://docs.python.org/3.12/whatsnew/3.12.html:

>>> songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
>>> f"This is the playlist: {", ".join(songs)}"
'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'

Подсветку синтаксиса придётся переделывать.

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

Язык же должен как-то развиваться, конкурировать.

Так кто против то? Но «улучшения» не должны ухудшать ситуацию ибо лучшее враг хорошего. По этому вместо того что бы тащить в синтаксис всякие глупости (типа паттерн матчинга и паскаливского оператора) пели ли бы производительность, она очень хреновая.

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

Я, мнэ, смотрел на сишный код интерпретатора питона. Чтобы что-то изменить в производительности, его надо переписать целиком.

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

Чтобы что-то изменить в производительности, его надо переписать целиком.

По хорошему туда надо ещё JIT добавить ;)

Rodegast ★★★★★
()

Питон - это яркий пример того, как разработчики Перла пролюбили все возможности. Я лично не люблю Питон, но если надо что-то сложнее bash-скриптов, то выбор не богат.

WatchCat ★★★★★
()

Началась перепись ниасиляторов Питона?

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

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

Это каким же олиглфреном нужно быть, чтобы количество табов путать?

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

Во времена ChatGPT задумываться от том, что сломали в очередной версии Питон?

Серьёзно?

Сейчас нужно задавать уже вопрос по другому: когда в ChatGPT имплементируют поддержку новой версии Питон.

Для тех, кто в танке: там уже давно появился интерпретатор сгенерированных скриптов Питон. И, кажется, встроенный сервер.

И делать миграцию скриптов он будет делать сам.

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

Которую из строк PEP20 нарушили на этот раз?

«Более гибкий анализ форматированных f-строк, позволяющий многое из того, что ранее было невозможно» как раз нарушает как минимум второй пункт.

Rodegast ★★★★★
()

Пока что значимо язык испоганить не получилось. И он продолжит ещё долго быть №1. Конечно, ничто не вечно, но всё ещё есть области, например, сайтостроение, где внедрение Питона существенно облагораживает ситуацию.

И да, суб интерпретаторы — это возможный путь в правильном направлении.

Vudod ★★★★★
()

(новость)
Поддержка изолированных субинтерпретаторов с отдельными глобальными блокировками интерпретатора GIL (PEP 684). Программы, написанные с использованием субинтерпретаторов, могут использовать преимущества многоядерного параллелизма, который был ранее невозможен из-за GIL.

(from byko3y)
И потому я авторитетно заявляю: GIL не выкинут никогда, просто потому что весь CPython = расширения + немножко синтаксиса + GIL, выкидываешь что-то одно – получаешь совершенно новый язык.

sudo cast @byko3y

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

Я тоже считаю, что f-строки — это мерзость и очень плохой стиль, потому что нельзя путать строку и переменную в одном коде.

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

С сайтостроением сейчас прикольно получается, до людей наконец дошло что js в браузере это тупик (как парсить пустой сайт), и те бросились со всяких Реактов на turbo-js, next-js (ну где вся логика на серваке а в браузер валится готовый html. И тут как бы возникает вопрос а зачем там node то, всякие php, python, perl, ruby и так с этим справлялись …

P.S. Блин у меня 3.12 на el7 не собирается :(

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

Нереалистично. Что называется, «не верю!» Вот в ТеХе искать непарную фигурную скобку действительно можно часами. А в Питоне, чтобы поставить лишний пробел, надо в ворде кодить. Но до такого почти никто не опускается, даже студенты 1-го курса. У них много проблем, но проблема с отступами как таковыми (не с операторными скобками, а именно с отступами в их роли) у них на системном уровне отсутствует.

Vudod ★★★★★
()

С каждой новой версией python все больше напоминает perl) по крайней мере в части замудренности синтаксиса.

При этом по стабильности perl кажется выигрывает. И да разрабам стоило бы перечитать дзен. Особенно напрягает, то что постоянно ломаются api и стандартная библиотека.

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

зато нет комитетов и фюрера, что хочешь то и делаешь

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

В PyPy добавили, пользуйся.

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

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

При этом по стабильности perl кажется выигрывает.

Ничего, скоро будет Perl7.

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

Так это же Лисп просто.

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

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

Ну например: asyncio.wait с версии 3.11 требует чтобы ей на вход передавались taskи, а до нет. Ситуация была с внешней библиотекой, которая совсем не понятно будет ли когда-то адаптироваться или нет. В данный момент нужно править самому.

Ну и судя по «что нового в python 3.11»:

удаление модулей uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau. Удаление функции PyUnicode_Encode*.

если ваши зависимости что-то из этого используют наслаждайтесь.

По python 3.12:

Кроме новых возможностей разработчики решили почистить некоторые старые, которые уже не нужны. В частности, убраны модули asynchat, asyncore, smtpd, imp и distutils (модуль distutils можно использовать из пакета setuptools). Убраны устаревшие методы в unittest. Избавились и от устаревших и некорректно работающих функций, классов и методов. В первую очередь, это locale.format(), io.OpenWrapper, ssl.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile.

Ну, а чего такого, разработчики уже привычные им нечего делать больше кроме как заниматься переводом с версии на версию, на 2.7->3+ уже должны были привыкнуть.

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

Более того, сейчас преимущественно используют их, в результате код гораздо читается гораздо хуже, потому что в такой строке не понятно сходу какие переменные из программы в нее попадают. И уж точно f строки не соответсвуют «явное лучше чем неявное».

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

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

asyncio.wait с версии 3.11 требует чтобы ей на вход передавались taskи

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

Остальное, меня особо не касалось, но всё-равно, не проблема же на нужной версии запустить. Это не к тому, что всё нормально, а к тому, что не очень сложно решается.

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

(новость)
Поддержка изолированных субинтерпретаторов с отдельными глобальными блокировками интерпретатора GIL (PEP 684)

(from byko3y)
И потому я авторитетно заявляю: GIL не выкинут никогда

В чём тут противоречие? Проект с полным устранением GIL есть, но он не совместимый с расширениями, а без расширений питон не нужен. По-моему там даже для многоинтерпретаторов нужно серьезно допиливать расширения, а полное устранение GIL — это что-то нереальное.

byko3y ★★★★
()

Среди множества изменений и улучшений можно выделить следующие
* Ничего не помянялось;
* Поменяли шило на мыло;
* Сделали профилирование для самого медленного ЯП;

пакет distutils был удалён из стандартной библиотеки (вместо него следует использовать setuptools)

Пожалуй, последнее ­— единственная положительная новость, наряду с тем, что PSO больше не будет компилироваться из коробки на 3.12.

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

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

ol1mp
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.