अपने पैकेज में आवश्यकता के लिए पैकेज संस्करण का निर्धारण कैसे करें?


9

मेरे पास अभी कुछ पैकेज हैं, और PackageRequires सेक्शन में मैं उन सभी पैकेजों को रखना चाहूँगा, जिन्हें मैं लगाता हूँ, ऐसा लगता है कि इसके लिए नाम और संस्करण की आवश्यकता है। आप संस्करण संख्या कहां निर्धारित करते हैं? उदाहरण के लिए मेरे पास (cl-lib "0.5") है, लेकिन न्यूनतम संस्करण जिसे मैं उपयोग कर सकता हूं, उसे निर्धारित करने का सबसे अच्छा तरीका क्या है? मैं वर्तमान संस्करण देख सकता हूं, लेकिन न्यूनतम मूल्य निर्धारित करने का सबसे अच्छा तरीका क्या है? इसके अलावा, आवश्यक कुछ पैकेजों में उनकी फ़ाइल में निर्दिष्ट संस्करण नहीं है। उन मामलों में, क्या अनुशंसित है?

जवाबों:


7

उस संस्करण का उपयोग करें जिसके लिए आपने पैकेज लिखा था। यह सबसे सुरक्षित आधार रेखा है, जब तक आप स्पष्ट रूप से आपके द्वारा उपयोग किए जाने वाले प्रत्येक फ़ंक्शन की जांच नहीं कर सकते। वहां से, आप केवल यह उम्मीद कर सकते हैं कि उस पैकेज के अनुचर कभी चुपचाप पीछे की संगतता को न तोड़ें ...

उन पैकेजों के लिए जिनके पास कोई भी संस्करण संख्या नहीं है, मैं उनका उपयोग नहीं करूंगा। यदि अनुचर उचित संस्करण के लिए भी परेशान नहीं करता है, तो आप उन्हें किसी और चीज़ के साथ कैसे भरोसा कर सकते हैं?


1

मेरी सिफारिश:

  • फ़ंक्शंस, चर, मैक्रोज़ आदि के साथ शुरू करें जो आपके कोड वास्तव में उपयोग करते हैं। यदि यह किसी ऐसी चीज़ का उपयोग करता है जिसे Emacs या फ़ंक्शन के स्रोत लाइब्रेरी के दिए गए संस्करण में पेश किया गया था, तो उसी के साथ अपने न्यूनतम संस्करण के रूप में शुरू करें।

  • फ़ंक्शन का संस्करण जो आप उपयोग करते हैं, फ़ंक्शन के मूल संस्करण के अनुरूप नहीं हो सकता है, जब यह पहली बार पेश किया गया था। शायद और भी तर्क जुड़ गए थे। जांचें कि क्या यह आपके विशेष उपयोग के लिए मायने रखता है। अगर नहीं तो आप इस बात को नजरअंदाज कर सकते हैं। यदि हाँ, तो वह सबसे पुराना स्रोत संस्करण ढूंढें जो आपके कोड की अपेक्षा करता है।

  • परीक्षा। लायब्रेरी के जिस भी संस्करण का आप दावा करते हैं कि आप न्यूनतम के रूप में समर्थन करते हैं, और उसकी कोशिश करें।

  • कभी-कभी एक फ़ंक्शन में मामूली बदलाव किए गए हैं, और आपके कोड को मौलिक रूप से एक नए संस्करण की आवश्यकता नहीं है। लेकिन इसे एक से अधिक संस्करणों (यदि यही आप चाहते हैं) का समर्थन करने के लिए अनुकूलित करने की आवश्यकता हो सकती है। आपको परीक्षण करने की आवश्यकता हो सकती है कि फ़ंक्शन मौजूद है ( fboundp) या सही हस्ताक्षर / कॉलिंग अनुक्रम है। उत्तरार्द्ध के लिए, subr-arityबिल्ट-इन के साथ मदद कर सकता है, लेकिन आपको condition-caseलिस्प फ़ंक्शंस के लिए उपयोग करने की आवश्यकता हो सकती है (आर्ग की विस्तारित संख्या के साथ कॉल करना, और कम आर्ग के साथ कॉल करके गलत-संख्या-की-आर्गन त्रुटि को संभालना)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.