- PVSM.RU - https://www.pvsm.ru -

Находки в опенсорсе: доклады с большой встречи сообщества, конец опенсорса и питон 3.15; октябрь 2026

Добро пожаловать в мир находок в опенсорсе!

Добро пожаловать в мир находок в опенсорсе!

Всем привет! Очень большой получился дайжест: было очень много событий. Но тем будет интереснее!

17 октября прошла наша большая открытая встреча сообщества в Нижнем Новгороде, доклады с которой уже выложены в посте ниже.

Еще поговорим про Python 3.15 и его фичи, ведь он как раз был релизнут в октябре 2026. Посмотрим, что нам уже готовит Python 3.16.

Поговорим про проекты сообщества. Очень много крутых (и очень красивых!) штук подобралось.

С меня как всегда статья без нейрослопа и ИИ, с вас как всегда интересные комментарии и лайки! А вот тут [1]ссылка на прошлый дайджест [2] за сентябрь.

Погнали смотреть, что у нас в питоне происходило!


Большая встреча сообщества

Спасибо большое всем за такой чудестный день! Больше 1000 человек было на конференции [3].

Было 7 крутых докладов на нашем потоке, море общения, новых знакомств. Заняли половину барной улицы после конфы. А теперь пришло время делиться докладами. Делюсь секцией PythoNN в порядке выступления:

  • Иван Кирпичников. Посмотрим на конкурента Pydantic от нашего сообщества [4]. Посмотрим: где и когда не стоит использовать Pydantic, какие у него актуальные проблемы. Поговорим, за счет чего Adaptix насколько быстрый, как он устроен. И какие уникальные фичи у него есть.

  • Егор Бугаенко. Новые принципы построения проектов в век ИИ. Осторожно, будет подгорать!

  • Алексей Гладких. Расскажу про недооценённую платформу для коммуникации, выстраивания горизонтальных связей и создания личного бренда. Покажу как можно стримить с технической стороны.

  • Сергей Макаров. Как можно использовать zMQTT [5] для работы в embedded устройствами?

  • Максим Мельников @PyLounge [6]. Работа в IT‑команде иногда подозрительно напоминает Dota 2: кто‑то фармит, кто‑то руинит, кто‑то молчит до 40-й минуты, а тимлид начинает думать, что снова играет 1 vs 9. Только вместо Рошана — прод, вместо 0/10 мидера — соседняя CRM‑команда, а вместо «gg ez» — очередной аварийный комитет. На докладе поговорим о том, как перестать играть в такой режим и начать выстраивать систему: почему токсичность и дизмораль только мешают, зачем учить людей говорить ртом и управлять ожиданиями, почему процессы не должны держаться на одном «рокстар‑игроке» и как не превращать каждый фейл в поиск того, кто заруинил. Разберём, как продавать изменения команде, договариваться с бизнесом и другими командами, фиксировать договорённости и автоматизировать правила — чтобы вместо вечного 1 vs 9 получилась команда, которая действительно играет на победу как для бизнеса, так и технического развития проекта.

  • Александр Целуйко. Почему msgspec [7] быстрее и меньше базовых структур (namedtuple, dataclass и тп) python и orjson (не всегда и везде есстессна).Что нужно, чтобы fastapi работал на msgspec? Как разогнать Ваш сервис на fastapi ещё быстрее? Устроим батл про msgspec vs adaptix!

  • Алексей Голобурдин, Диджитализируй. Почему для многих задач полностью локальные агенты это будущее, как Microsoft, Apple и hardware‑производители идут в сторону локального инференса, и как это использовать разработчику.

А еще у нас есть один спасенный доклад от Никиты Пастухова @Propan671 [8] с секции NNИнтерфейс. Там были некоторые проблемы с записью видео и звука, Никита спас что мог:

Спасибо большое всем спикерам! Было круто. Повторим в следующем году!

Ship IT!

Всем спикерам мы всегда по традиции дарим мою опенсорс настольную игру про айтишечку: https://github.com/sobolevn/ship‑it‑boardgame [9]

Ship IT!

Ship IT!

Игра очень классная вышла: социальная, веселая, душная! Но и правила мы специально делали очень простыми, чтобы было легко их объяснить своим коллегам в баре под кружечку пенного.

В нее можно поиграть абсолютно бесплатно: есть возможность напечатать самому, есть вариант поиграть через Table Top Simulator. Можно даже найти игроков в нашем чате [10].

Как раз под конференцию вышла новая версия: 0.0.26 [11]

Напечатайте и сыграйте, если любите настолки!

CPython

Тут тоже есть несколько важных новостей одной строкой:

  • Вышел Python 3.15, но рассказывать про такое старье я как всегда не вижу смысла. Ведь мы про него рассказывали уже весь прошлый 2025 й год. Подписывайтесь [12], чтобы быть в курсе актуальных новостей, а не новостей годичной давности.

  • Сергей Мирянов @zzzzzzerg [13], как я писал в прошлом дайджесте [2], был выдвинут [14] и успешно принят [15] на позицию CPython core разработчика. Сергей занимается GC, что очень важная и нужная сфера в CPython. Можете поздравить Сергея в комментах!

  • Наконец‑то приняли мое предложение [16] (о котором я писал еще в июльском дайджесте [17]) по добавлению нового C‑API PyDict_AsFrozenDictAndClear

Ну и покажу один небольшой но интересный PR, который я недавно смерджил: https://github.com/python/cpython/pull/152632 [18] В нем я исправляю грамматику для парсинга lazy imports. Было так:

import_name[stmt_ty]:
    | lazy="lazy"? 'import' a=dotted_as_names { _PyAST_Import(a, lazy ? 1 : 0, EXTRA) }

Стало так:

import_name[stmt_ty]:
    | "lazy" 'import' a=dotted_as_names {
        CHECK_VERSION(stmt_ty, 15, "Lazy imports are",
            _PyAST_Import(a, 1, EXTRA)) }
    | 'import' a=dotted_as_names { _PyAST_Import(a, 0, EXTRA) }

Что тут вообще происходит?

  1. Данный текст — описывает формальную грамматику Python, где есть имена правил: import_name, тип C структуры для парсинга данного правила stmt_ty, варианты парсинга правила (пишутся через |), ключевые слова "lazy" и "import", действия для выполнения парсинга в C коде _PyAST_Import(a, 0, EXTRA)

  2. Но, в Python можно использовать грамматику для парсинга еще и в виде ast.parse вызова [19], например для линтеров или тайпчекеров

  3. А там есть параметр feature_version, чтобы парсить код из, например, Python 3.15 но для версии Python 3.12. И раньше вызов вида ast.parse('lazy import os', feature_version=(3, 12)) работал в Python 3.15+. Хотя должен был кидать SyntaxError

  4. Потому мне пришлось разделить кейсы парсинга на две части, там где есть "lazy", я добавил CHECK_VERSION(stmt_ty, 15, "Lazy imports are", ...), чтобы вызывать правильную ошибку при feature_version меньше 3.15

  5. Теперь все работает корректно, а вы узнали про feature_version и особенности грамматики Python. Круто?:)

Конец опенсорса

Опубликовал у себя в канале свои мысли про опенсорс и ИИ. А точнее про конец опенсорса — таким каким мы его знали. И пост собрал просто кучу обсуждений.

https://t.me/opensource_findings/995

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

А вот мой доклад с недавнего MoscowPython на данную тему (говорю про ту же проблему другими словами):

Но — ключевой момент всей ситуации — а что делать то? Предлагаю обсудить в комментариях. У меня пока нет ответов.

RIP #opensource, было весело!

django‑modern‑rest

Вышел релиз django‑modern‑rest@0.17.0 [35], мы очень значительно поработали над производительностью за последние несколько релизов. Вот и сейчас: ускорили большую часть кейсов в x1.6 и в x1.3 раза в самых горячих местах.

Мне очень нравятся цифры производительности. Уже быстрее FastAPI. А будет еще лучше!

https://github.com/wemake-services/django-modern-rest

Если еще не пробовали — смело пробуйте! У нас есть куча крутых и быстрых фич.

Django еще никогда не была настолько типизированной, приятной, удобной и быстрой!

Светлая пустота

В прошлом [2] дайджесте я показывал темный вариант темы pustota [37], а сейчас сделал светлый вариант:

`pustota light` из https://github.com/pustota-theme/pustota

Для тех, кто любит светлые темы!

А наш коллега skatromb [38] выпустил тему еще более минималистичную но похожую тему, мне очень понравилась: https://github.com/skatromb/navigate‑theme [39] Посмотрите и вы!

Проекты сообщества

  • Библиотека, которая загружает конфиги в обычные датаклассы и проверяет типы по аннотациям. Цель простая: получить из конфига типизированный объект, а если что‑то не так, увидеть, где именно и почему: https://github.com/reagento/dature [40]

  • Небольшой инструмент, который помогает понять, не испортился ли ваш чат‑бот (агент) после очередных правок. Работает так: convy сам переписывается с ботом, как обычный клиент, и проверяет, правильно ли тот отвечает. Потом можно сравнить старую и новую версию и сразу увидеть, где стало хуже: https://github.com/deyna256/convy [41]

  • Эвент дривен фреймворк, вдохновлённый faststream, но для раста: https://github.com/powersemmi/ruststream [42]

  • Точные замеры HTTP по фазам и выгрузка в удобном формате (OpenTelemetry, Prometheus, JSON, HAR). Показывает, на что уходит время в каждом запросе: DNS → TCP connect → TLS handshake → ожидание сервера (TTFB) → передача тела. Результат выводится как waterfall‑таймлайн: https://github.com/ozeranskii/httptap [43]

  • Если вы хотите дать возможность агенту делать что‑то в Django админке — то вот библиотека для вас: https://github.com/JargeZ/django‑unfold‑agentic‑layer [44]

  • Идейный порт wemake‑python‑styleguide [45] для Rust! В наборе есть линты почти про всё, что по дефолту выключено: Читаемость, Размеры функций, Когнитивная сложность, Идиоматические паттерны, Паника и .unwrap() в продакшн коде: https://github.com/skatromb/easy‑peasy‑rust [46]

  • Потеря тасок при ООМ? Год назад столкнувшись с этим, я реализовал для своей команды 0.x версию данной очереди. Спустя около 8 месяцев успехов и фидбека — родилась вторая версия 1,x, которой я захотел поделиться с миром. Эта очередь — некий симбиоз transactional outbox и durable task queue: https://github.com/KoninMikhail/workhold‑durable‑work‑queue [47]

  • Совместили Telegram подобный интерфейс, принудительное сквозное шифрование и self‑hosted архитектуру. Каждый может развернуть свой сервер самостоятельно, что гарантирует нам отсутствие единой точки отказа, а протокол общения клиента с сервером — WebSocket, что делает трафик похожим на трафик обычных сайтов. E2E шифрование реализовано при помощи алгоритма Double Ratchet который был написан с нуля. Шифруем при помощи ChaChaPoly1305, ключами обмениваемся при помощи постквантового Диффи‑Хелмана. https://github.com/cathxrsys/patronus [48]

  • Порт docling на Расте, проект официально приняли в Linux AI community, IBM docling подписалcя. Скоро полностью заменим docling! https://github.com/docling‑project/docling.rs [49]

  • ETL фреймворк под питон с движком на Rust/Arrow, который грузит таблички/джисоны в/из DWH. Что‑то похожее на dlt, только по‑настоящему работающее: https://github.com/skatromb/transferred [50]

  • Умный UPSERT на sqlalchemy, совместимый с разными БД: https://github.com/pavel‑v‑sobolev/dbmerge [51]

  • benchset нужен, чтобы замерять производительность компьютера по различным метрикам: производительность CPU на 1 ядро, производительность всех доступных ядер в сумме, тд: https://github.com/mutating/benchset [52]

  • Extella — бесплатное приложение для Mac, Windows и Linux. Внутри — открытые проекты с GitHub, упакованные так, чтобы их можно было открыть без терминала и Docker: поставил Extella, добавил приложение на рабочий стол, работаешь. Сейчас так собрано 19 браузерных приложений: редактор схем на основе draw.io [53], Mermaid Live Editor, JSON Crack, GraphvizOnline, редактор three.js, Excalidraw, Klecks и другие. https://extella.dev/apps/diagram‑editor/ [54]

  • shebang [55] позволяет вам декларативно описать CLI вообще для любого скрипта. Такой, с валидациями входящих параметров, автодополнением для шелла. Смотрите как:

#!/usr/bin/env shebang

#! shebang.1
#  description "Hello world"
#
#  arg "source" {
#    description "Copy from..."
#    value "filepath" {
#      type "directory"
#    }
#  }
#  arg "to" {
#    description "Copy to..."
#    value "filepath" {
#      glob "/archives/**"
#    }
#  }

cp -a "$1" $2"
  • Релиз arch‑blueprint 0.3: изучаем архитектуру и н т е р а к т и в н о🤌 Теперь можно сразу видеть и дерево проекта, и связи его объектов. Доступны все те же варианты модули vs классы и функции, метрики связей, группировка по неймспейсам и подсветка циклов с детализацией импортов: https://github.com/nkhitrov/arch‑blueprint [56] Обсудить релиз и задать вопросы автору можно в канале Николая Хитрова [57]

  • Написание читабельного кода для телеграм ботов с детерминированными сценариями, в основном для личных админок и не высоконагруженных сервисов. Доступные для Python фреймворки в основном используют FSM (конечный автомат состояний) в той или иной форме. Я же в свою очередь предлагаю иной подход, при котором не нужно выдумывать множество состояний в конечном автомате разбросанных по коду с трудно отслеживаемыми переходами. Вы просто пишите последовательный код в процедурном стиле: https://github.com/nebenwelt/pyteleflow [58]

  • imgproxykit — библиотека для сборки URL к imgproxy. Если не сталкивались с imgproxy: это сервер на Go (асуждаем) для обработки изображений. Формируешь для него ссылку с набором параметров обработки и оригиналом — получаешь картинку нужно размера, качества и формата. imgproxykit позволяет описать параметры python‑кодом: https://github.com/kondratevdev/imgproxykit [59]

  • Язык программирования для ИИ агентов. Он заставляет агентов работать с кристаллизованными контрактами, а не со свободной семантической интерпретацией текстов. Делая интерфейсы формальными, а тела реализаций — приватными, он превращает исходный код в компактный и жёсткий, не подверженный эрозии «экзоскелет», который агенты могут безопасно развивать, а люди — быстро читать. https://github.com/rete‑labs/quoll [60] Почитать и обсудить подробнее можно в канале у Феди [61]

  • Движок для создания презентаций с кучей анимацией и стилей. А еще умеет создавать красивые видео ролики из тех же презентаций. Код получается очень красивым! https://github.com/xfenix/slidemachina [62] Демо можно глянуть вот тут в канале у Никиты Пастухова [63]

Хотите попасть в следующий дайджест? Пишите о своем проекте в нашем чате [64], добавляйте тег #opensource, я обязательно им поделюсь!

Одной строкой

  • Релизнули pytest‑mypy‑plugins@4.1.0 [65] (библиотека для тестирования mypy плагинов с pytest), поддержали mypy@2.4.0

  • Выпустили релиз django-stubs@6.1.2 с поддержкой mypy@2.4.0

  • Вышел новый dry‑python/returns@0.30.0 [66], с поддержкой mypy@2.40

  • Релизул jinja2-git@1.5.0 [67] плагин для отображения версии текущего коммита в jinja2 шаблонах

Завершение

А если вы думаете, что я делаю что‑то полезное для мира, то поддержать можно по ссылкам:

Я там ничего не продаю, просто делаю свою работу, если считаете, что я делаю полезное — можно поддержать. Если нет, то я все равно продолжу ее делать.

Подписывайтесь на главный канал [70] сообщества, если вам нравится такое читать. И возможно даже захочется поучаствовать [71]! Буду рад видеть вас частью нашего опенсорс сообщества:‑)

До встречи в следующем дайджесте и в нашем сообществе!

Автор: sobolevn

Источник [72]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/461454

Ссылки в тексте:

[1] : https://habr.com/ru/articles/1076694/

[2] ссылка на прошлый дайджест: https://habr.com/ru/articles/1091038/

[3] конференции: https://itgorky.ru/bolshaya-vstrecha

[4] на конкурента Pydantic от нашего сообщества: https://github.com/reagento/adaptix

[5] zMQTT: https://github.com/faststream-community/zMQTT

[6] @PyLounge: https://www.pvsm.ru/users/pylounge

[7] msgspec: https://github.com/msgspec/msgspec

[8] @Propan671: https://habr.com/ru/users/Propan671/

[9] https://github.com/sobolevn/ship‑it‑boardgame: https://github.com/sobolevn/ship-it-boardgame

[10] в нашем чате: https://t.me/ship_it_boardgame

[11] новая версия: 0.0.26: https://github.com/sobolevn/ship-it-boardgame/releases/tag/0.0.26

[12] Подписывайтесь: https://t.me/opensource_findings

[13] @zzzzzzerg: https://habr.com/users/zzzzzzerg

[14] выдвинут: https://discuss.python.org/t/vote-to-promote-sergey-miryanov/109283

[15] принят: https://t.me/opensource_findings/990

[16] приняли мое предложение: https://github.com/python/cpython/pull/153413

[17] в июльском дайджесте: https://habr.com/ru/articles/1065404/

[18] https://github.com/python/cpython/pull/152632: https://github.com/python/cpython/pull/152632

[19] вызова: https://docs.python.org/3/library/ast.html#ast.parse

[20] https://t.me/opensource_findings/995: https://t.me/opensource_findings/995

[21] ограничил количество PRов от внешних контрибьюторов: https://discuss.python.org/t/pull-request-limits-for-cpython-repo/109564

[22] OpenJDK запретил: https://openjdk.org/legal/ai

[23] написал большой пост: https://t.me/pylounge/1107

[24] закрылся по их формулировке из‑за «слопаппокалипсиса»: https://jazzband.co/news/2026/03/14/sunsetting-jazzband

[25] закрыл все свои проекты: https://x.com/sindresorhus/status/2105693826690298314

[26] закрывает внешние PRы: https://x.com/yusukebe/status/2107027870019445007

[27] LadyBird: https://ladybird.org/posts/changing-how-we-develop-ladybird/

[28] Godot запретил использование ИИ: https://godotengine.org/article/contribution-policy-2026

[29] объявила себя свободной: https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html

[30] читайте полную историю: https://t.me/opensource_findings/963

[31] будет молча закрывать: https://github.com/nodejs/node/pull/62105/files

[32] Linux прекращает поддержку: https://rnel/git/torvalds/linux.git/commit/?id=64edfa65062dc4509ba75978116b2f6d392346f5

[33] r/opensource запретил: https://www.reddit.com/r/opensource/comments/1xelcuf/your_tokens_arent_valuable_no_more_ai/

[34] Обсуждение: https://github.com/orgs/community/discussions/185387

[35] django‑modern‑rest@0.17.0: https://github.com/wemake-services/django-modern-rest/releases/tag/0.17.0

[36] https://github.com/wemake‑services/django‑modern‑rest: https://github.com/wemake-services/django-modern-rest

[37] pustota: https://github.com/pustota-theme/pustota

[38] skatromb: https://github.com/skatromb

[39] https://github.com/skatromb/navigate‑theme: https://github.com/skatromb/navigate-theme

[40] https://github.com/reagento/dature: https://github.com/reagento/dature

[41] https://github.com/deyna256/convy: https://github.com/deyna256/convy

[42] https://github.com/powersemmi/ruststream: https://github.com/powersemmi/ruststream:

[43] https://github.com/ozeranskii/httptap: https://github.com/ozeranskii/httptap

[44] https://github.com/JargeZ/django‑unfold‑agentic‑layer: https://github.com/JargeZ/django-unfold-agentic-layer

[45] wemake‑python‑styleguide: https://github.com/wemake-services/wemake-python-styleguide

[46] https://github.com/skatromb/easy‑peasy‑rust: https://github.com/skatromb/easy-peasy-rust

[47] https://github.com/KoninMikhail/workhold‑durable‑work‑queue: https://github.com/KoninMikhail/workhold-durable-work-queue

[48] https://github.com/cathxrsys/patronus: https://github.com/cathxrsys/patronus

[49] https://github.com/docling‑project/docling.rs: https://github.com/docling-project/docling.rs#python-bindings%D0%9E%D1%84%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE

[50] https://github.com/skatromb/transferred: https://github.com/skatromb/transferred

[51] https://github.com/pavel‑v‑sobolev/dbmerge: https://github.com/pavel-v-sobolev/dbmerge

[52] https://github.com/mutating/benchset: https://github.com/mutating/benchset

[53] draw.io: http://draw.io

[54] https://extella.dev/apps/diagram‑editor/: https://extella.dev/apps/diagram-editor/

[55] shebang: https://github.com/9seconds/shebang

[56] https://github.com/nkhitrov/arch‑blueprint: https://github.com/nkhitrov/arch-blueprint

[57] в канале Николая Хитрова: https://t.me/nkhitrov_blog/585

[58] https://github.com/nebenwelt/pyteleflow: https://github.com/nebenwelt/pyteleflow

[59] https://github.com/kondratevdev/imgproxykit: https://github.com/kondratevdev/imgproxykit

[60] https://github.com/rete‑labs/quoll: https://github.com/rete-labs/quoll

[61] в канале у Феди: https://t.me/wireless_snark/124

[62] https://github.com/xfenix/slidemachina: https://github.com/xfenix/slidemachina

[63] тут в канале у Никиты Пастухова: https://t.me/fastnewsdev/423

[64] в нашем чате: https://t.me/opensource_findings_chat/

[65] pytest‑mypy‑plugins@4.1.0: https://github.com/typeddjango/pytest-mypy-plugins

[66] dry‑python/returns@0.30.0: https://github.com/dry-python/returns/releases/tag/0.30.0

[67] jinja2-git@1.5.0: https://github.com/wemake-services/jinja2-git

[68] https://boosty.to/sobolevn: https://boosty.to/sobolevn

[69] https://github.com/sponsors/wemake‑services: https://github.com/sponsors/wemake%E2%80%91services

[70] главный канал: https://telegram.me/opensource_findings

[71] поучаствовать: https://telegram.me/opensource_findings_python

[72] Источник: https://habr.com/ru/articles/1102724/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1102724