सीपीथॉन

सीपीथॉन पायथन (प्रोग्रामिंग भाषा) का संदर्भ कार्यान्वयन है। सी (प्रोग्रामिंग भाषा) और पायथन में लिखा गया, सीपीथॉन, पायथन भाषा का डिफ़ॉल्ट और सबसे व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन है।

सीपीथॉन को दुभाषिया (कंप्यूटिंग) और संकलक दोनों के रूप में परिभाषित किया जा सकता है क्योंकि यह व्याख्या करने से पहले पायथन कोड को बाईटकोड में संकलित करता है। इसमें सी सहित कई भाषाओं के साथ विदेशी कार्यात्मक अंतराफलक है, जिसमें पायथन के अतिरिक्त किसी अन्य भाषा में स्पष्ट रूप से भाषा बंधन लिखनी चाहिए।

डिजाइन
सीपीथॉन की विशेष विशेषता यह है कि यह प्रत्येक सीपीथॉन दुभाषिया प्रक्रिया (कंप्यूटिंग) पर वैश्विक दुभाषिया बन्ध (जीआईएल) का उपयोग करता है, जिसका अर्थ है कि ही प्रक्रिया के अन्दर, किसी समय में केवल थ्रेड पायथन बाइटकोड को संसाधित कर सकता है। इसका अर्थ यह नहीं है कि मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) का कोई अर्थ नहीं है; सबसे आम मल्टीथ्रेडिंग परिदृश्य वह है जहां थ्रेड (कंप्यूटिंग) अधिकांश बाहरी प्रक्रियाओं के पूरा होने की प्रतीक्षा कर रहे हैं।

यह तब हो सकता है जब कई थ्रेड्स अलग-अलग ग्राहकों का काम कर रहा हों। हो सकता है कि थ्रेड ग्राहक के उत्तर का प्रतीक्षा कर रहा हो, और दूसरा थ्रेड डेटाबेस क्वेरी के निष्पादित होने का प्रतीक्षा कर रहा हो, चूंकि तीसरा थ्रेड वास्तविक में पायथन कोड को प्रोसेस कर रहा हो।

चूँकि, जीआईएल का अर्थ यह है कि सीपीथॉन उन प्रक्रियाओं के लिए उपयुक्त नहीं है जो पायथन कोड में सीपीयू-गहन एल्गोरिदम को प्रायुक्त करते हैं जो संभावित रूप से कई कोर में वितरित किए जा सकते हैं।

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

पायथन कोड की समवर्ती केवल मल्टीटास्किंग ऑपरेटिंग सिस्टम द्वारा प्रबंधित अलग-अलग सीपीथॉन दुभाषिया प्रक्रियाओं के साथ प्राप्त की जा सकती है। यह समानांतर कंप्यूटिंग के बीच संचार को जटिल बनाता है, चूंकि मल्टीप्रोसेसिंग मॉड्यूल इसे कुछ सीमा तक कम करता है; इसका अर्थ यह है कि समवर्ती पायथन-कोड निष्पादन से वास्तविक में लाभान्वित होने वाले अनुप्रयोगों को सीमित मात्रा में ओवरहेड (कंप्यूटिंग) के साथ प्रायुक्त किया जा सकता है।

जीआईएल की उपस्थिति सीपीथॉन के कार्यान्वयन को सरल बनाती है, और बहु-थ्रेडेड अनुप्रयोगों को प्रायुक्त करना आसान बनाती है जो समवर्ती पायथन कोड निष्पादन से लाभान्वित नहीं होते हैं। चूँकि, जीआईएल के बिना, मल्टीप्रोसेसिंग ऐप्स को यह सुनिश्चित करना चाहिए कि सभी सामान्य कोड थ्रेड सुरक्षित हैं।

चूँकि जीआईएल को खत्म करने के लिए कई प्रस्ताव दिए गए हैं, आम सहमति यह रही है कि अधिकांश स्थितियों में, जीआईएल के लाभ हानि से अधिक हैं; कुछ स्थितियों में जहां जीआईएल रूकावट है, एप्लिकेशन को मल्टीप्रोसेसिंग संरचना के आसपास बनाया जाना चाहिए।

अनल्डेन स्वल्लो
अनल्डेन स्वल्लो सीपीथॉन की अनुकूलन शाखा थी, जिसका उद्देश्य पूरी तरह से संगत और अधिक तेज होना था। इसका उद्देश्य सीपीथॉन की कस्टम आभासी मशीन को समय-समय पर संकलन एलएलवीएम का उपयोग करके बनाया गया है।

परियोजना ने सीपीथॉन पर पांच के कारक द्वारा गति में सुधार का लक्ष्य बताया था; यह लक्ष्य पूरा नहीं हुआ था।

परियोजना को गूगल द्वारा प्रायोजित किया गया था, और परियोजना के मालिक, थॉमस वाउटर्स, जेफरी यास्किन और कॉलिन विंटर, पूर्णकालिक गूगल कर्मचारी हैं; चूँकि, अधिकांश परियोजना योगदानकर्ता गूगल के कर्मचारी नहीं थे। अनल्डेन स्वल्लो को गूगल विकासक पर होस्ट किया गया था।

पायथन भाषा के बारे में कई चीजों की तरह, अनल्डेन स्वल्लो नाम मोंटी पायथन संदर्भ है, जो विशेष रूप मोंटी पायथन एंड द होली ग्रेल में अनलडेन स्वैलोज़ के एयरस्पीड वेग के बारे में मजाक के लिए हैं।

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

जुलाई 2010 में, कुछ पर्यवेक्षकों ने अनुमान लगाया कि 2009 की चौथी तिमाही के मील के पत्थर को अभी तक जारी नहीं किया गया था कि क्या परियोजना मर चुकी थी या मर रही थी। अनल्डेन की मेलिंग सूची पर यातायात जनवरी 2010 में 500 संदेशों से घटकर सितंबर 2010 में 10 से कम हो गया था। यह भी बताया गया है कि अनल्डेन ने गूगल की फंडिंग खो दी है। नवंबर 2010 में, मुख्य विकासक में से ने घोषणा की कि जेफरी और मुझे गूगल के लिए उच्च महत्व की अन्य परियोजनाओं पर खींच लिया गया है।

2009 Q4 विकास शाखा 26 जनवरी 2010 को बनाई गई थी, लेकिन वेबसाइट पर कोई विज्ञापन नहीं किया गया था। इसके अतिरिक्त, लंबी अवधि की योजनाओं के बारे में, और जैसा कि परियोजना ने पायथन 2.7 रिलीज को याद किया, पायथन संवर्द्धन प्रस्ताव (पीईपी) स्वीकार कर लिया गया, जिसने पायथन के आधिकारिक रिपॉजिटरी (संस्करण नियंत्रण) की विशेष py3k-jit शाखा में अनल्डेन स्वल्लो के विलय का प्रस्ताव दिया। जुलाई 2010 तक यह काम चल रहा था। इस विलय में कुछ समय लग सकता था, क्योंकि अनल्डेन स्वल्लो मूल रूप से पायथन 2.6 पर आधारित था जिसके साथ पायथन 3 ने संगतता तोड़ दी (अधिक विवरण के लिए पायथन 3000 देखें)। चूँकि, बाद में पीईपी को वापस ले लिया गया था।

2011 की शुरुआत में, यह स्पष्ट हो गया कि परियोजना को रोक दिया गया था।

अनल्डेन स्वल्लो रिलीज इतिहास

 * 2009 Q1
 * 2009 उल्टी
 * 2009 Q3: स्मृति उपयोग कम करें, गति में सुधार करें

वितरण
आधिकारिक तौर पर समर्थित टियर-1 प्लेटफॉर्म खिड़कियाँ, लिनक्स और मैकओएस (और रास्पबेरी पाई ओएस, और निचले स्तर पर s390x के लिए लिनक्स) हैं।

ऐसे और भी प्लेटफ़ॉर्म हैं जिनमें कार्यशील कार्यान्वयन शामिल हैं: • ऐक्स
 * यूनिक्स की तरह:

• बीएसडी

• डार्विन

• फ्रीबीएसडी

• एचपी-यूएक्स

• इलुमोस

• लिनक्स

• मैक ओएस

• नेटबीएसडी

• ओपनबीएसडी

• प्लान 9

• सोलारिस

• ट्रू64 • एंड्रॉयड
 * विशेष और एम्बेडेड:

• एप्पल आईओएस (पुराने पायथन 3.6 और 2.7 के लिए समर्थन उपलब्ध है)

• ब्लैकबेरी 10

• जीपी2एक्स

• आइपॉडलिनक्स

• निनटेंडो डी एस

• निंटेंडो गेमक्यूब

• सिम्बियन ओएस सीरीज60

• नोकिया 770 इंटरनेट टैबलेट

• नोकिया एन800

• नोकिया एन810

• नोकिया एन900

• ओपनमोको

• पाम ओएस

• प्लेस्टेशन 2

• प्लेस्टेशन 3 (फ्रीबीएसडी)

• साइयन

• क्यूएनएक्स

• तेज ज़ौरस

• एक्सबॉक्स/एक्सबीएमसी

• वीएक्सवर्क्स • एआरओएस
 * अन्य:

• ओएस/390

• विंडोज विस्टा और बाद में

• जेड/ओएस पीईपी 11 पायथन सॉफ्टवेयर फाउंडेशन द्वारा सीपीथॉन में समर्थित नहीं होने वाले प्लेटफार्मों को सूचीबद्ध करता है। इन प्लेटफार्मों को अभी भी बाहरी बंदरगाहों द्वारा समर्थित किया जा सकता है। इन बंदरगाहों में शामिल हैं:

• एदीओएस (2.6 से असमर्थित)

• बीओएस (2.6 से असमर्थित)

• डॉस (2.0 से असमर्थित)

• IRIX 4 (2.3 से असमर्थित)

• IRIX 5 और बाद में (3.2, 3.7 से असमर्थित)

• मैक ओएस 9 (2.4 से असमर्थित)

• मिनिक्स (2.3 से असमर्थित)

• ओपनवीएमएस (3.3 से असमर्थित)

• ओएस/2 (3.3 से असमर्थित)

• आरआईएससी ओएस (3.0 से असमर्थित)

• विंडोज एक्सपी (3.5 से असमर्थित)

• विंडोज 2000 (3.3 से असमर्थित)

• विंडोज 3.एक्स (2.0 से असमर्थित)

• विंडोज 9एक्स (2.6 से असमर्थित)

• विंडोज एनटी4 (2.6 से असमर्थित) बाहरी पोर्ट जो कि पायथन Software Foundation के सीपीथॉन के आधिकारिक संस्करण में एकीकृत नहीं हैं, इसकी मुख्य विकास साइट के लिंक के साथ, अक्सर प्लेटफ़ॉर्म-विशिष्ट कार्यात्मकताओं के लिए अतिरिक्त मॉड्यूल शामिल होते हैं, जैसे PSP के लिए ग्राफिक्स और ध्वनि API और S60 के लिए SMS और कैमरा API। इन बंदरगाहों में शामिल हैं:

• अमीगा: अमीगापायथन

• आईबीएम आई: आईसीरीजपायथन

• डॉस डीजेजीपीपी का उपयोग करते हुए: पायथनडी

• मॉर्फोस: पायथन 2 और 3

• प्लेस्टेशन पोर्टेबल: पीएसपी के लिए स्टैकलेस पायथन

• सिम्बियन ओएस: पायथन फॉर एस60

• विंडोज सीई/पॉकेट पीसी: पायथन विंडोज सीई पोर्ट

• ओपनवीएमएस: पाइथन 3.x के पोर्ट्स का रखरखाव वीएसआई द्वारा किया जाता है

एंटरप्राइज़ लिनक्स
ये पायथन संस्करण वर्तमान में समर्थित एंटरप्राइज़ लिनक्स वितरण के साथ वितरित किए गए हैं। तालिका में पायथन की समर्थन स्थिति का तात्पर्य पायथन कोर टीम से समर्थन से है, न कि वितरण अनुरक्षक से।

विकल्प
सीपीथॉन कई उत्पादन-गुणवत्ता वाले पायथन (प्रोग्रामिंग भाषा) कार्यान्वयनों में से एक है: ज्योथन जावा वर्चुअल मशीन (JVM) के लिए जावा (प्रोग्रामिंग भाषा) में लिखा गया ज्योथन, PyPyआरपायथन में लिखा गया हैं और सी में अनुवादित हैं, और आयरनपायथन, जोसामान्य भाषा अवसंरचना सी शार्प (प्रोग्रामिंग भाषा) में लिखा गया है। कई प्रयोगात्मक कार्यान्वयन भी हैं।