pnpm-এর কোর টিম v12-এর জন্য একটি Rust-ভিত্তিক রিরাইট (rewrite) চালু করছে, যা warm install-এর সময় ৩৮১ ms থেকে কমিয়ে ১২ ms এবং clean install-এর সময় ৬.৫ s থেকে কমিয়ে ২.২ s-এ নিয়ে আসছে। এই গতির উন্নতি সেইসব ডেভেলপারদের জন্য সবচেয়ে বেশি গুরুত্বপূর্ণ যারা continuous-integration (CI) পাইপলাইনে প্যাকেজ রান করেন, যেখানে প্রতিটি সেকেন্ড অত্যন্ত মূল্যবান।

কেন এই রিরাইট এখন গুরুত্বপূর্ণ

গতির দিক থেকে pnpm ইতিমধ্যেই অনেক প্রতিদ্বন্দ্বীকে ছাড়িয়ে গেছে, কিন্তু এটি Node.js-এর ওপর চলে, যার ফলে প্রতিবার কমান্ড লঞ্চ করার সময় একটি startup cost বা প্রাথমিক সময় ব্যয় হয়। এই খরচটি CI জবগুলোতে একটি লক্ষণীয় বিরতি হিসেবে দেখা দেয়, যেখানে বারবার ডিপেন্ডেন্সি (dependencies) ফেচ এবং লিঙ্ক করতে হয়। মূল কাজগুলোকে একটি নেটিভ Rust বাইনারিতে—যার কোডনাম pacquet—স্থানান্তরের মাধ্যমে টিম Node.js bootstrap-এর প্রয়োজনীয়তা দূর করেছে এবং Rust-কে একটি সিঙ্গেল থ্রেডের মাধ্যমে বিশাল ফাইল-সিস্টেমের কাজ সামলানোর সুযোগ করে দিয়েছে।

এই রিরাইটটি মূলত একটি পোর্ট (port), কোনো রিডিজাইন (redesign) নয়। সমস্ত ফ্ল্যাগ (flags), লকফাইল ফরম্যাট এবং পরিচিত node_modules লেআউট হুবহু একই থাকবে, তাই বিদ্যমান স্ক্রিপ্ট এবং ওয়ার্কফ্লোতে কোনো পরিবর্তনের প্রয়োজন নেই। v11-এ আপনি ইতিমধ্যেই pacquet ব্যাকএন্ড ব্যবহার করার সুযোগ পেতে পারেন; v12-এ ফেচিং এবং লিঙ্কিংয়ের জন্য এটি ডিফল্ট হিসেবে থাকবে।

পরিমাপযোগ্য পারফরম্যান্স বৃদ্ধি

মেইনটেইনারদের দেওয়া বেঞ্চমার্ক অনুযায়ী:

  • Warm install (ক্যাশ সহ পুনরায় রান করা): ৩৮১ ms → ১২ ms, যা ৩০ গুণ উন্নতি।
  • Clean install (ক্যাশ ছাড়া): ৬.৫ s → ২.২ s, যা সময় অর্ধেকেরও বেশি কমিয়ে আনে।

ঝুঁকি এবং সীমাবদ্ধতা

Rust ইঞ্জিনটি এখনও আলফা (alpha) পর্যায়ে রয়েছে। টিম পরামর্শ দিচ্ছে যে, প্রি-রিলিজ পর্যায় থেকে বেরিয়ে না আসা পর্যন্ত প্রোডাকশনে v12 ব্যবহার না করার জন্য।

আজই এটি কীভাবে পরীক্ষা করবেন

ডেভেলপাররা pnpm self-update next-12 কমান্ডটি চালিয়ে নতুন ব্যাকএন্ডটি পরীক্ষা করতে পারেন, যা সর্বশেষ প্রি-রিলিজ বাইনারিটি ডাউনলোড করে আনবে। এই কমান্ডটি প্রজেক্টের pnpm-lock.yaml বা node_modules লেআউট পরিবর্তন না করেই JavaScript ইঞ্জিনের পরিবর্তে Rust ইঞ্জিন ব্যবহার শুরু করে। যে দলগুলো তাদের CI পাইপলাইনে এর প্রভাব মূল্যায়ন করতে চায়, তাদের উচিত একটি ডিসপোজেবল (disposable) রানার চালু করা, pacquet ব্যাকএন্ড সক্রিয় করা এবং বর্তমান সেটআপের সাথে বিল্ড টাইম তুলনা করা।

বৃহত্তর প্রবণতা

pnpm-এর এই পদক্ষেপটি কম্পাইল্ড ল্যাঙ্গুয়েজের (compiled languages) দিকে টুলিং মাইগ্রেশনের একটি ঢেউকে প্রতিফলিত করে। Biome, Oxc এবং Deno-এর মতো প্রজেক্টগুলো ডেভেলপার ওয়ার্কফ্লো থেকে ল্যাটেন্সি (latency) কমাতে তাদের পারফরম্যান্স-ক্রিটিক্যাল কম্পোনেন্টগুলো Rust বা Go-তে পুনরায় তৈরি করেছে।

পরবর্তীতে যা খেয়াল রাখতে হবে

  • Stability milestones: রিলিজগুলো পর্যবেক্ষণ করলে বোঝা যাবে কখন এটি প্রোডাকশনে ব্যবহারের জন্য নিরাপদ হবে।
  • Feature parity: কোনো ফিচার বাদ পড়েছে কি না তা জানতে ব্যবহারকারীদের চ্যানজলগের (changelog) দিকে নজর রাখতে হবে।

মূল কথা হলো: pnpm-এর Rust রিরাইট একটি ইতিমধ্যে দ্রুত প্যাকেজ ম্যানেজারকে রিপিট ইনস্টলের ক্ষেত্রে কার্যত তাৎক্ষণিক (instantaneous) করে তোলে এবং ফ্রেশ ইনস্টলের সময় অর্ধেকেরও বেশি কমিয়ে দেয়। যে দলগুলো প্রতি রাতে ডিপেন্ডেন্সি রেজোলিউশনে অনেক সময় ব্যয় করে, তাদের জন্য এই আপগ্রেডটি ওয়ার্কফ্লোতে বড় কোনো পরিবর্তন ছাড়াই CI খরচ উল্লেখযোগ্যভাবে কমিয়ে আনার প্রতিশ্রুতি দেয়।