PM2 نسخه ۷ منتشر شد
خلاصهٔ کاملتر
PM2، ابزار محبوب مدیریت پروسههای Node.js، به نسخه ۷ رسید و این آپدیت یه بازنویسی اساسی محسوب میشه. مهمترین تغییر شکستآور اینه که حالا حداقل به Node.js 18 نیاز داری و پشتیبانی از Node 16 کاملاً کنار گذاشته شده. اگه روی نسخههای قدیمیتری، قبل از آپگرید حسابی فکر کن.
یکی از بزرگترین تغییرات این نسخه، کاهش وابستگیهای خارجی هست. ابزارهایی مثل needle، mkdirp، enquirer، promptly، sprintf-js و source-map-support حذف شدن و جاشون رو APIهای بومی Node.js گرفتن. مثلاً به جای mkdirp حالا از fs.mkdirSync({ recursive: true }) استفاده میشه، به جای url.parse() از URL constructor بومی، و به جای needle از fetch داخلی. این کار سطح حمله زنجیره تأمین (supply chain) رو به شکل قابل توجهی کم میکنه.
از نظر امنیتی هم این نسخه حرفهای زیادی برای گفتن داره. دو CVE مهم پچ شدن: یکی CVE-2025-5891 که یه باگ ReDoS در regex پارس کردن رشتهها توی Config.js بود، و دیگری CVE-2026-27699 که با آپدیت proxy-agent و basic-ftp برطرف شده. علاوه بر اینا، چند مورد command injection خطرناک در فایلهای WebAuth.js، PM2IO.js و lib/tools/open.js هم fix شدن — همه با جایگزین کردن exec() با execFile() که ورودی رو به شکل امنتری هندل میکنه. یه باگ prototype pollution هم که از طریق کلید __proto__ در Configuration.set/unset قابل سوءاستفاده بود، بسته شده.
Bun هم حالا رسماً پشتیبانی میشه. فایلهای ProcessContainerBun.js و ProcessContainerForkBun.js اضافه شدن و چند باگ مربوط به cluster mode و console override توی Bun هم رفع شده. همچنین OpenTelemetry به عنوان وابستگی مستقیم وارد پروژه شده که ردیابی (tracing) پروسهها رو بهتر میکنه.
توی بخش bug fixها هم یه بازنویسی جالب داریم: منطق TreeKill که برای کشتن پروسههای فرزند استفاده میشه، از نو نوشته شده. الان به جای چندین بار walk کردن درخت پروسهها، یه snapshot یکبار گرفته میشه و درخت توی حافظه ساخته میشه — این کار race conditionهای قبلی رو از بین میبره. چند باگ مربوط به Windows هم، از جمله مشکل home path و TreeKill callback، fix شدن.
نکات کلیدی:
- حداقل نیاز به Node.js 18، پشتیبانی از Node 16 حذف شد
- وابستگیهای خارجی زیادی حذف و با ابزارهای بومی Node.js جایگزین شدن
- دو CVE امنیتی (
CVE-2025-5891وCVE-2026-27699) و چند باگ command injection و prototype pollution پچ شدن - پشتیبانی رسمی از رانتایم Bun اضافه شد
- OpenTelemetry به عنوان وابستگی مستقیم اضافه شده
- بازنویسی TreeKill برای رفع race condition در مدیریت پروسههای فرزند
- گزینه
--ftpبه دستورpm2 serveاضافه شد




