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)

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

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

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

Последний раз пересобирал когда профиль менял с 13.0 на 17.1. Сколько питонов обновилось, не помню уже. Всё нормуль, забей, и живи спокойно.

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

Вот с чем-чем, а с Питоном при обновлении проблем не было. Последний раз обновлялся недавно спустя несколько месяцев после предыдущего... Правда, пришлось выполнить merge-usr и пересобрать мир после этого...

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

нельзя путать строку и переменную в одном коде

Практика показала, что можно, и минусов нет.

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

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

Опять люди, которые меряются производительность числом строк, а не выполняемыми функциями? Ну типа как получилась ситуация, что «кода много, а рук мало»? Кто его написал, этот код?

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

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

Дистрибутивная версия вообще без вашего участия обновляется.

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

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

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

У меня Gentoo, там половину пакетов при обновлении питона пересобирать придется.

Не, можно «просто поставить» новую версию, но нафига мне две версии в системе?

Barracuda72 ★★
()

ну чё!

можно как раз с октября перечитывать полностью доки и сырцы очередной версии питона

что бы эдак к апреля переходить на ( если нет фатальных недостатков)

года как раз хватит что-бы и доки полистать в рефреш режиме

и дифы оценить между минорами через гитхаб али что

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

Я так и не могу собрать 3.12 в el7.

Причем 3.10.х собирал, и все 3.11.х без проблем. Даже 3.11.6 (вышел одновременно с 3.12) собрал. А не 3.12 не хочет, какую то фигню пишет. Я бы эту ошибку понял если бы у меня был бы совсем старый gcc и я бы не мог собрать 3.10.х или 3.11.х, но те то собираются :(

gcc: error: unrecognized command line option '-fno-semantic-interposition'
mx__ ★★★★★
()
Ответ на: комментарий от mx__

Ну они в 3.12 подняли требования к gcc и у тебя оказался древнее, чем нужно. Чего тут удивительного? Эта опция из 5.3, насколько я понял. У тебя видимо древнее.

Возьми из software collections свежий gcc и собирай дальше.

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

Да gil как бы и так optional и его можно отрубить, примерно как и тормоза у машины. Результат правда тоже аналогичный

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

Наверное я не понятно написал, словами :

Я бы эту ошибку понял если бы у меня был бы совсем старый gcc и я бы не мог собрать 3.10.х или 3.11.х, но те то собираются :(

Так вот я это про то что начиная с 3.9 оно собирается только с sclo. И там самый минимальный gcc это devtoolset-8-gcc-8.3.1-3.2.el7.x86_64.rpm

Я пробовал собрать с dev11 а это: gcc-11.2.1-9.el7.x86_64.rpm

Один фиг. Но дело в том что опцию ‘-fno-semantic-interposition’ начали применять с python 3.10 … https://bugs.python.org/issue38980

Я думаю что до 3.12 накладывали какой то патч куда то, но почему то при 3.12 его забыли в код добавить …

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

Извините не совсем понял про старый. C версии python-3.9 я его собираю с : openssl11-1.1.1k-4.el7.x86_64.rpm (epel).

Насколько я понял они официально его бросили собирать с версии Python-3.8 (последний в sclo) так как в дистре старый openssl.

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

Тогда странно. gcc-11 такую опцию должен знать. М.б. где-то в процессе сборки переопределяется PATH и он цепляет дефолтный компилятор, а не из devtoolset.

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

Я в МОСК собираю, там 3.10.х и 3.11.х без проблем. Даже после 3.12.0 собирал 3.11.6 - все ок.

Они что то поменяли относительно 3.11 а я ни как не могу найти что :(

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

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

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

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

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

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

А получилось допольно просто, код написан по большей части мной и еще в разное время несколькими людьми, за 12+ лет. На данный момент поддержка в основном на мне, вот и получается, что кода накопилось прелично, поддерживать нужно малыми силами.

ol1mp
()
Последнее исправление: ol1mp (всего исправлений: 1)

Питошик радует, избавятся от GIL и будет круче всех. Реально развивается платформа

Из исходников 3.11 недавно собирал, собирается легко и просто. Постепенно осваиваю всякие продвинутые питоновские фишечки, но только по мере необходимости

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Last_login

С++ не лучше даже в том списке, которым ты владеешь – васик его заруливает 😊

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

Попробуй шлангом собрать, есть софт, который отлично собирается шлангом и не жуётся gcc, может тут как раз такой случай.

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

До 12 было

*** WARNING: renaming "_tkinter" since importing it failed: /builddir/build/BUILD/Python-3.11.6/build/lib.linux-x86_64-3.11/_tkinter
.cpython-311-x86_64-linux-gnu.so: undefined symbol: Tk_Init

И так как варнинг оно пролетало дальше …

В 12 стало:

[ERROR] _tkinter failed to import: /builddir/build/BUILD/Python-3.12.0/build/lib.linux-x86_64-3.12/_tkinter.cpython-312-x86_64-linux
-gnu.so: undefined symbol: Tk_Init

Стала ошибка и из этого не собирается до конца.

Причем я нашел подобное : https://bugs.python.org/issue31817

Но там этот баг так и не закрыли, так как он касался только 3.6 …

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

Добил его таки.

python312-3.12.0-1.el7.x86_64.rpm

Просто раньше он тоже с Tk не собирал, но был ВАРНИНГ и оно пролетал дальше, я Тк не юзал и думал все ок.

Теперь это ОШИБКА и пришлось эту ошибку исправить …

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