پرونده JIT تو CPython بسته شد: PEP 836 پس گرفته شد
خلاصهٔ کاملتر
کامپایلر JIT (یعنی کامپایلری که موقع اجرا کد پایتون رو به کد ماشین تبدیل میکنه تا سریعتر اجرا بشه) اوایل ۲۰۲۴ توسط Brandt Bucher به CPython اضافه شد و تو Python 3.13 بهصورت آزمایشی منتشر شد. معمولاً یه فیچر به این بزرگی فقط بعد از تأیید یه PEP از نوع standards-track وارد میشه، ولی برای JIT فقط PEP 744 نوشته شد که informational بود، یعنی فقط اطلاعرسانی میکرد و تأیید رسمی برای جلو رفتن نبود.
تو ژوئن، شورای راهبری پایتون (steering council) کار روی JIT تو شاخه main رو متوقف کرد تا یه PEP پذیرفتهشده بیاد که نگهداری، سازگاری، معیارهای موفقیت و زمانبندی رو مشخص کنه. ضربالاجل شش ماه بود و اگه PEP پذیرفته نمیشد، کد JIT باید از main حذف میشد. Thomas Wouters از اعضای شورا گفت اتفاق خاصی باعث این درخواست نشده، ولی میخواستن مطمئن بشن JIT با instrumentation، دیباگ، profiling و پروژههایی مثل CinderX، Numba و compile تو PyTorch تداخل نداره.
Bucher، Savannah Ostrowski و Ken Jin تو ۳ جولای PEP 836 رو با عنوان «JIT Go Brrr» منتشر کردن. یکی از نقدهای اصلی، از طرف Wouters و Mark Shannon، این بود که این سند باید دو PEP جدا باشه: یکی برای اهداف و یکی برای جزئیات پیادهسازی. Ostrowski از ساختار دفاع کرد و گفت هدف بدون برنامه پشتش اصلاً هدف حساب نمیشه.
تو ۲۱ سپتامبر شورا گفت PEP به همه سؤالها جواب داده، ولی بعضی جوابها چندان قانعکننده نبودن. یه لیست دهموردی از نگرانیها داد: از مصرف حافظه و امنیت تا وابسته نبودن طراحی به پلتفرم خاص. شورا گفت PEP درباره تفاوت رفتار JIT برای کاربرا «بیش از حد خوشبینانه» نگاه میکنه، به امنیت کم پرداخته و باید با تیم امنیتی پایتون (PSRT) هماهنگ بشه. همچنین بررسی سازگاری با پکیجهای پرطرفدار PyPI که برای اولین RC نسخه 3.17 (حدود آگوست ۲۰۲۸) برنامهریزی شده بود رو خیلی دیر دونست و خواست از همین حالا و بهصورت مداوم انجام بشه.
تو ۱۹ اکتبر، Ostrowski اعلام کرد PEP پس گرفته میشه. به گفتهش شورا بهدرستی سطح بالایی برای این حجم از تغییر گذاشته و نویسندهها توان شخصی ادامه دادن نسخه فعلی رو ندارن. با این حال هنوز به مسیر فنی، از جمله پشتیبانی از free-threading و یه frontend مبتنی بر متد، باور دارن و پیادهسازی مرجع رو منتشر میکنن تا بقیه بتونن روش کار کنن. Brett Cannon گفت کار تو مخزن اصلی متوقف میشه و بعیده PEP جایگزینی برسه، چون همه کسایی که JIT رو جلو میبردن نویسنده یا مشارکتکننده همین PEP بودن.
طبق گزارش LWN، احتمالاً JIT بهزودی از main حذف میشه تا مشکلات ناشی از حذفش اوایل چرخه توسعه Python 3.16 حل بشه. هنوز معلوم نیست تیم اصلی کار رو جای دیگه ادامه میده یا پروژه میمونه برای هر کسی که علاقه داشته باشه.
نکات کلیدی:
- JIT آزمایشی از Python 3.13 وارد CPython شد و فقط PEP informational شماره 744 پشتش بود.
- شورای راهبری تو ژوئن شش ماه مهلت داد تا یه PEP از نوع standards-track پذیرفته بشه، وگرنه کد JIT حذف میشه.
- PEP 836 رو Brandt Bucher، Savannah Ostrowski و Ken Jin نوشتن و ۳ جولای منتشر شد.
- شورا یه لیست دهموردی از نگرانیها مثل حافظه، امنیت، وابستگی به پلتفرم و تفاوت رفتار برای کاربر داد.
- PEP تو ۱۹ اکتبر به خاطر کمبود وقت و توان نویسندهها پس گرفته شد و پیادهسازی مرجع منتشر میشه.
- انتظار میره JIT اوایل چرخه توسعه Python 3.16 از شاخه main حذف بشه.




