pnpm కోర్ టీమ్ v12 కోసం Rust ఆధారిత రీరైట్ను (rewrite) విడుదల చేస్తోంది, దీనివల్ల warm install సమయం 381 ms నుండి 12 ms కి మరియు clean install సమయం 6.5 s నుండి 2.2 s కి తగ్గుతుంది. ప్రతి సెకను కూడా కీలకంగా మారే continuous-integration (CI) పైప్లైన్లలో ప్యాకేజీలను రన్ చేసే డెవలపర్లకు ఈ వేగవంతమైన మార్పు ఎంతో ఉపయోగపడుతుంది.
ఈ రీరైట్ ఇప్పుడు ఎందుకు ముఖ్యం
వేగంలో pnpm ఇప్పటికే అనేక ప్రత్యర్థుల కంటే ముందుంది, కానీ ఇది Node.js పై నడుస్తుంది, దీనివల్ల ప్రతిసారి కమాండ్ ప్రారంభమైనప్పుడు కొంత startup cost అవసరమవుతుంది. డిపెండెన్సీలను (dependencies) పదేపదే ఫెచ్ (fetch) మరియు లింక్ చేసే CI జాబ్స్లో ఈ ఆలస్యం స్పష్టంగా కనిపిస్తుంది. ప్రధానమైన పనులన్నింటినీ pacquet అని పిలువబడే నేటివ్ Rust బైనరీకి మార్చడం ద్వారా, టీమ్ Node.js బూట్స్టాప్ను తొలగించింది మరియు భారీ ఫైల్-సిస్టమ్ మార్పులను (file-system churn) ఒకే థ్రెడ్తో Rust నిర్వహించేలా చేసింది.
ఈ రీరైట్ అనేది ఒక పోర్ట్ (port) మాత్రమే, రీడిజైన్ కాదు. అన్ని ఫ్లాగ్స్, లాక్ఫైల్ ఫార్మాట్లు మరియు మీకు తెలిసిన node_modules లేఅవుట్ అన్నీ యథాతథంగా ఉంటాయి, కాబట్టి ప్రస్తుతం ఉన్న స్క్రిప్ట్లు మరియు వర్క్ఫ్లోస్లో ఎలాంటి మార్పులు చేయనవసరం లేదు. v11 లోనే మీరు pacquet బ్యాకెండ్ను ఉపయోగించుకోవచ్చు; v12 లో ఫెచింగ్ మరియు లింకింగ్ కోసం ఇది డిఫాల్ట్గా మారుతుంది.
కొలవదగిన పనితీరు మెరుగుదలలు
మెయింటైనర్లు అందించిన బెంచ్మార్క్లు ఇవి చూపుతున్నాయి:
- Warm install (క్యాష్తో పునరావృత రన్): 381 ms → 12 ms, అంటే 30 రెట్లు మెరుగుదల.
- Clean install (క్యాష్ లేకుండా): 6.5 s → 2.2 s, అంటే సమయం సగానికి పైగా తగ్గింది.
రిస్క్లు మరియు లాభనష్టాలు
Rust ఇంజిన్ ఇంకా ఆల్ఫా (alpha) దశలోనే ఉంది. ఇది ప్రీ-రిలీజ్ దశ నుండి బయటపడే వరకు v12ని ప్రొడక్షన్లో ఉపయోగించవద్దని టీమ్ సూచిస్తోంది.
ఈరోజే దీన్ని ఎలా ప్రయత్నించాలి
డెవలపర్లు pnpm self-update next-12 కమాండ్ను రన్ చేయడం ద్వారా కొత్త బ్యాకెండ్ను పరీక్షించవచ్చు, ఇది తాజా ప్రీ-రిలీజ్ బైనరీని డౌన్లోడ్ చేస్తుంది. ఈ కమాండ్ ప్రాజెక్ట్ యొక్క pnpm-lock.yaml లేదా node_modules లేఅవుట్ను మార్చకుండానే JavaScript ఇంజిన్ను Rust ఇంజిన్తో మారుస్తుంది. తమ CI పైప్లైన్లపై దీని ప్రభావాన్ని అంచనా వేయాలనుకునే టీమ్లు, ఒక తాత్కాలిక రన్నర్ను (disposable runner) సిద్ధం చేసుకుని, pacquet బ్యాకెండ్ను ఎనేబుల్ చేసి, ప్రస్తుత సెటప్తో బిల్డ్ సమయాలను పోల్చి చూడాలి.
విస్తృతమైన ధోరణి
pnpm తీసుకున్న ఈ నిర్ణయం కంపైల్డ్ లాంగ్వేజెస్ (compiled languages) వైపు జరుగుతున్న టూలింగ్ మైగ్రేషన్ల ధోరణిని ప్రతిబింబిస్తుంది. Biome, Oxc మరియు Deno వంటి ప్రాజెక్ట్లు కూడా డెవలపర్ వర్క్ఫ్లోల నుండి లాటెన్సీని (latency) తగ్గించడానికి తమ పనితీరుకు కీలకమైన భాగాలను Rust లేదా Go లో తిరిగి నిర్మించాయి.
తదుపరి గమనించవలసినవి
- స్టెబిలిటీ మైల్స్టోన్స్ (Stability milestones): రిలీజ్లను పర్యవేక్షించడం ద్వారా ఇది ప్రొడక్షన్ వినియోగానికి ఎప్పుడు సురక్షితమో తెలుస్తుంది.
- ఫీచర్ పారిటీ (Feature parity): ఫీచర్లలో ఏవైనా లోపాలు ఉన్నాయేమో తెలుసుకోవడానికి వినియోగదారులు changelogను గమనిస్తూ ఉండాలి.
క్లుప్తంగా చెప్పాలంటే: pnpm యొక్క Rust రీరైట్ ఇప్పటికే వేగంగా ఉన్న ప్యాకేజీ మేనేజర్ను పునరావృత ఇన్స్టాల్స్ (repeat installs) కోసం దాదాపు తక్షణమే పనిచేసేలా మారుస్తుంది, మరియు కొత్త ఇన్స్టాల్స్ కోసం సమయాన్ని సగానికి పైగా తగ్గిస్తుంది. ప్రతిరోజూ డిపెండెన్సీ రిజల్యూషన్ కోసం నిమిషాల సమయం వెచ్చించే టీమ్లకు, ఈ అప్గ్రేడ్ వర్క్ఫ్లో మార్పులు లేకుండానే CI ఖర్చులను గణనీయంగా తగ్గించే అవకాశం ఉంది.
