एचएचवीएम: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Process virtual machine developed by Meta}} {{Use mdy dates|date=August 2014}} {{Infobox software | name = HHVM | logo...")
 
(modification)
Line 38: Line 38:
}}
}}


हिपहॉप वर्चुअल मशीन (HHVM) एक [[खुला स्रोत सॉफ्टवेयर]] है। ओपन-सोर्स वर्चुअल मशीन [[समय-समय पर संकलन]] पर आधारित है। जस्ट-इन-टाइम (JIT) कंपाइलेशन [[हैक (प्रोग्रामिंग भाषा)]] के लिए एक निष्पादन इंजन के रूप में कार्य करता है। JIT संकलन के सिद्धांत का उपयोग करके, हैक कोड को पहले इंटरमीडिएट हिपहॉप बाइटकोड (HHBC) में रूपांतरित किया जाता है, जिसे बाद में गतिशील रूप से [[x86-64]] [[मशीन कोड]], अनुकूलित और मूल रूप से निष्पादित किया जाता है।<ref>{{cite conference
हिपहॉप वर्चुअल मशीन (एचएचवीएम) एक [[खुला स्रोत सॉफ्टवेयर]] है। ओपन-सोर्स वर्चुअल मशीन [[समय-समय पर संकलन]] पर आधारित है। जस्ट-इन-टाइम (जेआईटी) कंपाइलेशन [[हैक (प्रोग्रामिंग भाषा)]] के लिए एक निष्पादन इंजन के रूप में कार्य करता है। जेआईटी संकलन के सिद्धांत का उपयोग करके, हैक कोड को पहले इंटरमीडिएट हिपहॉप बाइटकोड (एचएचबीसी) में रूपांतरित किया जाता है, जिसे बाद में गतिशील रूप से [[x86-64]] [[मशीन कोड]], अनुकूलित और मूल रूप से निष्पादित किया जाता है।<ref>{{cite conference
  | url = https://dl.acm.org/citation.cfm?id=3192374
  | url = https://dl.acm.org/citation.cfm?id=3192374
  | title = HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack
  | title = HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack
Line 52: Line 52:
  | access-date = August 2, 2014
  | access-date = August 2, 2014
  | publisher = Meta Platforms | website = github.com
  | publisher = Meta Platforms | website = github.com
}}</ref> यह PHP के सामान्य भाषा निष्पादन के विपरीत है, जिसमें Zend इंजन PHP स्रोत कोड को [[opcode]] में बदल देता है जो [[बाईटकोड]] के रूप में कार्य करता है, और Zend इंजन के वर्चुअल [[CPU]] पर सीधे ऑपकोड निष्पादित करता है।<ref>{{cite web
}}</ref> यह पीएचपी के सामान्य भाषा निष्पादन के विपरीत है, जिसमें Zend इंजन पीएचपी स्रोत कोड को [[opcode|ऑप कोड]] में बदल देता है जो [[बाईटकोड]] के रूप में कार्य करता है, और ज़ेंड इंजन के वर्चुअल [[CPU|सीपीयू]] पर सीधे ऑपकोड निष्पादित करता है।<ref>{{cite web
  | url = http://www.phpbuilder.com/articles/application-architecture/optimization/php-and-zend-engine-internals.html
  | url = http://www.phpbuilder.com/articles/application-architecture/optimization/php-and-zend-engine-internals.html
  | title = PHP and Zend Engine Internals
  | title = PHP and Zend Engine Internals
Line 62: Line 62:
  | archive-date = September 15, 2014
  | archive-date = September 15, 2014
  | url-status = dead
  | url-status = dead
  }}</ref>
  }}</ref>एचएचवीएम को मेटा प्लेटफॉर्म द्वारा विकसित किया गया है, परियोजना के स्रोत कोड को [[GitHub|जिट हब]] पर होस्ट किया गया है;<ref>[https://github.com/facebook/hhvm HHVM source code on GitHub]</ref> यह पीएचपी लाइसेंस और ज़ेंड लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।<ref name="initial-release" /><ref name="license" />
HHVM को मेटा प्लेटफॉर्म द्वारा विकसित किया गया है, परियोजना के स्रोत कोड को [[GitHub]] पर होस्ट किया गया है;<ref>[https://github.com/facebook/hhvm HHVM source code on GitHub]</ref> यह PHP लाइसेंस और Zend लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।<ref name="initial-release" /><ref name="license" />




Line 77: Line 76:
  | date = February 19, 2013 | access-date = May 24, 2013
  | date = February 19, 2013 | access-date = May 24, 2013
  | publisher = [[Meta Platforms]] | website = github.com
  | publisher = [[Meta Platforms]] | website = github.com
}}</ref> प्राप्त अनुभव के आधार पर और एचपीएचपीसी द्वारा पेश किए गए मुद्दों को हल करने के लक्ष्य के आधार पर, मेटा ने 2010 की शुरुआत में जेआईटी-आधारित PHP [[आभासी मशीन]] बनाने का फैसला किया। एचपीएचपीसी से जुड़े मुद्दों में आगे के प्रदर्शन में सुधार के लिए एक पठारी प्रभाव तक पहुंचना, पीएचपी भाषा की सभी विशेषताओं का समर्थन करने में एक मौलिक अक्षमता, और विशिष्ट समय- और संसाधन-खपत विकास और परिनियोजन प्रक्रियाओं से उत्पन्न होने वाली कठिनाइयाँ शामिल हैं।<ref name="performance" />  Q1 2013 में, facebook.com वेबसाइट के उत्पादन संस्करण ने HPHPc का उपयोग करना बंद कर दिया और HHVM पर स्विच कर दिया।
}}</ref> प्राप्त अनुभव के आधार पर और एचपीएचपीसी द्वारा पेश किए गए मुद्दों को हल करने के लक्ष्य के आधार पर, मेटा ने 2010 की शुरुआत में जेआईटी-आधारित पीएचपी [[आभासी मशीन]] बनाने का फैसला किया। एचपीएचपीसी से जुड़े मुद्दों में आगे के प्रदर्शन में सुधार के लिए एक पठारी प्रभाव तक पहुंचना, पीएचपी भाषा की सभी विशेषताओं का समर्थन करने में एक मौलिक अक्षमता, और विशिष्ट समय- और संसाधन-खपत विकास और परिनियोजन प्रक्रियाओं से उत्पन्न होने वाली कठिनाइयाँ शामिल हैं।<ref name="performance" />  Q1 2013 में, facebook.com वेबसाइट के उत्पादन संस्करण ने Hपीएचपीc का उपयोग करना बंद कर दिया और एचएचवीएम पर स्विच कर दिया।


JIT संकलन सिद्धांत का पालन करते हुए, HHVM पहले निष्पादित कोड को एक [[मध्यवर्ती भाषा]], उच्च-स्तरीय बायटेकोड HHBC में परिवर्तित करता है। एचएचबीसी विशेष रूप से एचएचवीएम के लिए बनाया गया एक बाइटकोड प्रारूप है, जो [[दुभाषिया (कंप्यूटिंग)]] और जस्ट-इन-टाइम कंपाइलर्स दोनों द्वारा खपत के लिए उपयुक्त है। अगला, HHVM गतिशील रूप से (बस-इन-टाइम) HHBC को x86-64 मशीन कोड में अनुवादित करता है, अनुवादित बायटेकोड के गतिशील विश्लेषण के माध्यम से संकलक का अनुकूलन करता है। अंत में, यह x86-64 मशीन कोड निष्पादित करता है।<ref name="initial-release" /><ref name="performance" /><ref>{{cite web
जेआईटी संकलन सिद्धांत का पालन करते हुए, एचएचवीएम पहले निष्पादित कोड को एक [[मध्यवर्ती भाषा]], उच्च-स्तरीय बायटेकोड एचएचबीसी में परिवर्तित करता है। एचएचबीसी विशेष रूप से एचएचवीएम के लिए बनाया गया एक बाइटकोड प्रारूप है, जो [[दुभाषिया (कंप्यूटिंग)]] और जस्ट-इन-टाइम कंपाइलर्स दोनों द्वारा खपत के लिए उपयुक्त है। अगला, एचएचवीएम गतिशील रूप से (बस-इन-टाइम) एचएचबीसी को x86-64 मशीन कोड में अनुवादित करता है, अनुवादित बायटेकोड के गतिशील विश्लेषण के माध्यम से संकलक का अनुकूलन करता है। अंत में, यह x86-64 मशीन कोड निष्पादित करता है।<ref name="initial-release" /><ref name="performance" /><ref>{{cite web
  | url = https://github.com/facebook/hhvm/blob/master/hphp/doc/bytecode.specification
  | url = https://github.com/facebook/hhvm/blob/master/hphp/doc/bytecode.specification
  | title = HipHop Bytecode v1 revision 18
  | title = HipHop Bytecode v1 revision 18
Line 86: Line 85:
}}</ref> नतीजतन, एचएचवीएम में अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली वर्चुअल मशीनों के लिए कुछ समानताएं हैं, जिनमें [[सामान्य भाषा रनटाइम]] (सी शार्प (प्रोग्रामिंग भाषा) के लिए सीएलआर, सी # भाषा) और [[जावा वर्चुअल मशीन]] (जेवीएम, जावा (प्रोग्रामिंग) शामिल हैं। भाषा) भाषा)।
}}</ref> नतीजतन, एचएचवीएम में अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली वर्चुअल मशीनों के लिए कुछ समानताएं हैं, जिनमें [[सामान्य भाषा रनटाइम]] (सी शार्प (प्रोग्रामिंग भाषा) के लिए सीएलआर, सी # भाषा) और [[जावा वर्चुअल मशीन]] (जेवीएम, जावा (प्रोग्रामिंग) शामिल हैं। भाषा) भाषा)।


एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और [[एचपीएचपीडी]] [[डिबगर]] के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, [[एचपीएचपीआई]] (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे [[सॉफ्टवेयर निर्माण]] को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं।<ref name="initial-release" />  अंत में, 4.0 से पहले के एचएचवीएम के संस्करणों में संपूर्ण PHP भाषा के लिए लगभग पूर्ण समर्थन है (जैसा कि PHP संस्करण 5.4 के आधिकारिक कार्यान्वयन द्वारा परिभाषित किया गया है), जिसमें समर्थन शामिल है <code>create_function()</code> और <code>eval()</code> निर्माण, जो एचपीएचपीसी के साथ असंभव था।<ref>{{cite web
एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और [[एचपीएचपीडी]] [[डिबगर]] के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, [[एचपीएचपीआई]] (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे [[सॉफ्टवेयर निर्माण]] को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं।<ref name="initial-release" />  अंत में, 4.0 से पहले के एचएचवीएम के संस्करणों में संपूर्ण पीएचपी भाषा के लिए लगभग पूर्ण समर्थन है (जैसा कि पीएचपी संस्करण 5.4 के आधिकारिक कार्यान्वयन द्वारा परिभाषित किया गया है), जिसमें समर्थन शामिल है <code>create_function()</code> और <code>eval()</code> निर्माण, जो एचपीएचपीसी के साथ असंभव था।<ref>{{cite web
  | url = https://github.com/facebook/hiphop-php/issues/716
  | url = https://github.com/facebook/hiphop-php/issues/716
  | title = facebook/hhvm: About upgrade to PHP 5.4 engine
  | title = facebook/hhvm: About upgrade to PHP 5.4 engine
Line 102: Line 101:
  | author1 = Paul Tarjan
  | author1 = Paul Tarjan
  | publisher = [[Facebook]]
  | publisher = [[Facebook]]
}}</ref> मेटा ने हैक (प्रोग्रामिंग लैंग्वेज) भी जारी किया, जो PHP का व्युत्पन्न है<ref>{{cite magazine
}}</ref> मेटा ने हैक (प्रोग्रामिंग लैंग्वेज) भी जारी किया, जो पीएचपी का व्युत्पन्न है<ref>{{cite magazine
  | url = https://www.wired.com/wiredenterprise/2014/03/facebook-hack/
  | url = https://www.wired.com/wiredenterprise/2014/03/facebook-hack/
  | title = Facebook Introduces 'Hack,' the Programming Language of the Future
  | title = Facebook Introduces 'Hack,' the Programming Language of the Future
Line 113: Line 112:
  | author1 = Julien Verlaguet | author2 = Alok Menghrajani
  | author1 = Julien Verlaguet | author2 = Alok Menghrajani
  | publisher = [[Facebook]] | website = code.facebook.com
  | publisher = [[Facebook]] | website = code.facebook.com
}}</ref> जो प्रोग्रामर को [[गतिशील टाइपिंग]] और [[स्थिर टाइपिंग]] (एक अवधारणा जिसे [[क्रमिक टाइपिंग]] के रूप में भी जाना जाता है) का उपयोग करने की अनुमति देता है, और [[डेटा प्रकार]] को फ़ंक्शन (प्रोग्रामिंग) [[तर्क (कंप्यूटर प्रोग्रामिंग)]], फ़ंक्शन रिटर्न मान और [[वर्ग गुण]]ों के लिए निर्दिष्ट करने की अनुमति देता है। हालाँकि, हैक पूरी तरह से पिछड़ी संगतता प्रदान नहीं करता है क्योंकि यह कई PHP सुविधाओं को हटा देता है, जैसे कि <code>[[goto]]</code> बयान और गतिशील [[चर (कंप्यूटर विज्ञान)]] नाम।<ref>{{cite web
}}</ref> जो प्रोग्रामर को [[गतिशील टाइपिंग]] और [[स्थिर टाइपिंग]] (एक अवधारणा जिसे [[क्रमिक टाइपिंग]] के रूप में भी जाना जाता है) का उपयोग करने की अनुमति देता है, और [[डेटा प्रकार]] को फ़ंक्शन (प्रोग्रामिंग) [[तर्क (कंप्यूटर प्रोग्रामिंग)]], फ़ंक्शन रिटर्न मान और [[वर्ग गुण]]ों के लिए निर्दिष्ट करने की अनुमति देता है। हालाँकि, हैक पूरी तरह से पिछड़ी संगतता प्रदान नहीं करता है क्योंकि यह कई पीएचपी सुविधाओं को हटा देता है, जैसे कि <code>[[goto]]</code> बयान और गतिशील [[चर (कंप्यूटर विज्ञान)]] नाम।<ref>{{cite web
  | url = http://radar.oreilly.com/2014/04/facebooks-hack-hhvm-and-the-future-of-php.html
  | url = http://radar.oreilly.com/2014/04/facebooks-hack-hhvm-and-the-future-of-php.html
  | title = Facebook's Hack, HHVM, and the future of PHP
  | title = Facebook's Hack, HHVM, and the future of PHP
Line 139: Line 138:
  | website = docs.hhvm.com
  | website = docs.hhvm.com
}}</ref>
}}</ref>
सितंबर 2017 में, यह घोषणा की गई थी कि संस्करण 3.30 आधिकारिक तौर पर PHP का समर्थन करने के लिए HHVM का अंतिम संस्करण होगा, और यह कि HHVM केवल हैक को आगे बढ़ने का समर्थन करेगा।<ref>{{cite web
सितंबर 2017 में, यह घोषणा की गई थी कि संस्करण 3.30 आधिकारिक तौर पर पीएचपी का समर्थन करने के लिए एचएचवीएम का अंतिम संस्करण होगा, और यह कि एचएचवीएम केवल हैक को आगे बढ़ने का समर्थन करेगा।<ref>{{cite web
  | url = https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html
  | url = https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html
  | title = Ending PHP Support, and The Future Of Hack
  | title = Ending PHP Support, and The Future Of Hack
  | date = September 12, 2018 | access-date = December 26, 2022
  | date = September 12, 2018 | access-date = December 26, 2022
  | author = Fred Emmott
  | author = Fred Emmott
}}</ref> यह PHP 7 में भिन्नताओं और असंगतताओं के कारण था।<ref>{{Cite web|url=https://www.infoworld.com/article/3226489/web-development/forget-php-facebooks-hhvm-engine-switches-to-hack-instead.html|title=Forget PHP! Facebook's HHVM engine switches to Hack instead|last=Krill|first=Paul|date=2017-09-20|website=InfoWorld|language=en|access-date=2019-02-06}}</ref> फरवरी 2019 में जारी HHVM 4.0, PHP के समर्थन के बिना पहला संस्करण था।<ref>{{cite web
}}</ref> यह पीएचपी 7 में भिन्नताओं और असंगतताओं के कारण था।<ref>{{Cite web|url=https://www.infoworld.com/article/3226489/web-development/forget-php-facebooks-hhvm-engine-switches-to-hack-instead.html|title=Forget PHP! Facebook's HHVM engine switches to Hack instead|last=Krill|first=Paul|date=2017-09-20|website=InfoWorld|language=en|access-date=2019-02-06}}</ref> फरवरी 2019 में जारी एचएचवीएम 4.0, पीएचपी के समर्थन के बिना पहला संस्करण था।<ref>{{cite web
   | url = https://hhvm.com/blog/2019/02/11/hhvm-4.0.0.html
   | url = https://hhvm.com/blog/2019/02/11/hhvm-4.0.0.html
   | title = HHVM 4.0.0
   | title = HHVM 4.0.0
Line 153: Line 152:


== प्रदर्शन ==
== प्रदर्शन ==
एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, HHVM में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर [[THROUGHPUT]] और कम [[विलंबता (इंजीनियरिंग)]] हो जाती है। Q4 2012 में, HHVM पर facebook.com के स्रोत कोड के निष्पादन ने HPHPc के साथ प्रदर्शन समानता प्राप्त की,<ref name="performance" />और दिसंबर 2013 में HPHPc को लगभग 15% से भी अधिक कर दिया गया था।<ref>{{cite web
एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, एचएचवीएम में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर [[THROUGHPUT]] और कम [[विलंबता (इंजीनियरिंग)]] हो जाती है। Q4 2012 में, एचएचवीएम पर facebook.com के स्रोत कोड के निष्पादन ने Hपीएचपीc के साथ प्रदर्शन समानता प्राप्त की,<ref name="performance" />और दिसंबर 2013 में Hपीएचपीc को लगभग 15% से भी अधिक कर दिया गया था।<ref>{{cite web
  | url = http://www.hhvm.com/blog/2813/we-are-the-98-5-and-the-16
  | url = http://www.hhvm.com/blog/2813/we-are-the-98-5-and-the-16
  | title = We are the 98.5% (and the 16%)
  | title = We are the 98.5% (and the 16%)

Revision as of 13:48, 7 March 2023

HHVM
Stable release
Script error: The module returned a nil value. It is supposed to return an export table. / Script error: The module returned a nil value. It is supposed to return an export table.; Error: first parameter cannot be parsed as a date or time. (Script error: The module returned a nil value. It is supposed to return an export table.)

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


सिंहावलोकन

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

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

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


प्रदर्शन

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


यह भी देखें

टिप्पणियाँ

  1. Only the Hack's type-checking (hh_server and hh_client) and code-formatting (hh_format) command-line utilities and daemons bundled together with the HipHop Virtual Machine are written in OCaml.


संदर्भ

  1. 1.0 1.1 1.2 1.3 Jason Evans (December 9, 2011). "The HipHop Virtual Machine". Meta Platforms. Retrieved August 2, 2014.
  2. "Building and installing HHVM on CentOS 7.x". github.com. Meta Platforms. May 26, 2015. Retrieved June 12, 2015.
  3. "Building the Hack typechecker". github.com. Meta. September 10, 2014. Retrieved June 12, 2015.
  4. "Facebook's HHVM Begins Seeing Rust Rewrite - Phoronix". Retrieved August 29, 2019.
  5. 5.0 5.1 "facebook/hhvm: License". github.com. Facebook, Inc. Retrieved August 2, 2014.
  6. 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.
  7. "facebook/hhvm". github.com. Meta Platforms. Retrieved August 2, 2014.
  8. Kaushik Pal (April 28, 2014). "PHP and Zend Engine Internals". phpbuilder.com. Archived from the original on September 15, 2014. Retrieved September 23, 2014.
  9. HHVM source code on GitHub
  10. 10.0 10.1 10.2 10.3 Drew Paroski (November 29, 2012). "Speeding up PHP-based development with HHVM". Meta Platforms. Retrieved August 2, 2014.
  11. "Announcement on GitHub removing HPHPc support". github.com. Meta Platforms. February 19, 2013. Retrieved May 24, 2013.
  12. "HipHop Bytecode v1 revision 18". github.com. Meta Platforms. July 31, 2014. Retrieved May 24, 2013.
  13. "facebook/hhvm: About upgrade to PHP 5.4 engine". github.com. May 2013. Retrieved August 2, 2014.
  14. "facebook/hhvm: Home". github.com. Meta Platforms. May 8, 2014. Retrieved August 2, 2014.
  15. Paul Tarjan (March 28, 2014). "HHVM 3.0.0". Facebook. Retrieved December 26, 2022.
  16. Cade Metz (March 20, 2014). "Facebook Introduces 'Hack,' the Programming Language of the Future". Wired. Retrieved April 15, 2014.
  17. Julien Verlaguet; Alok Menghrajani (April 2014). "Hack: a new programming language for HHVM". code.facebook.com. Facebook. Retrieved March 23, 2014.
  18. Josh Lockhart (April 3, 2014). "Facebook's Hack, HHVM, and the future of PHP". O'Reilly Media. Retrieved August 2, 2014.
  19. "Hack and HHVM: Type Annotations (Hack Manual)". docs.hhvm.com. Retrieved March 25, 2014.
  20. "Hack and HHVM: Type Inference (Hack Manual)". docs.hhvm.com. Archived from the original on March 26, 2014. Retrieved March 25, 2014.
  21. "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.
  22. Fred Emmott (September 12, 2018). "Ending PHP Support, and The Future Of Hack". Retrieved December 26, 2022.
  23. Krill, Paul (September 20, 2017). "Forget PHP! Facebook's HHVM engine switches to Hack instead". InfoWorld (in English). Retrieved February 6, 2019.
  24. Fred Emmott (February 11, 2019). "HHVM 4.0.0". Retrieved December 26, 2022.
  25. "We are the 98.5% (and the 16%)". hhvm.com. December 19, 2013. Retrieved August 2, 2014.


बाहरी संबंध

  • No URL found. Please specify a URL here or add one to Wikidata.