Виммельбух, 2, перетяжка
Виммельбух, 2, перетяжка
Виммельбух, 2, перетяжка

Субъективные итоги 2022 года в мире Python

Аватарка пользователя Alexey Korneev
Отредактировано

Подвели итоги 2022 года по изменениям в мире Python. Релиз Python 3.11, выход Black из бета-тестирования, уход Python 2.7 из MacOS.

3К открытий3К показов

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

Мы стали на шаг ближе к тому, чтобы уйти от GIL

30 лет назад, на заре Python, казалось, что не получится сделать высокоуровневый язык программирования с виртуальной машиной, в которой был бы быстрый garbage collector, который бы не тормозил многопоточность из-за синхронизации структур данных.

В конце 2021 года появился nogil — форк Python с системой мультитрединга, в которой получилось отказаться от GIL без потери производительности. Эта неофициальная имплементация показала, что задача решаема. Более того, на тестах для всяких околовеб историй прибавка производительности составляла 10-20%. Репозиторий оставался активен и в 2022, работа в нем ведется.

Много лет у Steering Consul была примерно следующая позиция: если кто-нибудь принесет версию Python без GIL, которая будет работать не медленнее, чем текущая версия, то мы выпилим GIL. Конечно, просто так GIL не выпилят. В начале это скорее всего будет флаг компиляции. Потом флаг интерпретатор. А через много лет, если экосистема нормально перенесет отсутствие GIL’a, могут сделать поведением по умолчанию. Что-то похожее было в Node.js, когда туда имплантировали ECMAScript modules: небольшими шагами за 10 лет пришли к тому, что подавляющее большинство библиотек и фреймворков поддерживало ESM из коробки, и просто выключили флаг.

Будем надеяться, что эта тема не остановится, потому что все в общем согласны, что быстрее — это хорошо.

Релиз Python 3.11 стримили в прямом эфире

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

Превью видео PGZPSWZSkJI

Сидишь на YouTube, мэинтейнеры рассказывают, как и что делают. Это круто!

Из MacOS убрали Python 2.7

Ушла эпоха. Пару десятков лет назад, когда Python еще не был таким распространенным, то, что Apple добавили его в систему, помогло его популярности. Понятно, что это был один из факторов.

Со временем встроенный в MacOS Python стал как трехколесный велосипед: люди уже научились кататься, и маленькие колесики только мешают. Но когда ты даешь технологию в комплекте с операционной системой, на нее начинают рассчитывать другие люди. И ты не можешь делать большие обновления. До сих пор куча программ рассчитывает, что в MacOS есть Python 2.7. Поэтому он будет доступен для нужд операционной системы и ее софта, но недоступен из командной строки. Пользователь же будет ставить отдельный user mode Python в отдельной песочнице — как это сейчас все и делают.

Что же, мы откинули дополнительные колеса трехколесного велосипеда. И стало только лучше.

В JetBrains Python Developer Survey включили вопрос про менеджмент зависимостей

Субъективные итоги 2022 года в мире Python 1

И мы видим интересную статистику про package-менеджеры. Подавляющее большинство использует «голый» pip. Без особых изысков.

Субъективные итоги 2022 года в мире Python 2

Что еще запомнилось

Black вышел из беты

Кажется, куча людей его уже использовала, забив на статус беты. Очень полезная штука, если все в команде придерживаются одного стиля. Это существенно лучше позволяет писать и читать код. Особенно читать код друг друга. С другой стороны, если у тебя или в команде уже сложились предпочтения, где-то расходящиеся с PEP8, «делать как все» может быть тяжело.

Asyncio постоянно допиливают

В 3.11 добавили exception group и task group. Это постепенное развитие.

Что еще запомнилось, одной строкой:

  • PEP 581, работу с issues мигрировала на Github
  • анонс PyScript
  • Релиз Django 4.1
  • Обратно несовместимое изменение в Python, чтобы избежать ValueError: Exceeds the limit (4300) for integer string conversion
  • Релиз Pandas 1.5.0

Пара мыслей о том, что будет дальше

Этот блок создан на основе вопросов слушателей, подключившихся к записи в прямом эфире.

Будет ли Python 4

На самом деле, как пользователи языка, мы сами не хотим, чтобы была четвертая версия. Потому что она будет обратно несовместимой с третьей. И нам придется мигрировать свою кодовою базу с третьей на четвёртую. А кто помнит переход с 2.7 на 3, тот в цирке не смеется.

Возможно, когда-то в языке назреют критические изменения, которые будут того стоить. Но не в ближайшее время. Да и сам Гвидо ван Россум говорит, что за Python 3.11 будет 3.12, потом 3.13, 3.14, а там 3.99 и 3.100.

Могут ли какие-то фреймворки взлететь в следующем году

Кажется, чего-то нового на слуху нет. Все фреймворки, которые имеют хотя бы 2-3% в исследовании JetBrains, довольно старые. Конечно, появляются и новые фреймворки, но они сталкиваются с проблемой курицы и яйца. Чтобы стать популярными и юзабельным, им надо собрать тысячи и десятки тысяч пользователей. А как собрать вокруг себя столько энтузиастов, когда Django, Flask и FastAPI.

Субъективные итоги 2022 года в мире Python 3

Пока активнее всего аудиторию набирает именно FastAPI (3-е место в исследовании). До его появления Tornado (4-е место в исследовании) было единственным способом сделать быструю асинхронную систему, когда у тебя основная нагрузка идёт на Input и Output. Думаю, FastAPI продолжит отъедать долю Tornado для таких задач.
тут. В 2023 планируем выходить пару раз в месяц и добавить новостные выпуски.

Если вам удобнее слушать и иногда смотреть, это можно сделать на ютубе. Если только слушать, подкаст также можно найти на популярных платформах: Apple Podcasts, Spotify, Яндекс.Музыка.

Следите за новыми постами
Следите за новыми постами по любимым темам
3К открытий3К показов