NumPy 1.14 - C API Deprecations

सी एपीआई अवतरण




numpy

सी एपीआई अवतरण

पृष्ठभूमि

NumPy द्वारा थर्ड-पार्टी एक्सटेंशन के लिए अवगत कराया गया एपीआई वर्षों से जारी है, और प्रोग्रामर को सीधे सी से NumPy कार्यक्षमता तक पहुंचने की अनुमति दी है। इस API को "ऑर्गेनिक" के रूप में वर्णित किया जा सकता है। यह कई प्रतिस्पर्धी इच्छाओं से और कई वर्षों से देखने के कई बिंदुओं से उभरा है, जो उपयोगकर्ताओं को न्यूमेरिक और न्यूमरे से NumPy में जाने के लिए आसान बनाने की इच्छा से दृढ़ता से प्रभावित है। कोर एपीआई की शुरुआत 1995 में न्यूमेरिक से हुई थी और इसमें पायथन के सी-एपीआई के साथ-साथ 90 के दशक के कंपाइलर टेक्नॉलॉजी की जानकारी के लिए लिखे गए मैक्रोज़ के भारी उपयोग जैसे पैटर्न हैं। स्वयंसेवकों का एक छोटा समूह भी है, जिनके पास इस एपीआई में सुधार करने के लिए बहुत कम समय है।

एपीआई में सुधार के लिए एक सतत प्रयास चल रहा है। यह सुनिश्चित करने के लिए इस प्रयास में महत्वपूर्ण है कि कोड जो NumPy 1.X के लिए संकलित करता है वह NumPy 1.X के लिए संकलन करता रहे। उसी समय, कुछ एपीआई के रूप में चिह्नित किया जाएगा ताकि भविष्य में दिखने वाला कोड इन एपीआई से बच सके और बेहतर प्रथाओं का पालन कर सके।

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

डिप्रेसेशन मैकेनिज्म NPY_NO_DEPRECATED_API

सी में, पायथन को समर्थन देने वाली डिप्रेशन चेतावनियों के बराबर नहीं है। पदावनति करने का एक तरीका यह है कि आप उन्हें दस्तावेज में जारी करें और नोट जारी करें, फिर भविष्य के प्रमुख संस्करण (NumPy 2.0 और उससे आगे) में हटाए गए सुविधाओं को हटा दें या बदल दें। NumPy के मामूली संस्करणों में बड़े C-API परिवर्तन नहीं होने चाहिए, फिर भी, उस कोड को रोकें जो पिछले मामूली रिलीज पर काम करता है। उदाहरण के लिए, हम यह सुनिश्चित करने के लिए अपनी पूरी कोशिश करेंगे कि NumPy 1.4 पर संकलित और काम करने वाले कोड को NumPy 1.7 (लेकिन शायद संकलक चेतावनी के साथ) पर काम करना जारी रखना चाहिए।

NPY_NO_DEPRECATED_API तंत्र का उपयोग करने के लिए, आपको किसी भी NumPy हेडर को छोड़कर # NumPy के लक्ष्य API संस्करण को #define करना होगा। यदि आप यह पुष्टि करना चाहते हैं कि आपका कोड 1.7 के मुकाबले साफ है, तो उपयोग करें:

#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION

संकलक जो एक #warning तंत्र का समर्थन करते हैं, पर अगर आप NPY_NO_DEPRECATED_API को परिभाषित नहीं करते हैं तो NumPy एक संकलक चेतावनी जारी करता है। इस तरह, तथ्य यह है कि तीसरे पक्ष के डेवलपर्स के लिए पदावनति को चिह्नित किया जाएगा, जिन्होंने रिलीज़ नोटों को बारीकी से नहीं पढ़ा होगा।