pnpm-ன் முக்கியக் குழு v12-க்காக Rust அடிப்படையிலான மறுவடிவமைப்பை அறிமுகப்படுத்துகிறது. இது warm install நேரத்தை 381 ms-லிருந்து 12 ms ஆகவும், clean install நேரத்தை 6.5 s-லிருந்து 2.2 s ஆகவும் வெகுவாகக் குறைக்கிறது. ஒவ்வொரு வினாடியும் முக்கியத்துவம் வாய்ந்த continuous-integration (CI) pipelines-களில் தொகுப்புகளை (packages) இயக்கும் டெவலப்பர்களுக்கு இந்த வேக அதிகரிப்பு மிகவும் பயனுள்ளதாக இருக்கும்.
இந்த மறுவடிவமைப்பு இப்போது ஏன் முக்கியமானது
pnpm ஏற்கனவே வேகத்தில் பல போட்டியாளர்களை விட முன்னிலையில் உள்ளது, ஆனால் இது Node.js-இல் இயங்குவதால், ஒவ்வொரு முறையும் கட்டளையைத் தொடங்கும் போது ஒரு startup cost ஏற்படுகிறது. தொடர்ச்சியாக சார்புகளை (dependencies) பதிவிறக்கம் செய்து இணைக்கும் CI jobs-களில் இந்தத் தாமதம் ஒரு குறிப்பிடத்தக்க இடைவெளியாகத் தெரிகிறது. கடினமான பணிகளை pacquet என்று பெயரிடப்பட்ட ஒரு நேட்டிவ் Rust பைனரிக்கு (native Rust binary) மாற்றுவதன் மூலம், குழுவினர் Node.js bootstrap தேவையை நீக்கி, ஒரே ஒரு த்ரெட் (single thread) மூலம் மிகப்பெரிய கோப்பு முறைமை மாற்றங்களை (file-system churn) கையாள Rust-க்கு வழிவகை செய்கிறார்கள்.
இந்த மறுவடிவமைப்பு ஒரு போர்ட் (port) மட்டுமே, மறுவடிவமைப்பு (redesign) அல்ல. அனைத்து flags, lockfile வடிவங்கள் மற்றும் வழக்கமான node_modules அமைப்பு ஆகியவை அப்படியே இருக்கும், எனவே தற்போதுள்ள ஸ்கிரிப்ட்கள் மற்றும் பணிப்பாய்வுகளில் (workflows) எந்த மாற்றமும் தேவையில்லை. v11-லேயே நீங்கள் pacquet பேக்எண்டைப் பயன்படுத்தத் தேர்ந்தெடுக்கலாம்; v12-இல் இது fetching மற்றும் linking ஆகியவற்றிற்கான இயல்புநிலையாக (default) மாற்றப்படுகிறது.
அளவிடக்கூடிய செயல்திறன் முன்னேற்றங்கள்
பராமரிப்பாளர்களால் வழங்கப்பட்ட பெஞ்ச்மார்க் (Benchmarks) முடிவுகள் பின்வருவனவற்றைத் தெரிவிக்கின்றன:
- Warm install (கேச் உடன் மீண்டும் இயக்குதல்): 381 ms → 12 ms, இது 30 மடங்கு முன்னேற்றம்.
- Clean install (கேச் இல்லாமல்): 6.5 s → 2.2 s, இது நேரத்தை பாதியைக் காட்டிலும் குறைக்கிறது.
அபாயங்கள் மற்றும் சவால்கள்
Rust இன்ஜின் இன்னும் ஆல்பா (alpha) நிலையிலேயே உள்ளது. இது முன்-வெளியீட்டு நிலையிலிருந்து (pre-release stage) முழுமையாக வெளிவரும் வரை, v12-ஐ தயாரிப்புச் சூழலில் (production) பயன்படுத்துவதற்குப் பராமரிப்பாளர்கள் அறிவுறுத்தவில்லை.
இன்று இதை எப்படி முயற்சிப்பது
டெவலப்பர்கள் pnpm self-update next-12 என்ற கட்டளையை இயக்குவதன் மூலம் புதிய பேக்எண்டைச் சோதிக்கலாம், இது சமீபத்திய முன்-வெளியீட்டு பைனரியைப் பதிவிறக்கும். இந்த கட்டளை திட்டத்தின் pnpm-lock.yaml அல்லது node_modules அமைப்பை மாற்றாமல், JavaScript இன்ஜினுக்குப் பதிலாக Rust இன்ஜினை மாற்றுகிறது. தங்கள் CI pipelines-களில் இதன் தாக்கத்தை மதிப்பீடு செய்ய விரும்பும் குழுக்கள், ஒரு தற்காலிக ரன்னரை (disposable runner) உருவாக்கி, pacquet பேக்எண்டை இயக்கி, தற்போதைய அமைப்போடு ஒப்பிட்டுப் பார்க்கலாம்.
பரந்த போக்கு
pnpm-ன் இந்த நகர்வு, கம்பைல் செய்யப்பட்ட மொழிகளை (compiled languages) நோக்கிய கருவி மாற்றங்களின் (tooling migrations) அலையை பிரதிபலிக்கிறது. Biome, Oxc மற்றும் Deno போன்ற திட்டங்கள் அனைத்தும் டெவலப்பர்களின் பணிப்பாய்வுகளில் ஏற்படும் தாமதத்தைக் குறைக்க, செயல்திறன் சார்ந்த கூறுகளை Rust அல்லது Go மொழியில் மீண்டும் கட்டமைத்துள்ளன.
அடுத்து கவனிக்க வேண்டியவை
- நிலைத்தன்மை மைல்கற்கள் (Stability milestones): வெளியீடுகளைக் கண்காணிப்பதன் மூலம், எப்போது தயாரிப்புச் சூழலில் (production) பயன்படுத்தலாம் என்பதை அறியலாம்.
- அம்சங்களின் சமநிலை (Feature parity): ஏதேனும் அம்சங்கள் விடுபட்டுள்ளதா என்பதை அறிய பயனர்கள் changelog-ஐக் கவனித்துக் கொள்ள வேண்டும்.
சுருக்கமாகச் சொன்னால்: pnpm-ன் Rust மறுவடிவமைப்பு, ஏற்கனவே வேகமான ஒரு பேக்கேஜ் மேனேஜரை, மீண்டும் மீண்டும் செய்யும் இன்ஸ்டால்களுக்கு (repeat installs) கிட்டத்தட்ட உடனடித் தன்மை கொண்ட ஒன்றாக மாற்றுகிறது, மேலும் புதிய இன்ஸ்டால்களுக்கு (fresh installs) எடுக்கும் நேரத்தை பாதியைக் காட்டிலும் குறைக்கிறது. ஒவ்வொரு இரவும் சார்புகளைத் தீர்மானிக்க (dependency resolution) பல நிமிடங்கள் செலவிடும் குழுக்களுக்கு, பணிப்பாய்வை மாற்ற வேண்டிய அவசியமின்றி, CI செலவுகளைக் குறைக்க இது உறுதியளிக்கிறது.
