צוות הליבה של pnpm משיק כתיבה מחדש מבוססת Rust עבור גרסה 12, מה שמקצץ את זמני ההתקנה החמים (warm install) מ-381ms ל-12ms ואת ההתקנות הנקיות (clean installs) מ-6.5s ל-2.2s. שיפור המהירות משמעותי ביותר עבור מפתחים שמריצים חבילות בצינורות אינטגרציה רציפה (CI), שבהם כל שנייה נספרת.
למה הכתיבה מחדש חשובה עכשיו
pnpm כבר מנצח מתחרים רבים במהירות, אך הוא רץ על Node.js, מה שמכריח על עלות הפעלה (startup cost) בכל פעם שהפקודה מופעלת. העלות הזו באה לידי ביטוי בהשהיה ניכרת במשימות CI שמביאות ומקשרות תלויות (dependencies) שוב ושוב. על ידי העברת העבודה הכבדה לבינארי Rust טבעי — שקיבל את שם הקוד pacquet — הצוות מבטל את ה-bootstrap של Node.js ומאפשר ל-Rust לטפל בתנועה מאסיבית במערכת הקבצים באמצעות thread יחיד.
הכתיבה מחדש היא פורט (port), לא עיצוב מחדש. כל הדגלים (flags), פורמטים של קובצי ה-lockfile ומבנה ה-node_modules המוכר נשארים בדיוק אותו הדבר, כך שסקריפטים ותהליכי עבודה קיימים אינם דורשים שינויים. בגרסה 11 ניתן כבר לבחור בשימוש ב-backend של pacquet; גרסה 12 הופכת אותו לברירת המחדל עבור שליפה וקישור (fetching and linking).
שיפורי ביצועים מדידים
מדדי ביצועים (Benchmarks) שסיפקו המפתחים מראים:
- Warm install (הרצה חוזרת עם מטמון): 381ms ← 12ms, שיפור פי 30.
- Clean install (ללא מטמון): 6.5s ← 2.2s, קיצוץ של יותר מחצי מהזמן.
סיכונים ופשרות
מנוע ה-Rust עדיין נמצא בשלב אלפא. הצוות ממליץ שלא להשתמש בגרסה 12 בסביבת ייצור (production) עד שתצא משלב ה-pre-release.
איך אפשר לנסות את זה כבר היום
מפתחים יכולים לבחון את ה-backend החדש על ידי הרצת pnpm self-update next-12, שמורידה את הבינארי האחרון של ה-pre-release. הפקודה מחליפה את מנוע ה-JavaScript במנוע ה-Rust מבלי לשנות את ה-pnpm-lock.yaml או את מבנה ה-node_modules של הפרויקט. צוותים שרוצים להעריך את ההשפעה על צינורות ה-CI שלהם צריכים להפעיל runner זמני, להפעיל את ה-backend של pacquet, ולהשוות את זמני הבנייה (build times) מול ההגדרה הנוכחית.
המגמה הרחבה יותר
המהלך של pnpm משקף גל של מעברים בכלי פיתוח לעבר שפות מקומפלות. פרויקטים כמו Biome, Oxc ו-Deno בנו מחדש רכיבים קריטיים לביצועים ב-Rust או ב-Go כדי לצמצם את השיהוי (latency) בתהליכי העבודה של המפתחים.
מה כדאי לעקוב אחריו בהמשך
- אבני דרך של יציבות: מעקב אחר גרסאות יגיד לנו מתי זה יהיה בטוח לשימוש בייצור.
- שוויון בתכונות (Feature parity): משתמשים צריכים לעקוב אחר ה-changelog כדי לזהות פערים.
בשורה התחתונה: הכתיבה מחדש של pnpm ב-Rust הופכת מנהל חבילות שכבר מהיר למנהל מהיר כמעט באופן מיידי עבור התקנות חוזרות, והיא מקצצת יותר מחצי מהזמן עבור התקנות חדשות. עבור צוותים שמבלים דקות רבות בפתרון תלויות (dependency resolution) בכל לילה, השדרוג מבטיח הפחתה מדידה בעלויות ה-CI מבלי לדרוש שינוי מוחלט בתהליכי העבודה.
