پکت: بازنویسی pnpm با Rust
خلاصهٔ کاملتر
اگه از pnpm استفاده میکنی، یه خبر جالب داری — تیم رسمی pnpm داره روی یه پروژه کار میکنه به اسم pacquet که کل این ابزار رو از TypeScript به Rust بازنویسی میکنه.
pacquet یه پکیج منیجر جدید یا یه ایده تازه نیست. هدفش اینه که دقیقاً همون رفتار، فلگها، مقادیر پیشفرض، کدهای خطا، فرمت فایلها و ساختار دایرکتوری pnpm رو حفظ کنه، فقط زیر پوستش با Rust پیادهسازی بشه. به عبارت دیگه، از دید کاربر هیچ تفاوتی نمیکنه، ولی از نظر کارایی تفاوت بزرگیه.
این بازنویسی در دو فاز اتفاق میافته. فاز اول که الان روش تمرکز داره، جایگزینی موتور fetching و linking هست. یعنی pnpm مثل قبل lockfile رو میسازه، ولی بقیه کارها — دانلود پکیجها و لینک کردنشون — رو pacquet انجام میده.
تیم توسعهدهنده انتظار داره همین فاز اول به تنهایی، pnpm رو در اکثر سناریوها حداقل دو برابر سریعتر کنه. این عدد کمی نیست، مخصوصاً برای پروژههای بزرگ که نصب وابستگیها وقت زیادی میبره.
فاز دوم هم قراره بخش resolution وابستگیها رو در بر بگیره. یعنی تحلیل اینکه چه پکیجهایی باید نصب بشن و با چه نسخهای هم به pacquet منتقل میشه. با تمومشدن این فاز، عملاً کل موتور pnpm با Rust پیادهسازی شده.
این پروژه هنوز در مرحله توسعه فعاله و آماده استفاده در محیط production نیست. ولی اینکه تیم رسمی pnpm پشتشه، نشون میده که این یه تغییر جدیه و نه یه آزمایش جانبی.
انتخاب Rust برای این بازنویسی تصادفی نیست. Rust در حوزه ابزارهای توسعه نرمافزار داره جای خودش رو باز میکنه — از Biome و Rolldown گرفته تا SWC و Turbopack — همه دارن به سمت Rust میرن چون هم سرعت خوبی داره و هم مدیریت حافظهاش امنتره.
نکات کلیدی:
- pacquet بازنویسی رسمی pnpm از TypeScript به Rust هست
- رفتار و خروجی ابزار دقیقاً مثل pnpm باقی میمونه
- فاز اول: جایگزینی موتور نصب (fetching و linking) — هدف فعلی تیم
- انتظار میره که pnpm رو حداقل ۲ برابر سریعتر کنه
- فاز دوم: تحویلگرفتن بخش resolution وابستگیها
- هنوز آماده استفاده در production نیست




