پایان جیت آزمایشی پایتون؟ PEP 836 پس گرفته شد و حذف JIT نزدیک است
پس از پسگرفتن PEP 836، کامپایلر JIT آزمایشی CPython احتمالاً بهزودی از شاخه اصلی حذف میشود. ماجرا و پیامدهایش برای برنامهنویسها.
نویسندگان PEP 836 که برای تبدیل JIT آزمایشی پایتون به بخشی رسمی و پشتیبانیشده از CPython نوشته شده بود، آن را در ۱۹ اکتبر ۲۰۲۶ پس گرفتند. به گزارش LWN، که ۲۶ اکتبر منتشر شد، حذف JIT از شاخه اصلی CPython بهزودی محتمل است. هنوز تصمیم یا کامیت رسمی برای حذف اعلام نشده و این «احتمال حذف» برداشت نویسنده گزارش است.
ماجرا از کجا شروع شد
کامپایلر JIT آزمایشی اوایل ۲۰۲۴ برای پایتون ۳.۱۳ به CPython اضافه شد، بدون آنکه PEP از نوع «استاندارد» پشتش باشد. بعدها PEP 744 نوشته شد، اما صرفاً اطلاعرسانی بود و تعهدی درباره نگهداری، سازگاری یا معیار موفقیت نمیداد.
در ژوئن ۲۰۲۶ شورای راهبری پایتون اعلام کرد توسعه JIT در شاخه اصلی، جز رفع باگ و مسائل امنیتی، متوقف میشود تا PEPای پذیرفته شود. این PEP باید بار نگهداری، سازگاری، اثر بر توزیعکنندهها، معیارهای موفقیت و زمانبندی را روشن میکرد. مهلت آن شش ماه بود، یعنی تقریباً تا دسامبر ۲۰۲۶. در غیر این صورت شورا کد JIT را از شاخه اصلی حذف میکرد.
نکات کلیدی
- JIT: اوایل ۲۰۲۴، پایتون ۳.۱۳
- توقف توسعه: ژوئن ۲۰۲۶، با مهلت ششماهه
- PEP 836: انتشار ۳ ژوئیه ۲۰۲۶
- پسگرفتن PEP: ۱۹ اکتبر ۲۰۲۶
نظر شورا و دلیل پسگرفتن PEP
سه مشارکتکننده اصلی JIT در ۳ ژوئیه PEP 836 را با عنوان «JIT Go Brrr: مسیر رسیدن به یک کامپایلر JIT پشتیبانیشده برای CPython» منتشر کردند. بازخوردها متفاوت بود. برخی پیشنهاد دادند PEP به دو سند تقسیم شود، یکی برای اهداف و یکی برای پیادهسازی، اما نویسندگان مخالفت کردند.
شورا در بیانیه ۲۱ سپتامبر گفت PEP به همه پرسشهایش پاسخ داده، هرچند بعضی را قانعکنندهتر از بقیه. بیانیه یک فهرست دهموردی هم داشت: اثر بر حافظه، یکسان بودن رفتار روی پلتفرمها، تفاوتهای قابلمشاهده برای کاربر و امنیت. به نظر شورا، PEP درباره تفاوت رفتار با JIT روشن بیش از حد خوشبین بود و بخش امنیت ضعیف بود. شورا زمانبندی بررسی سازگاری با بستههای پرکاربرد PyPI را هم نقد کرد. PEP این بررسی را به نخستین نسخه کاندیدای ۳.۱۷ (حدود اوت ۲۰۲۸) موکول کرده بود و شورا آن را «بسیار دیر» دانست.
در ۱۹ اکتبر یکی از نویسندگان، که مدیر انتشار پایتون ۳.۱۶ و ۳.۱۷ هم هست، پسگرفتن PEP را اعلام کرد. به گفته او، نویسندگان توان و وقت شخصی کافی برای رساندن PEP به استانداردی که شورا خواسته ندارند. آنها همچنان به این مسیر باور دارند، از جمله پشتیبانی از پایتون بدون GIL و یک فرانتاند مبتنی بر متد، و پیادهسازی مرجع را منتشر میکنند تا دیگران بسازند.
بعد از این چه میشود
یکی از اعضای تیم هسته اعلام کرد کار روی JIT در مخزن اصلی متوقف میشود و ادامهاش در جای دیگر به جامعه بستگی دارد. او ارائه PEP جایگزین پیش از مهلت را هم بعید دانست، چون همه افراد فعال در این کار نویسنده یا مشارکتکننده PEP 836 بودند.
به نوشته LWN، حذف احتمالاً زود انجام میشود تا مشکلات احتمالی در اوایل چرخه توسعه پایتون ۳.۱۶ حل شود. هنوز روشن نیست مشارکتکنندگان اصلی کار را بهصورت جداگانه ادامه میدهند یا نه. نویسنده گزارش برای توضیح ایمیل زده بود، اما تا زمان انتشار پاسخی نگرفته بود. گزارش آمار سرعت یا هزینه نگهداری هم نمیدهد و دلایل بیشتر کیفی است.
نکات کلیدی
- حذف هنوز رسمی نشده و پیشبینی نویسنده گزارش است
- PEP 836 پس گرفته شده و جایگزین نزدیکی دیده نمیشود
- پیادهسازی مرجع برای استفاده دیگران منتشر میشود
چرا برای برنامهنویسها مهم است
JIT در نسخههای فعلی پیشفرض و برای تولید پیشنهاد نشده بود، پس برای بیشتر کاربران تغییر فوری ایجاد نمیکند. اما این ماجرا نشان میدهد ویژگیهای بزرگ عملکردی در CPython، حتی با حمایت اولیه، باید به نگهداری بلندمدت، امنیت، سازگاری و فرایند PEP پاسخ دهند.
اگر روی برنامهریزی برای سرعت پایتون حساب کردهاید، فعلاً باید به بهینهسازیهای دیگر، کتابخانههای عددی یا کامپایلرهای خارجی مثل Numba و torch.compile فکر کنید. اینها در گزارش بهعنوان پروژههای مرتبط یا جایگزین ذکر شدهاند. برای استفاده در ایران موضوع ویژهای مطرح نیست، چون پایتون متنباز است و این تغییر مربوط به مسیر توسعه آن است.
جمعبندی
ظاهراً فصل JIT آزمایشی در شاخه اصلی CPython رو به پایان است، نه بهدلیل شکست فنی اثباتشده، بلکه چون مسیر پذیرش رسمی آن با کمبود توان نویسندگان و استانداردهای سختگیرانه شورا متوقف شد. سرنوشت قطعی در روزهای آینده روشنتر میشود.
منابع
این خبر بر اساس منابع بالا به فارسی بازنویسی و خلاصه شده است؛ برای جزئیات کامل به منبع اصلی مراجعه کنید.