pnpm-ന്റെ കോർ ടീം വേർഷൻ 12-ന്റെ ഒരു ആൽഫ ബിൽഡ് പുറത്തിറക്കിയിട്ടുണ്ട്. ഇത് ഒരു നേറ്റീവ് Rust ബൈനറിയായി പ്രവർത്തിക്കുന്നു, നിലവിലെ Node അടിസ്ഥാനമാക്കിയുള്ള വേർഷനേക്കാൾ പത്തിരട്ടി വേഗത്തിൽ ഇൻസ്റ്റാൾ ചെയ്യാമെന്ന് ഇത് വാഗ്ദാനം ചെയ്യുന്നു. CI ജോബുകൾ വളരെ വേഗത്തിൽ പൂർത്തിയാക്കാൻ കഴിയുന്നതിനാൽ ഈ മാറ്റം ഏറെ പ്രാധാന്യമർഹിക്കുന്നു.

എന്തുകൊണ്ടാണ് ഈ റീറൈറ്റ് (rewrite) പ്രധാനമാകുന്നത്

ഒരു content-addressable store-ഉം കർശനമായ node_modules ലേഔട്ടും ഉപയോഗിക്കുന്നതിലൂടെ pnpm ഇതിനകം തന്നെ npm, Yarn എന്നിവയിൽ നിന്ന് വേറിട്ടുനിൽക്കുന്നു. എന്നിരുന്നാലും, ഓരോ കമാൻഡും ഇപ്പോഴും ഒരു Node.js പ്രോസസ്സ് ആരംഭിക്കുന്നുണ്ട്, ഇത് ഫയൽ ജോലികൾ തുടങ്ങുന്നതിന് മുമ്പ് ഒരു നിശ്ചിത സ്റ്റാർട്ടപ്പ് സമയം (startup cost) ചെലവാക്കുന്നു. പ്രധാനപ്പെട്ട കോഡുകൾ Rust-ലേക്ക് മാറ്റുന്നതിലൂടെ, ആ ബൂട്ട്‌സ്‌ട്രാപ്പ് ഘട്ടം ഒഴിവാക്കാനും ഒരേസമയം നിരവധി ഫയൽ ഓപ്പറേഷനുകൾ നടത്താനുള്ള Rust-ന്റെ കഴിവിനെ പ്രയോജനപ്പെടുത്താനും ടീമിന് സാധിക്കുന്നു. ഒരു സിംഗിൾ JavaScript thread-ന് ചെയ്യാൻ കഴിയാത്ത കാര്യമാണിത്.

അവകാശവാദത്തിന് പിന്നിലെ കണക്കുകൾ

pnpm ടീം നൽകിയ ബെഞ്ച്മാർക്കുകൾ മൂന്ന് സാധാരണ സാഹചര്യങ്ങളിൽ വലിയ കുറവ് കാണിക്കുന്നു:

  • Warm install (repeat run): 381 ms-ൽ നിന്ന് 12 ms-ലേക്ക്.
  • No-cache install: 460 ms-ൽ നിന്ന് 40 ms-ലേക്ക്.
  • Clean install (full dependency tree): 6.5 s-ൽ നിന്ന് 2.2 s-ലേക്ക്.

Warm install-ൽ ലഭിക്കുന്ന 30 മടങ്ങ് വേഗത വർദ്ധനവ്, CI ജോബുകൾ വേഗത്തിലാക്കാനും ഡെവലപ്പർമാർക്ക് വേഗത്തിൽ ഫീഡ്‌ബാക്ക് ലഭിക്കാനും നേരിട്ട് സഹായിക്കുന്നു.

മാറ്റമില്ലാത്ത കാര്യങ്ങൾ

ഈ റീറൈറ്റ് ഒരു പോർട്ട് (port) മാത്രമാണ്, പുനർരൂപകൽപ്പന (redesign) അല്ല. നിലവിലുള്ള എല്ലാ ഫ്ലാഗുകളും, ലോക്ക് ഫയൽ ഫോർമാറ്റും, കർശനമായ node_modules ഘടനയും മാറ്റമില്ലാതെ തുടരുന്നു. പ്രോജക്റ്റുകൾക്ക് പഴയതുപോലെ തന്നെ pnpm install ഉപയോഗിച്ച് മുന്നോട്ട് പോകാം; വേഗത മാത്രമായിരിക്കും ഇതിൽ കാണുന്ന ഏക വ്യത്യാസം. പബ്ലിക് API മാറാത്തതിനാൽ, മൈഗ്രേഷൻ പ്രക്രിയ വളരെ എളുപ്പമായിരിക്കും.

ഇത് ഇപ്പോൾ എങ്ങനെ പരീക്ഷിക്കാം

ഈ മാറ്റം ഘട്ടം ഘട്ടമായാണ് നടപ്പിലാക്കുന്നത്. നിലവിലെ v11 വേർഷനിൽ, “pacquet” backend flag എനേബിൾ ചെയ്യുന്നതിലൂടെ ഡെവലപ്പർമാർക്ക് പരീക്ഷണാടിസ്ഥാനത്തിലുള്ള Rust backend ഉപയോഗിക്കാം. v12-ൽ, പാക്കേജുകൾ ഫെച്ച് ചെയ്യുന്നതിനും അവ വർക്ക്സ്പേസിലേക്ക് ലിങ്ക് ചെയ്യുന്നതിനും Rust എഞ്ചിൻ ഡിഫോൾട്ട് ആയി മാറും. ആൽഫ റിലീസ് next-12 ടാഗിന് കീഴിലാണ് പ്രസിദ്ധീകരിച്ചിരിക്കുന്നത്; ഇത് നിലവിൽ പ്രൊഡക്ഷൻ ആവശ്യങ്ങൾക്കായി ശുപാർശ ചെയ്യുന്നില്ല, എങ്കിലും താൽപ്പര്യമുള്ളവർക്ക് ഒരു കമാൻഡ് ഉപയോഗിച്ച് ഇത് ഇൻസ്റ്റാൾ ചെയ്ത് പരീക്ഷിച്ചു നോക്കാവുന്നതാണ്.

റിസ്കുകളും മറ്റ് വശങ്ങളും

ക്ലീൻ ആയ ഒരു API ഉണ്ടായിരുന്നാലും, ഒരു ആൽഫ ബൈനറിയിൽ സാധാരണയായി ഉണ്ടാകാറുള്ള പരിമിതികളുണ്ട്: പരിമിതമായ ടെസ്റ്റിംഗും ചില പ്രത്യേക സാഹചര്യങ്ങളിൽ (edge-case) ഉണ്ടാകാൻ സാധ്യതയുള്ള പിഴവുകളും (regressions).

വിപുലമായ പ്രവണതകൾ

pnpm-ന്റെ ഈ നീക്കം ഫ്രണ്ട്-എൻഡ് ടൂളിംഗിലെ വളർന്നുവരുന്ന ഒരു പ്രവണതയെയാണ് സൂചിപ്പിക്കുന്നത്. ഡെവലപ്പർമാരുടെ പ്രവർത്തന വേഗത വർദ്ധിപ്പിക്കുന്നതിനായി Biome, Oxc തുടങ്ങിയ പ്രോജക്റ്റുകളും അവയുടെ പ്രധാന ഘടകങ്ങൾ കംപൈൽഡ് ഭാഷകളിൽ (compiled languages) റീറൈറ്റ് ചെയ്തിട്ടുണ്ട്.