Субъективные итоги 2022 года в мире 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 стримили в прямом эфире
Открытые каналы коммуникации тоже привлекают людей к технологиям. Популярность языков, популярность фреймворков — она во многом и про то, насколько хорошо люди продвигают их, общаются с другими людьми. Очень приятно видеть, что из развития языка делают социальное шоу.
Из MacOS убрали Python 2.7
Ушла эпоха. Пару десятков лет назад, когда Python еще не был таким распространенным, то, что Apple добавили его в систему, помогло его популярности. Понятно, что это был один из факторов.
Со временем встроенный в MacOS Python стал как трехколесный велосипед: люди уже научились кататься, и маленькие колесики только мешают. Но когда ты даешь технологию в комплекте с операционной системой, на нее начинают рассчитывать другие люди. И ты не можешь делать большие обновления. До сих пор куча программ рассчитывает, что в MacOS есть Python 2.7. Поэтому он будет доступен для нужд операционной системы и ее софта, но недоступен из командной строки. Пользователь же будет ставить отдельный user mode Python в отдельной песочнице — как это сейчас все и делают.
Что же, мы откинули дополнительные колеса трехколесного велосипеда. И стало только лучше.
В JetBrains Python Developer Survey включили вопрос про менеджмент зависимостей

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

Интересно, что в вопросе про менеджмент зависимостей нет явного лидера: poetry — 27%, pipenv — 26%, pip-tools — 26%. Это круто. Значит, идет активная конкуренция, и каждый будет внедрять какие-то новые штуки, чтобы выбрали его.
Что еще запомнилось
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.

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