pnpm ने TMPDIR सॉकेट बजेट रिपेअर स्वीकारले
pnpm साठी नुकत्याच केलेल्या फील्ड टेस्टचा निकाल 'अपस्ट्रीम एक्सेप्टन्स' (upstream acceptance) असा लागला आहे. सीमा-केंद्रित दुरुस्तीसाठी (boundary-focused repairs) हा एक मोठा विजय आहे.
समस्या पाथच्या लांबीची (path length) होती.
जेव्हा pnpm एखादे पॅकेज इन्स्टॉल करते, तेव्हा ते एक TMPDIR पाथ सेट करते. काही पॅकेजेस सेटअप दरम्यान 'लाइफसायकल टूल्स' (lifecycle tools) चालवतात. ही टूल्स अनेकदा IPC सॉकेट्स तयार करतात. जर pnpm चा TMPDIR पाथ खूप मोठा असेल, तर एकूण सॉकेट पाथ Unix च्या मर्यादेपेक्षा जास्त होतो. यामुळे Node मध्ये एरर (error) येतो.
ही एरर Node किंवा टूलमधील बिघाड असल्यासारखी वाटते. परंतु त्याचे खरे कारण 'पाथ बजेट'ची (path budget) समस्या आहे.
pnpm Unix सॉकेट मर्यादेवर नियंत्रण ठेवत नाही. pnpm लाइफसायकल टूल्सवर नियंत्रण ठेवत नाही. pnpm स्वतः पुरवलेल्या तात्पुरत्या डिरेक्टरी पाथवर (temporary directory path) नियंत्रण ठेवते.
ही दुरुस्ती केवळ pnpm च्या नियंत्रणाखाली असलेल्या गोष्टींवर लक्ष केंद्रित करते.
ही सुधारणा पाथमधील pnpm च्या मालकीचा भाग लहान करते. यासाठी ते एका संक्षिप्त प्रीफिक्ससह (compact prefix) Node च्या नेटिव्ह fs.mkdtemp() चा वापर करते. यामुळे तात्पुरती डिरेक्टरी pnpm स्टोअरच्या आतच राहते, परंतु ती कमी जागा वापरते.
हा दृष्टिकोन तीन नियमांचे पालन करतो:
- pnpm चा टेम्प रूट (temp root) कायम ठेवा.
- pnpm चा बेसनेम (basename) लहान करा.
- डाउनस्ट्रीम टूल्ससाठी (downstream tools) अधिक पाथ बजेट शिल्लक ठेवा.
ही एक मर्यादित आणि प्रभावी दुरुस्ती आहे. ती प्रत्येक संभाव्य सॉकेट एरर सुधारण्याचा प्रयत्न करत नाही. ती pnpm च्या प्रिव्हिलेज (privileges) चालवण्याची पद्धत बदलत नाही. ती फक्त pnpm ला पाथ बजेट वाया घालवण्यापासून थांबवते.
pnpm च्या मेंटेनर्सनी १६ जून, २०२६ रोजी हे मंजूर करून मर्ज (merge) केले.
हे यश सिद्ध करते की Scarab/SDS पद्धत काम करते. आपण नियंत्रणाखालील भाग (owned surface) शोधतो. आपण सर्वात मोठे लक्षण (loudest symptom) टाळतो. आपण पॅच (patch) लहान ठेवतो. आपण प्रोजेक्टच्या सीमा (project boundaries) जपतो.
या टेस्टसाठी Field Lab स्टेटस आता आहे: upstream-accepted.
Optional learning community: https://t.me/GyaanSetuAi