पैरेट वर्चुअल मशीन

From alpha
Jump to navigation Jump to search
Parrot virtual machine
Final release
8.1.0 / February 16, 2016; 8 years ago (2016-02-16)[1]
इसमें लिखा हुआC
ऑपरेटिंग सिस्टमCross-platform
उत्तराधिकारीMoarVM (for Raku)
प्रकारVirtual machine
लाइसेंसArtistic License 2.0

Parrot एक रजिस्टर मशीन थी | रजिस्टर-आधारित वर्चुअल मशीन को प्रोसेस करें जिसे गतिशील भाषाओं को कुशलतापूर्वक चलाने के लिए डिज़ाइन किया गया था। तोता विधानसभा भाषा और तोता मध्यवर्ती प्रतिनिधित्व (पीआईआर, एक मध्यवर्ती भाषा) को तोता बाईटकोड में संकलित करना और इसे निष्पादित करना संभव है। Parrot मुफ्त सॉफ्टवेयर और खुला स्रोत सॉफ्टवेयर सॉफ्टवेयर है।[2] तोता पर्ल समुदाय द्वारा शुरू किया गया था और इसे मुफ्त सॉफ्टवेयर समुदाय की मदद से विकसित किया गया है। नतीजतन, यह पर्ल (आर्टिस्टिक लाइसेंस | आर्टिस्टिक लाइसेंस 2.0) के साथ लाइसेंस संगतता पर केंद्रित है, सिस्टम की एक विस्तृत श्रृंखला में प्लेटफ़ॉर्म संगतता, अधिकांश आधुनिक प्रोसेसर में प्रोसेसर आर्किटेक्चर संगतता, निष्पादन की गति, छोटे आकार (प्लैटफ़ॉर्म के आधार पर लगभग 700k) ), और राकू (प्रोग्रामिंग भाषा) और अन्य आधुनिक गतिशील भाषाओं द्वारा की गई अलग-अलग मांगों को संभालने का लचीलापन।

संस्करण 1.0, विकास के लिए एक स्थिर अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) के साथ, 17 मार्च 2009 को जारी किया गया था।[3] अंतिम संस्करण रिलीज़ 8.1.0 एंडियन पैराकीट है।[1]अगस्त 2021 में तोते को आधिकारिक रूप से बंद कर दिया गया था, इसके मुख्य उपयोग (राकू) में MoarVM द्वारा प्रतिस्थापित किए जाने के बाद और इसकी किसी भी अन्य समर्थित भाषाओं के लिए कभी भी मुख्यधारा का वीएम नहीं बन पाया।[4]


इतिहास

तोता नाम एक अप्रैल फूल के मजाक से आया है जिसने तोते नाम की एक काल्पनिक भाषा की घोषणा की, जो पायथन (प्रोग्रामिंग भाषा) और पर्ल को एकजुट करेगी।[5][6] नाम बाद में इस परियोजना द्वारा अपनाया गया था (शुरुआत में राकू विकास प्रयास का एक हिस्सा) जिसका उद्देश्य राकू, पायथन और अन्य प्रोग्रामिंग भाषाओं का समर्थन करना है। पैरट वर्चुअल मशीन पर चलने के लिए कई भाषाओं को में porting किया जा रहा है।[7] तोता फाउंडेशन 2014 में भंग कर दिया गया था।[8] फाउंडेशन को 2008 में तोता परियोजना के कॉपीराइट और ट्रेडमार्क रखने के लिए बनाया गया था, ताकि प्रोग्रामिंग भाषा कार्यान्वयन और कोर कोडबेस के विकास में मदद मिल सके, तोता समुदाय को विकसित करने के लिए एक आधार प्रदान किया जा सके और अन्य भाषा समुदायों तक पहुंच बनाई जा सके।[9]


भाषाएँ

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

स्थिर और गतिशील भाषाएं

जाँच टाइप करें लैंग्वेज के अलग-अलग गुणों ने तोते के डिजाइन को प्रेरित किया है। .NET प्लेटफॉर्म के लिए वर्तमान लोकप्रिय वर्चुअल मशीन जैसे जावा वर्चुअल मशीन और सामान्य भाषा रनटाइम, स्टेटिकली टाइप की गई भाषाओं के लिए डिज़ाइन की गई हैं, जबकि पैरट द्वारा लक्षित भाषाएँ गतिशील रूप से टाइप की जाती हैं।

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

कार्यात्मक अवधारणाएं

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

संकलक उपकरण

तोता तोता तोता संकलक टूलचैन| कंपाइलर-लेखन उपकरण का एक सूट प्रदान करता है[10] जिसमें पार्सर व्याकरण इंजन (PGE) शामिल है, एक हाइब्रिड पार्सर-जनरेटर जो एक पुनरावर्ती डिसेंट पार्सर के साथ-साथ एक ऑपरेटर-प्राथमिकता पार्सर को व्यक्त कर सकता है, जो एक ही व्याकरण में दोनों के बीच मुक्त संक्रमण की अनुमति देता है। PGE वृक्ष व्याकरण इंजन (TGE) में फ़ीड करता है जो अनुकूलन के लिए और अंततः कोड जनरेशन के लिए PGE द्वारा उत्पन्न पार्स-ट्री को रूपांतरित करता है।

मौजूदा क्लाइंट भाषाएं

कई भाषाओं में पहले से ही तोते के लिए डिज़ाइन किए गए कंपाइलर फ्रंट-एंड हैं; हालाँकि, उनमें से कई अभी भी केवल आंशिक रूप से कार्यात्मक हैं।[11] जुलाई 2013 तक [needs update], सक्रिय रूप से अनुरक्षित भाषाएँ हैं:[12]

जुलाई 2013 तक निष्क्रिय भाषाएँ निम्नलिखित हैं:

निम्नलिखित गूढ़ प्रोग्रामिंग भाषाओं को भी लागू किया गया है:


आंतरिक

तोते के लिए प्रोग्राम कोड के तीन रूप हैं:

  • बायटेकोड[14] द्विआधारी है और तोते द्वारा मूल रूप से व्याख्या की जाती है। बाइटकोड आमतौर पर फ़ाइल नाम एक्सटेंशन .pbc वाली फाइलों में संग्रहीत होता है।
  • पैरट असेंबली लैंग्वेज (PASM) निम्न स्तर की भाषा है जो बायटेकोड को संकलित करती है। PASM कोड आमतौर पर फ़ाइल नाम एक्सटेंशन .pasm वाली फाइलों में संग्रहीत होता है।
  • तोता मध्यवर्ती प्रतिनिधित्व (PIR[15]) PASM की तुलना में थोड़ी उच्च स्तरीय भाषा है और बायटेकोड के लिए भी संकलित है। यह भाषा कार्यान्वयन का प्राथमिक लक्ष्य है। पीआईआर पारदर्शी रूप से तोता के अंतर-नियमित कॉलिंग सम्मेलनों का प्रबंधन करता है, बेहतर सिंटैक्स प्रदान करता है, आवंटन दर्ज करता है, और बहुत कुछ। पीआईआर कोड आमतौर पर फ़ाइल नाम एक्सटेंशन .पीआईआर के साथ फाइलों में संग्रहीत होता है।

उदाहरण

रजिस्टर

तोता अधिकांश हार्डवेयर सेंट्रल प्रोसेसिंग यूनिट की तरह रजिस्टर-आधारित है, और अधिकांश वर्चुअल मशीनों के विपरीत, जो स्टैक-आधारित हैं। तोता चार प्रकार के रजिस्टर प्रदान करता है:

तोता मनमानी संख्या में रजिस्टर प्रदान करता है; यह संख्या प्रति उपनेमका संकलन समय पर तय की गई है।

अंकगणितीय संक्रियाएं

पीएएसएम में <वाक्यविन्यास लैंग = एएसएम>

   I1, 4 सेट करें
   inc I1 # I1 अब 5 है
   I1 जोड़ें, 2 # I1 अब 7 है
   N1, 42.0 सेट करें
   दिसंबर N1 # N1 अब 41.0 है
   उप N1, 2.0 # N1 अब 39.0 है
   प्रिंट I1
   प्रिंट ','
   N1 प्रिंट करें
   प्रिंट \n
   अंत

</वाक्यविन्यास हाइलाइट> पीर में <वाक्यविन्यास प्रकाश लैंग = perl6>

उप 'मुख्य': मुख्य
   $I1 = 4
   inc $I1 # $I1 अब 5 है
   $I1 += 2 # $I1 अब 7 है
   $N1 = 42.0
   dec $N1 # $N1 अब 41.0 है
   $N1 -= 2.0 # $N1 अब 39.0
   $I1 प्रिंट करें
   प्रिंट ','
   $N1 प्रिंट करें
   प्रिंट \n
।अंत

</वाक्यविन्यास हाइलाइट>

विकास

2005 के अंत तक, और सुगल्स्की तोता के प्रमुख डिजाइनर और मुख्य वास्तुकार थे। लंबे समय तक पर्ल, लिनक्स कर्नेल और C++ हैकर, चिप साल्ज़ेनबर्ग ने 2006 के मध्य तक पदभार संभाला, जब वे प्रमुख डेवलपर बन गए। एलीसन रान्डल, दंडित के प्रमुख विकासकर्ता और तोते के संकलक उपकरण के मुख्य वास्तुकार, अक्टूबर 2010 के मध्य तक मुख्य वास्तुकार थे, जब उन्होंने पद छोड़ दिया और क्रिस्टोफ़ ओटो को नए मुख्य वास्तुकार के रूप में चुना।[16] विकास की चर्चा मुख्य रूप से irc.perl.org पर #parrot चैनल पर होती है। इसके अलावा, एक ही नेटवर्क पर #parrotsketch में होस्ट किए गए Parrot और भाषा डेवलपर्स के लिए साप्ताहिक मॉडरेट की गई बैठकें होती हैं। तोता-देव मेलिंग सूची पर भी बहुत चर्चा होती है, जिसे parrot.org द्वारा होस्ट किया जाता है।

पैरट रिपॉजिटरी में तोता डिजाइन दस्तावेज़, या पीडीडी के रूप में डिज़ाइन चर्चाएँ मौजूद हैं।[17] मुख्य वास्तुकार या अन्य नामित डिजाइनर इन दस्तावेजों को एक फीचर के दर्शन के साथ-साथ इसके इंटरफ़ेस और डिज़ाइन नोट्स को समझाने के लिए तैयार करता है। तोता हैकर्स इन दस्तावेज़ों को निष्पादन योग्य परीक्षणों और फिर मौजूदा सुविधाओं में बदल देते हैं।

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

यह भी देखें

  • ग्रेलवीएम
  • सामान्य भाषा रनटाइम (सीएलआर)
  • आवेदन आभासी मशीनों की तुलना
  • mod_parrot
  • दा विंची मशीन

संदर्भ

  1. 1.0 1.1 "New supported release 8.1.0 "Andean Parakeet"". Parrot Foundation. 2016-02-16. Retrieved 2016-09-26.
  2. "Parrot Contributor License Agreement 1.0" (PDF). Parrot Foundation. Retrieved 2009-03-18.
  3. "Parrot Roadmap". Parrot Foundation. 2008-11-20. Retrieved 2008-11-20.
  4. "Inactive Parrot | Parrot VM". www.parrot.org.
  5. "The Story Behind the Parrot Prank - O'Reilly Media". Oreilly.com. 2001-04-06. Retrieved 2014-02-25.
  6. "Programming Parrot". Perl.com. Archived from the original on 2010-07-18. Retrieved 2014-02-25.
  7. "Languages | Parrot VM". Parrot.org. 2006-02-14. Retrieved 2014-02-25.
  8. "Corporations Advanced Search". Washington State Department of Licensing. UBI 602 839 536. Retrieved 2021-04-09.{{cite web}}: CS1 maint: url-status (link)
  9. Announcing the Parrot Foundation Archived June 29, 2008, at the Wayback Machine
  10. [1] Archived May 9, 2009, at the Wayback Machine
  11. "Languages – Parrot". Trac.parrot.org. Retrieved 2014-02-25.
  12. "Languages - Parrot VM". parrot.org. Retrieved 19 April 2018.
  13. Whiteknight. "Whiteknight/matrixy — GitHub". Github.com. Retrieved 2014-02-25.
  14. "The Parrot Bytecode (PBC) Format - parrotcode". Archived from the original on 2008-12-24. Retrieved 2009-07-15.
  15. [2] Archived July 20, 2009, at the Wayback Machine
  16. Otto, Christoph (2010-10-21). "reparrot: Parrot has a new architect. What now?". Reparrot.blogspot.com. Retrieved 2014-02-25.
  17. "Parrot 6.1.0 - Parrot Design Documents (PDDs)". Docs.parrot.org. Retrieved 2014-02-25.


बाहरी संबंध