एचएचवीएम

From Vigyanwiki

हिपहॉप वर्चुअल मशीन (एचएचवीएम) एक खुला स्रोत सॉफ्टवेयर है। ओपन-सोर्स वर्चुअल मशीन समय-समय पर संकलन पर आधारित है। जस्ट-इन-टाइम (जेआईटी) कंपाइलेशन हैक (प्रोग्रामिंग भाषा) के लिए एक निष्पादन इंजन के रूप में कार्य करता है। जेआईटी संकलन के सिद्धांत का उपयोग करके, हैक कोड को पहले इंटरमीडिएट हिपहॉप बाइटकोड (एचएचबीसी) में रूपांतरित किया जाता है, जिसे बाद में गतिशील रूप से x86-64 मशीन कोड, अनुकूलित और मूल रूप से निष्पादित किया जाता है।[1][2] यह पीएचपी के सामान्य भाषा निष्पादन के विपरीत है, जिसमें Zend इंजन पीएचपी स्रोत कोड को ऑप कोड में बदल देता है जो बाईटकोड के रूप में कार्य करता है, और ज़ेंड इंजन के वर्चुअल सीपीयू पर सीधे ऑपकोड निष्पादित करता है।[3]एचएचवीएम को मेटा प्लेटफॉर्म द्वारा विकसित किया गया है, परियोजना के स्रोत कोड को जिट हब पर होस्ट किया गया है;[4] यह पीएचपी लाइसेंस और ज़ेंड लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।


समीक्षा

एचएचवीएम को हिपहॉप फॉर पीएचपी (एचपीएचपीसी) पीएचपी निष्पादन इंजन के उत्तराधिकारी के रूप में बनाया गया था, जो कि फेसबुक द्वारा बनाया गया एक पीएचपी-टू-सी++ ट्रांसपाइल्स भी है।[5][6] प्राप्त अनुभव के आधार पर और एचपीएचपीसी द्वारा पेश किए गए मुद्दों को हल करने के लक्ष्य के आधार पर, मेटा ने 2010 की शुरुआत में जेआईटी-आधारित पीएचपी आभासी मशीन बनाने का फैसला किया। एचपीएचपीसी से जुड़े मुद्दों में आगे के प्रदर्शन में सुधार के लिए एक पठारी प्रभाव तक पहुंचना, पीएचपी भाषा की सभी विशेषताओं का समर्थन करने में एक मौलिक अक्षमता, और विशिष्ट समय- और संसाधन-खपत विकास और परिनियोजन प्रक्रियाओं से उत्पन्न होने वाली कठिनाइयाँ शामिल हैं।[5] Q1 2013 में, फेसबुक.कॉम वेबसाइट के उत्पादन संस्करण ने एच.पी.एच.पी.सी का उपयोग करना बंद कर दिया और एचएचवीएम पर स्विच कर दिया।

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

एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और एचपीएचपीडी डिबगर के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, एचपीएचपीआई (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे सॉफ्टवेयर निर्माण को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं। अंत में, 4.0 से पहले के एचएचवीएम के संस्करणों में संपूर्ण पीएचपी भाषा के लिए लगभग पूर्ण समर्थन है (जैसा कि पीएचपी संस्करण 5.4 के आधिकारिक कार्यान्वयन द्वारा परिभाषित किया गया है), जिसमें समर्थन शामिल है create_function() और eval() निर्माण, जो एचपीएचपीसी के साथ असंभव था।[8][9] एचएचवीएम 3.0 के साथ मिलकर,[10] मेटा ने हैक (प्रोग्रामिंग लैंग्वेज) भी जारी किया, जो पीएचपी का व्युत्पन्न है[11][12] जो प्रोग्रामर को गतिशील टाइपिंग और स्थिर टाइपिंग (एक अवधारणा जिसे क्रमिक टाइपिंग के रूप में भी जाना जाता है) का उपयोग करने की अनुमति देता है, और डेटा प्रकार को फ़ंक्शन (प्रोग्रामिंग) तर्क (कंप्यूटर प्रोग्रामिंग), फ़ंक्शन रिटर्न मान और वर्ग गुणों के लिए निर्दिष्ट करने की अनुमति देता है। हालाँकि, हैक पूरी तरह से पिछड़ी संगतता प्रदान नहीं करता है क्योंकि यह कई पीएचपी सुविधाओं को हटा देता है, जैसे कि goto बयान और गतिशील चर (कंप्यूटर विज्ञान) नाम।[13][14][15][16] सितंबर 2017 में, यह घोषणा की गई थी कि संस्करण 3.30 आधिकारिक तौर पर पीएचपी का समर्थन करने के लिए एचएचवीएम का अंतिम संस्करण होगा, और यह कि एचएचवीएम केवल हैक को आगे बढ़ने का समर्थन करेगा।[17] यह पीएचपी 7 में भिन्नताओं और असंगतताओं के कारण था।[18] फरवरी 2019 में जारी एचएचवीएम 4.0, पीएचपी के समर्थन के बिना पहला संस्करण था।[19]


प्रदर्शन

एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, एचएचवीएम में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर प्रवाह क्षमता और कम विलंबता (इंजीनियरिंग) हो जाती है। Q4 2012 में, एचएचवीएम पर फेसबुक.कॉम के स्रोत कोड के निष्पादन ने एच.पी.एच.पी.सी के साथ प्रदर्शन समानता प्राप्त की,[5]और दिसंबर 2013 में एच.पी.एच.पी.सी को लगभग 15% से भी अधिक कर दिया गया था।[20]


यह भी देखें

टिप्पणियाँ


संदर्भ

  1. Ottoni, Guilherme (June 20, 2018). "HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack". Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM. pp. 151–165.
  2. "facebook/hhvm". github.com. Meta Platforms. Retrieved August 2, 2014.
  3. Kaushik Pal (April 28, 2014). "PHP and Zend Engine Internals". phpbuilder.com. Archived from the original on September 15, 2014. Retrieved September 23, 2014.
  4. HHVM source code on GitHub
  5. 5.0 5.1 5.2 5.3 Drew Paroski (November 29, 2012). "Speeding up PHP-based development with HHVM". Meta Platforms. Retrieved August 2, 2014.
  6. "Announcement on GitHub removing HPHPc support". github.com. Meta Platforms. February 19, 2013. Retrieved May 24, 2013.
  7. "HipHop Bytecode v1 revision 18". github.com. Meta Platforms. July 31, 2014. Retrieved May 24, 2013.
  8. "facebook/hhvm: About upgrade to PHP 5.4 engine". github.com. May 2013. Retrieved August 2, 2014.
  9. "facebook/hhvm: Home". github.com. Meta Platforms. May 8, 2014. Retrieved August 2, 2014.
  10. Paul Tarjan (March 28, 2014). "HHVM 3.0.0". Facebook. Retrieved December 26, 2022.
  11. Cade Metz (March 20, 2014). "Facebook Introduces 'Hack,' the Programming Language of the Future". Wired. Retrieved April 15, 2014.
  12. Julien Verlaguet; Alok Menghrajani (April 2014). "Hack: a new programming language for HHVM". code.facebook.com. Facebook. Retrieved March 23, 2014.
  13. Josh Lockhart (April 3, 2014). "Facebook's Hack, HHVM, and the future of PHP". O'Reilly Media. Retrieved August 2, 2014.
  14. "Hack and HHVM: Type Annotations (Hack Manual)". docs.hhvm.com. Retrieved March 25, 2014.
  15. "Hack and HHVM: Type Inference (Hack Manual)". docs.hhvm.com. Archived from the original on March 26, 2014. Retrieved March 25, 2014.
  16. "Hack and HHVM: Unsupported PHP Features in Hack (Hack Manual)". docs.hhvm.com. Archived from the original on November 4, 2015. Retrieved April 2, 2014.
  17. Fred Emmott (September 12, 2018). "Ending PHP Support, and The Future Of Hack". Retrieved December 26, 2022.
  18. Krill, Paul (September 20, 2017). "Forget PHP! Facebook's HHVM engine switches to Hack instead". InfoWorld (in English). Retrieved February 6, 2019.
  19. Fred Emmott (February 11, 2019). "HHVM 4.0.0". Retrieved December 26, 2022.
  20. "We are the 98.5% (and the 16%)". hhvm.com. December 19, 2013. Retrieved August 2, 2014.


बाहरी संबंध