API versioning और ABI stability
semantic versioning की योजना बनाएँ और releases के बीच ABI stability सुरक्षित रखें।
API versioning और ABI stability, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
संगतता के दो अलग प्रकार
संगतता से जुड़ी दो चिंताएँ:
- एपीआई संगतता — जो स्रोत कोड संस्करण N के विरुद्ध संकलित होता है, वह N+1 के विरुद्ध भी संकलित होता है
- ABI संगतता — संस्करण N के विरुद्ध संकलित बाइनरी, दोबारा संकलित किए बिना N+1 के साथ काम करती है
ABI क्यों महत्वपूर्ण है
ABI संगतता आश्रितों को दोबारा संकलित किए बिना साझा पुस्तकालयों को अपग्रेड करने देती है। वितरणों, प्लगइन और लंबे समय तक चलने वाले अनुप्रयोगों के लिए यह अत्यंत महत्वपूर्ण है।
ABI को क्या तोड़ता है
दिखने में निर्दोष कई बदलाव ABI तोड़ देते हैं:
- डेटा सदस्यों को जोड़ना, हटाना या उनका क्रम बदलना
- आभासी फ़ंक्शन जोड़ना या हटाना
- विरासत बदलना
- टेम्पलेट पैरामीटर बदलना
- इनलाइन फ़ंक्शन में बदलाव (कभी-कभी)
सिमेंटिक वर्ज़निंग (SemVer)
संस्करण संख्याओं MAJOR.MINOR.PATCH के माध्यम से संगतता बताएँ:
- MAJOR — असंगत बदलाव
- MINOR — नई सुविधाएँ, पिछले संस्करणों के साथ संगत
- PATCH — सुधार
हेडर में संस्करण देना
अपने हेडर में संस्करण मैक्रो उपलब्ध कराएँ।
#define MYLIB_VERSION_MAJOR 2
#define MYLIB_VERSION_MINOR 1
#define MYLIB_VERSION_PATCH 3साझा पुस्तकालयों के लिए SONAME
Linux में साझा पुस्तकालयों के पास एक SONAME होता है, जिसमें प्रमुख संस्करण दर्ज होता है। लिंकर और लोडर इसका उपयोग संगत संस्करण ढूँढ़ने के लिए करते हैं।
# libmylib.so.2 -> libmylib.so.2.1.3
# SONAME = libmylib.so.2कार्यान्वयन का विवरण छिपाना
स्थिर ABI के लिए कार्यान्वयन को हेडर से बाहर रखना आवश्यक है। उपभोक्ताओं को प्रभावित किए बिना निजी सदस्यों को जोड़ने या हटाने के लिए PIMPL (अगले पाठ में) का उपयोग करें।
कंपाइलर ABI
कंपाइलरों के बीच C++ ABI अलग-अलग होता है (GCC और MSVC अलग नाम मैंगलिंग और क्लास विन्यास का उपयोग करते हैं)। विशिष्ट कंपाइलरों से बनाए गए बाइनरी वितरित करें, या extern "C" इंटरफ़ेस तक सीमित रहें।
मानक पुस्तकालय ABI
मानक पुस्तकालय भी ABI तोड़ सकता है — हालाँकि libstdc++ और libc++ की अपनी नीतियाँ हैं। यदि आपको विभिन्न संस्करणों के बीच संगतता चाहिए, तो अपने स्थिर सार्वजनिक एपीआई में मानक पुस्तकालय के प्रकारों से बचें।
संगत तरीके से सुविधाएँ जोड़ना
सुरक्षित जोड़:
- नए स्वतंत्र फ़ंक्शन
- नई क्लासें
- नए गैर-आभासी सदस्य फ़ंक्शन (सावधानी के साथ)
असुरक्षित: उन क्लासों को बदलना जिन्हें उपयोगकर्ताओं ने स्टैक पर रखा है या अपने बाइनरी में संकलित किया है।
ABI जाँचने के उपकरण
दो बिल्ड की तुलना करने वाले उपकरण:
- abidiff — ABI की तुलना करता है
- abicompliance-checker — रिपोर्ट बनाता है
दीर्घकालिक रणनीति
शुरू से ही स्थिरता के लिए डिज़ाइन करें: छोटा सार्वजनिक एपीआई, अपारदर्शी प्रकार और टेम्पलेट तथा विरासत का सावधानीपूर्वक उपयोग। एक बार जारी करने के बाद ABI तोड़ना महँगा होता है — प्रमुख संस्करण में बदलाव सीमित रखें और स्पष्ट रूप से सूचित करें।
त्वरित जाँच
C++ क्लास में कौन-सा बदलाव ABI तोड़ने की सबसे अधिक संभावना रखता है?
पुनरावलोकन
एपीआई संगतता का अर्थ स्रोत संगतता है; ABI संगतता का अर्थ बाइनरी संगतता है। ABI नाज़ुक होता है — सदस्यों या आभासी फ़ंक्शन को जोड़ना अथवा विरासत बदलना इसे तोड़ देता है। SemVer का उपयोग करें, PIMPL से कार्यान्वयन छिपाएँ, कई प्रमुख संस्करणों को साथ-साथ भेजें और ABI जाँचकर्ता चलाएँ।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “API versioning और ABI stability” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “API versioning और ABI stability” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“API versioning और ABI stability” में मैं क्या सीखूँगा?
semantic versioning की योजना बनाएँ और releases के बीच ABI stability सुरक्षित रखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“API versioning और ABI stability” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Header-only बनाम compiled libraries
- API versioning और ABI stability
- PIMPL से implementation छिपाना
- आधुनिक header-only utility library लिखना