مدير الحزم الشهير pnpm أطلق الإصدار 12 — تحديث ضخم يقطع أوقات تثبيت الحزم بنسبة تصل إلى 90 بالمائة. المحرك الأساسي تم إعادة كتابته بالكامل بلغة Rust بدلاً من الاعتماد على JavaScript وعمليات Node.js الثقيلة.

تحويل هائل: من JavaScript إلى Rust

تاريخياً، pnpm فازت على npm بفضل المتجر القابل للعنونة والملفات المرتبطة بـ hard-links. لكن السرعة بقيت محدودة بـ بطء تحميل Node.js والعمليات أحادية الخيط.

الحل، المُسمى "pacquet"، بدأ كـ مشروع تجريبي قبل دمجه في البنية الأساسية . المحرك الجديد يتكون من:

  • 65.9 بالمائة Rust: العمليات الثقيلة والمتوازية
  • 33.5 بالمائة TypeScript: المنطق والتكامل

بـ توجيه الجلب والفك والحل من خلال Rust الأصلي، البرنامج الآن يستفيد من المعالجة متعددة الخيوط المستحيلة سابقاً في JavaScript.

الأرقام الصادمة: 90% أسرع

اختبارات التثبيت بدون ذاكرة تخزين مؤقت أظهرت:

  • pnpm 12: 5.19 ثانية
  • pnpm 11: 8.22 ثانية
  • npm (الافتراضي): 47.7 ثانية

بالإضافة إلى ذلك، خادم السجل الجديد pnpr المبني بـ Rust يقطع الوقت إلى 3.37 ثانية فقط — تحسن مذهل.

التوافقية الكاملة المحفوظة

القلق الأكبر للفرق الهندسية هو كسر الأنابيب الآلية. لكن Zoltan Kochan، قائد الصيانة ضمن استمرارية بنيوية مطلقة:

  • جميع الأوامر: تعمل بنفس الطريقة
  • جميع الأعلام والإعدادات: لم تتغير
  • ملف Lockfile (pnpm-lock.yaml): بدون تعديلات مطلوبة
  • واجهة سطر الأوامر: مطابقة بالكامل

هذا يعني ملايين من البرامج النصية البناء الآلية لا تحتاج لأي تعديل. الترقية بسيطة جداً.

محركات JavaScript تتحول إلى Rust

هذا التحول يعكس اتجاهاً أوسع في الصناعة. أدوات البرمجة الأساسية في JavaScript كـ:

كل هذه تُستبدل بـ لغات مجمعة آمنة للذاكرة لمحاربة الكمون.

التأثير على الأسواق الناشئة

بالنسبة لفرق الهندسة في الأسواق الناشئة مثل كينيا ونيجيريا، خفض أوقات التثبيت بـ 90% يؤثر مباشرة على القاع الخاص بـ الشركات. النطاق المحدود وتكاليف خوادم CI/CD تشكل نفقات تشغيلية كبيرة. التثبيتات المحلية الأسرع تحسّن جودة حياة المطورين على الأجهزة المحدودة الموارد.

المستقبل: نهاية انتظار دقائق

pnpm 12 متاحة الآن عبر وسم التوزيع next-12 ، ومن المتوقع أن تندمج حزم مثل Homebrew و winget الإصدار قريباً.

مع بدء فرق monorepo العالمية التبديل، عصر الانتظار لدقائق لتهيئة مشروع JavaScript ينتهي بشكل نهائي.

المصدر:

Streamline Feed