JIT был принят в код, но не получил одобрения
Экспериментальный JIT-компилятор Python появился в CPython 3.13 как функция, включаемая по желанию, на основе работы, начатой в конце 2023 и начале 2024 года. Основной разработчик Brandt Bucher первоначально включил в код copy-and-patch JIT, рассчитывая повысить производительность во время выполнения.
Однако JIT так и не получил формального долгосрочного одобрения. Он был выпущен в рамках PEP 744 — информационного PEP (Informational PEP), который лишь описывал функцию, а не PEP категории Standards Track, закрепившего бы его место и обязательство по дальнейшей поддержке. Этот процедурный пробел с самого начала делал его будущее неопределённым.
Это не отмена из-за ошибок: сам код работал. Дело в том, что проект Python допускает выпуск экспериментальных функций без постоянных обязательств, создавая пространство для инноваций, которое автоматически не возлагает на основную команду бессрочную поддержку. Удаление JIT связано с отсутствием формального консенсуса, а не с техническим изъяном.
В итоге Руководящий совет Python выдвинул ультиматум: получить PEP категории Standards Track, иначе JIT будет удалён. Этот шаг подчеркнул, что выпустить экспериментальный код — это одно, а убедить сообщество и мейнтейнеров бессрочно выделять ресурсы — намного более сложная задача в разработке с открытым исходным кодом.
Совет потребовал доказательств, а не обещаний
Руководящий совет Python, не впечатлённый неформальным появлением JIT, в июне 2026 года выдвинул ультиматум: в течение шести месяцев подать и провести предложение категории Standards Track, иначе код экспериментального JIT будет удалён из ветки main. Это была не рекомендация, а жёсткий срок для функции, обошедшей стандартные процедуры управления.
В ответ Savannah Savannah Ostrowski, Ken Jin и Brandt Bucher в июле 2026 года подали PEP 836 под названием «JIT Go Brrr: The Path to a Supported JIT Compiler for CPython». Критика совета из 10 пунктов последовала быстро и была беспощадной. PEP раскритиковали за недостаточное внимание к безопасности, назвав её «недостаточно проработанной областью», а оценки производительности и влияния на пользователей отвергли как «чрезмерно оптимистичные».
Пожалуй, самым серьёзным возражением стала предложенная проверка совместимости, запланированная на релиз-кандидат Python 3.17 в августе 2028 года. Совет счёл эти сроки «слишком, слишком поздними», подчеркнув требование незамедлительных и надёжных гарантий. Без убедительной дорожной карты будущее JIT выглядело всё более мрачным, несмотря на первоначальные перспективы.
У многообещающего предложения закончились люди
Ультиматум Руководящего совета Python (Python Steering Council) тяжело повис в воздухе, но многообещающее предложение так и не обрело опору. 19 октября 2026 года Savannah Savannah Ostrowski, релиз-менеджер Python 3.16 и 3.17, официально отозвала PEP 836 — предложение «JIT Go Brrr», призванное повысить статус JIT до Standards Track. Причина, которую она назвала: явная нехватка «личных ресурсов, чтобы продвигать текущую версию дальше».
Это не было заявлением о том, что JIT-компиляторы бесполезны, — скорее наоборот. Savannah Ostrowski и её команда по-прежнему были убеждены в потенциале этой технологии для повышения производительности Python. Отзыв отражал огромные инженерные и организационные усилия, необходимые для выполнения строгих требований совета, включая устранение проблем безопасности и демонстрацию более существенного прироста производительности, чем скромное ускорение на 4–12% по среднему геометрическому, наблюдавшееся в узких бенчмарках.
Отзывы совета были прямолинейными: безопасность названа «недостаточно проработанной областью», а предложенная на август 2028 года проверка совместимости для Python 3.17 признана «слишком, слишком поздней». Без выделенных ресурсов для всестороннего решения этих вопросов PEP 836 не мог продвигаться дальше. О первоначальном, менее формальном появлении JIT см. PEP 744 – JIT Compilation.
Теперь последствия практически предрешены: код экспериментального JIT будет удалён из основной ветки CPython в начале цикла разработки Python 3.16. Недолгий флирт Python со встроенным в дерево исходников JIT, судя по всему, закончился — жертва реалий open source, где выпуск кода часто оказывается самой простой частью.
Нравится статья? Получайте такие каждое утро на почту.
одно письмо в день · отписка в два клика · без сторонних трекеров
Настоящее узкое место — долгосрочное владение кодом
Слияние кода — это начало, а не конец разработки с открытым исходным кодом. Предстоящее удаление JIT из основной ветки CPython иллюстрирует важный урок: ответственность выходит за рамки первых коммитов. Мейнтейнеры постоянно отвечают за проверки безопасности, риски совместимости, затраты памяти и долгосрочную поддержку — эту нагрузку команда JIT, несмотря на веру в технологию, не смогла выдержать.
Этот итог не следует трактовать как остановку работ над производительностью Python. JIT был экспериментальной функцией, включаемой по желанию. Значительная часть недавнего прироста скорости CPython, включая существенные улучшения в Python 3.11 и 3.12, обеспечена специализирующим адаптивным интерпретатором — отдельной и продолжающейся стратегией оптимизации.
Кроме того, это решение не означает конец разработки JIT для Python в целом. Альтернативные проекты, такие как PyPy, Numba и PyTorch Inductor, продолжают использовать JIT-компиляцию. Эти решения ориентированы на другие нагрузки и среды выполнения и находятся вне основной линии разработки CPython, что показывает: концепция JIT остаётся важной для отдельных высокопроизводительных приложений на Python.
Часто задаваемые вопросы
Почему CPython удаляет свой экспериментальный JIT?
У JIT не было одобренного PEP категории Standards Track, оставались нерешённые вопросы безопасности и совместимости, а у его мейнтейнеров не было возможности выделить ресурсы, необходимые для дальнейшего продвижения предложения.
JIT удалили из-за ошибок?
Нет. Решение касалось управления проектом, долгосрочной поддержки, проверки безопасности и вопроса о том, оправдывают ли ожидаемые преимущества затраты.
В чём разница между PEP 744 и PEP 836?
PEP 744 описывал экспериментальный JIT, но имел информационный статус. PEP 836 добивался формального одобрения поддерживаемого JIT, однако его ведущий автор отозвала предложение.
Означает ли это, что в Python никогда не будет JIT?
Нет. Решение касается JIT в основной ветке CPython; независимые проекты и будущие предложения по-прежнему могут развивать JIT-компиляцию.

