5. Умер Тим Питерс, автор «Дзена Python»
Тим Питерс (1952–2026), легендарный разработчик CPython и автор знаменитого «Дзена Python», скончался. Сообщество Python скорбит.
Тим Питерс (1952–2026), легендарный разработчик CPython и автор знаменитого «Дзена Python», скончался. Сообщество Python скорбит.
LWN сообщает, что экспериментальный JIT-компилятор, добавленный в CPython в 2024 году к релизу 3.13, удалят. В июне управляющий совет Python приостановил работу над ним в main-ветке, потребовав принятия PEP, который закроет вопросы поддержки и совместимости и задаст явные метрики успеха.
В декодере Brotli (версии 1.0.3–1.2.0) найдена out-of-bounds write (CVSS 9.2). Удалённый атакующий может выполнить код через сжатый поток. OpenAI обнаружила проблему в феврале, но корневой фикс не считали уязвимостью. Патчи выпущены для Node.js, Python, libbrotli, Bun, Envoy, Istio и др.
Python 3.15 включает JIT-компилятор, который на Linux x86-64 ускоряет выполнение на 7–8% в среднем, а на AArch64 macOS — на 11–12% относительно интерпретатора. Также появились sentinel-тип, frozendict, явные ленивые импорты для ускорения запуска, UTF-8 по умолчанию и включённые frame pointers для отладки.
В Python 3.15 добавили встроенные типы sentinel и frozendict, включили UTF-8 по умолчанию и добавили конфигурационные файлы запуска пакетов. Экспериментальный JIT-компилятор тоже получил улучшения. Подробности — в статье What's new in Python 3.15.
На Python Language Summit 2026 Дэвид Хьюитт представил план интеграции Rust в CPython. Команда из ~60 разработчиков, включая ядро Python, выбрала zlib как первый модуль. Rust станет опциональным в Python 3.16 (октябрь 2027), обязательным — не раньше 3.18 (2029). Проблемы: поддержка платформ и нехватка знания Rust среди core-разработчиков.
Подробностей не дали: по заголовку macOS 27 поставляет бесплатную локальную LLM на Mac с Apple Silicon. Автор отдельно сделал удобный доступ к ней из Node и Python.
После двух лет беты Python стал полноценным языком на Workers. Код выполняется через Pyodide в V8/workerd. Локальная разработка идёт через pywrangler (пакет workers-py), который тащит бинарник workerd на 123 МБ.
В Python 3.15 функция re.match() получает статус мягкого устаревания: её не удалят, но новый код писать с ней не рекомендуется. Вместо неё предлагается re.prefixmatch(), название которой точнее отражает поведение — привязку к началу строки, но не к концу. Решение принял менеджер релиза Хьюго ван Кеменаде.
С появлением free-threaded Python тестирование многопоточных программ стало особенно актуально. Ларри Хастингс представил метод, устраняющий недетерминизм планировщика ОС. Подробности — в видео доклада с PyCon US.
Менеджер релиза Hugo van Kemenade объявил второй кандидат Python 3.15. В RC-фазе разрешены только баг-фиксы. Разработчиков просят готовить колёса для PyPI. Саймон Уиллисон проверил Datasette, sqlite-utils — проходят, LLM ждёт scikit-learn для 3.15.
Экспериментальный JIT, появившийся в Python 3.13, больше не получит новых возможностей до дальнейшего распоряжения совета. Разрешены только исправления ошибок и уязвимостей. Причины паузы официально не объявлены.
Из-за использования актуальной версии Unicode вместо Unicode 3.2.0 в функции StringPrep, str.lower() даёт неверные результаты для IDNA 2003. Исправление добавлено в виде новых исключений. CVE-2026-17084.
Steering Council принял DEP 20: с января 2028 Django переходит с восьмимесячного цикла на ежегодный. Каждая версия получит три года поддержки, «LTS» как отдельная метка исчезает, а версии будут называть по году: Django 2028, Django 2029. До 2028 ничего не меняется, Django 6.2 LTS выйдет в апреле 2027 с поддержкой до апреля 2030.
В uv 0.12.0 команда uv init теперь создаёт проект с src/ layout, использует uv_build backend и настраивает script alias. Изменение ломает обратную совместимость. Версия всё ещё не 1.0.
Astral обновила Ruff: теперь активны 413 правил (было 59), общее число правил выросло с 708 до 968. На sqlite-utils команда uvx ruff@latest check . --fix --unsafe-fixes исправила 1538 из 1618 проблем — остались DTZ005 (datetime без tz), BLE001 (слепой except Exception) и B018 (бесполезное чтение атрибута). Сам Уиллисон правил проекты через Codex (GPT-5.6 Sol) и Claude Code (Opus 5).
Саймон Уиллисон собрал интерактивный объяснялщик EXPLAIN и EXPLAIN QUERY PLAN: SQLite крутится в Python через Pyodide в WebAssembly прямо в браузере. Идея простая и злая: не ждать, пока очередной человек «когда-нибудь научится читать query plan», а сразу тыкать его носом в расшифровку.
Симон Уилсон нашёл рецепт для cache-friendly запуска uvx tool-name в GitHub Actions. Ключевой трюк — фиксировать UV_EXCLUDE_NEWER: "2026-07-12" и включать это значение в cache key, чтобы uvx не тянул каждый раз новый набор зависимостей.
Simon Willison выпустил sqlite-utils 4.1, и главное изменение здесь очень в его стиле: команды insert и upsert получили опцию --code. Теперь можно передать блок Python-кода или путь к .py-файлу, который определяет rows() или iterable строк, вместо того чтобы городить промежуточный файл и лишний импорт.
В релизе llm 0.31.1 исправили баг с OpenAI Chat Completion endpoints: если tool call приходил с пустыми arguments, у некоторых провайдеров вылетала JSON-ошибка. Автор отдельно пишет, что баг всплыл во время тестов с llm-meta-ai — то есть не в вакууме, а в живой интеграции.
Саймон Уиллисон выкатил sqlite-utils 4.0 — это уже 124-й релиз проекта и первое крупное повышение версии со времен 3.0 в ноябре 2020-го. Внутри три заметных вещи: migrations для базы, вложенные транзакции через новый db.atomic(), и поддержка compound foreign keys. Для утилиты, которая обычно живет в духе «маленький швейцарский нож для SQLite», это уже довольно жирный апгрейд.
Вышел XWayland 24.1.13, и релиз чинит еще две security issues в кодовой базе X.Org Server. Поскольку XWayland — это слой, через который legacy X11-приложения живут внутри Wayland-сессий, такие патчи обычно означают, что кто-то снова нашел способ испортить праздник старому стеку.
Дейн Паулл (Simon Willison) готовит sqlite-utils 4.0rc3 и пишет, что ради него пересмотрел кучу issue и PR, подсматривая ответы у Claude Fable 5 и GPT-5.5. Главная новинка — поддержка introspecting и создания compound foreign keys, причём тут есть тонкое breaking change в table.foreign_keys.
Саймон Уиллисону понадобился Claude Fable, чтобы дотащить sqlite-utils до релиза 4.0rc2, и он отдельно посчитал расходы: около $149,25. История не про магию, а про очень практичную боль — автор хотел добиться стабильного major release без лишнего semver-цирка.
SearXNG — свободный метапоисковик, который собирает результаты из разных источников, не привязывая вас к одному поисковому гиганту. Проект на GitHub собрал 171 пункт на HN и 48 комментариев — для open source-поиска это уже не совсем кружок по интересам, а вполне живой инструмент.
На Хабре показали кастомный асинхронный connection pool для MySQL на Python, который авторы связывают с экономией до 80% RAM сервера. Судя по описанию, история выросла из банальной боли: под пиковыми нагрузками классическое «создаём новое соединение на каждый чих» быстро превращает backend в дорогостоящий обогреватель. Здесь хотя бы есть конкретная цифра и понятный предмет оптимизации.
Kivo — лёгкий десктопный телесуфлёр с always-on-top оверлеем, прозрачным фреймлесс-окном и автопрокруткой текста. Он открывает .txt, следит за изменениями файла и умеет ставить скролл на паузу — полезно для тех, кто читает AI-генерёнку в камеру и хочет делать вид, что всё под контролем.
Phoronix пишет, что после попадания Cache Aware Scheduling в Linux 7.2 уже появился патч-сет, который расширяет эту схему и показывает до 360% в MySQL. Звучит как место, где либо бенчмарк попал в очень узкий кейс, либо планировщик наконец начал понимать, что кэш — это не декоративная штука.
Саймон Уилсон выкатил 1.0a35 для Datasette и отдельно подсветил новый экран "Create table" в меню действий базы. Он дергает JSON API `/<database>/-/create` и умеет задавать колонки, primary key, кастомные типы, `NOT NULL`, литеральные и expression defaults, а также single-column foreign keys. Для веб-инструмента, который долго жил вокруг чтения данных, это уже вполне взрослый CRUD-уголок.
LWN разбирает переход Python к free-threaded-версии без GIL: теперь несколько потоков реально могут выполняться параллельно внутри интерпретатора. Thomas Wouters на PyCon US 2026 объясняет, что это не просто переключатель, а большая перекройка CPython с кучей оговорок по совместимости и производительности.
Автор рассказывает, как за неделю довел WebScan до версии 2.0 и упаковал проект в pip install. Внутри обещаны путь от идеи, ошибки и бенчмарк — то есть не маркетинговый «вот вам тулза», а нормальная разработческая кухня с тем, где именно всё сломалось и что пришлось переделать.
Simon Willison пишет про Pyodide 314.0 и приятную мелочь для тех, кто любит WebAssembly: Python-пакеты, собранные для Pyodide, теперь можно публиковать в PyPI и ставить во время выполнения. Раньше команда Pyodide тащила на себе больше 300 пакетов вручную — собирать, хостить и обновлять это удовольствие, конечно, было сомнительным.
Саймон Уиллисон выпустил Datasette 1.0a33 и расширил паттерн `?_extra=` — теперь он работает не только для таблиц, но и для запросов и строк. Это еще альфа, но уже с задокументированным API-экстримом, потому что без этого любой движок данных быстро превращается в музей недосказанностей.
Саймон Уиллисон выложил asyncinject 0.7 — утилиту для dependency injection в asyncio. Забавно, что он отдельно отмечает: Claude Fable 5 сам нашел баги в этой зависимости и помог их исправить, так что у модели уже почти роль очень настойчивого стажера.
Seth Larson из Python Software Foundation разбирает случай с PyCharm Full Line completion: локальный deep learning module предлагает код, который может привести к серьезным уязвимостям. Главный вопрос не в том, плохой ли совет, а в том, как вообще классифицировать такую штуку — баг это, уязвимость или просто очень дорогая галлюцинация.
В datasette-agent 0.2a0 инструменты теперь могут вызывать await context.ask_user(...) и задавать yes/no, multiple-choice или free-text вопросы прямо во время выполнения. Пока ответ не получен, агентный turn подвисает — то есть теперь у бота есть официальный способ нести ответственность и одновременно просить человека доделать половину работы.
Simon Willison выкатил datasette-agent-edit 0.1a0 — ранний плагин для правок существующего текста: от совместного Markdown до больших SQL-запросов и SVG. Он прямо пишет, что агентное редактирование сложно сделать надёжным, и ссылается на дизайн Claude text editor как на любимый ориентир.
Саймон Уиллисон показывает, как загонять Python-код в изолированную среду: MicroPython крутится внутри WebAssembly, а наружу торчит только аккуратно урезанный API. Это не «запустил код в браузере и надеюсь на лучшее», а вполне конкретная схема с ограничениями по памяти и доступу к системе.
Simon Willison выпустил micropython-wasm 0.1a2 и добавил командную строку, чтобы запускать MicroPython в WebAssembly-песочнице без лишнего ритуала. Он использует это как основу для sandbox-плагина в Datasette Agent, то есть идея не просто «поигрался», а завязана на реальном исполнении пользовательского кода.
Simon Willison выкатил alpha datasette-agent-micropython 0.1a0: цель — безопасно генерировать и исполнять Python-код внутри Datasette Agent. Он пишет, что GPT-5.5 пока не смог выбраться из песочницы, а это уже неплохой тест на адекватность всей конструкции. Основа — webassembly и Micropython, то есть попытка сделать «дайте ИИ код-раннер, но без пожара».
Еще один релиз от Willison — micropython-wasm 0.1a1. Это не громкий анонс, а набор исправлений под ограничения, которые всплыли, пока он пытался собрать datasette-agent-micropython поверх WebAssembly. То есть сначала сломалось на практике, потом стало немного менее сломанным — классическая инфраструктурная романтика.
Simon Willison выкатывает минорный релиз datasette 1.0a32 и честно пишет: это багфикс, а не повод для шампанского. Починили INSERT ... RETURNING в новом endpoint /db/-/execute-write и несколько проблем с base_url, которые всплыли во время экспериментов с Service Workers.
Еще один взгляд на datasette 1.0a32: релиз маленький, но конкретный. Исправили INSERT ... RETURNING через /db/-/execute-write и добили баги с base_url, которые вылезли при экспериментах с Service Workers.
Уиллисон показывает, как Datasette Lite крутит Python-приложение целиком в браузере, без сервера, на Pyodide в WebAssembly. Старый вариант через Web Workers и перехват навигации работал, но был довольно корявым — теперь автор исследует схему с service worker, чтобы браузер вел себя чуть менее как цирк с конями.
В CUDA 13.3 завезли CUDA Python 1.0 и поддержку CUDA Tile for C++, то есть NVIDIA продолжает обвешивать свой стек еще одной прослойкой абстракций. Phoronix пишет, что это очередной шаг в unified GPU programming stack — формулировка, за которой обычно прячется мысль: «держитесь, сейчас будет ещё сложнее».
Саймон Уилсон прошёлся по git-истории README и насчитал цепочку: Warelay → CLAWDIS → CLAWDBOT → Clawdbot → Moltbot → OpenClaw. Для этого он использовал свой скрипт first_line_history.py, который, судя по всему, отлично подходит для археологии нейминга в проектах, где название меняется чаще, чем API.