एचएचवीएम: 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...")
 
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Process virtual machine developed by Meta}}
{{Short description|Process virtual machine developed by Meta}}
{{Use mdy dates|date=August 2014}}
{{Use mdy dates|date=August 2014}}
{{Infobox software
| name                  = HHVM
| logo                  = HHVM logo.svg
| logo size              = x64px
| logo alt              = HHVM logo, featuring white uppercase "HHVM" letters on a black background, with stylized triangular geometric shapes on the left
| logo caption          =
| latest release version = {{wikidata|property|preferred|references|edit|Q18150679|P348|P548=Q2804309}}
| latest release date = {{start date and age|{{wikidata|qualifier|preferred|single|Q18150679|P348|P548=Q2804309|P577}}}}
| डेवलपर = [[मेटा प्लेटफार्म]]
| रिहा = {{Start date and age|2011|12|09}}<ref name="initial-release">{{cite web
| url = https://www.facebook.com/notes/facebook-engineering/the-hiphop-virtual-machine/10150415177928920
| title = The HipHop Virtual Machine
| date = December 9, 2011 | access-date = August 2, 2014
| author = Jason Evans | publisher = [[Meta Platforms]]
}}</ref>
| प्रोग्रामिंग लैंग्वेज = [[PHP]], [[C++]],<ref>{{cite web
| url = https://github.com/facebook/hhvm/wiki/Building-and-installing-hhvm-on-CentOS-7.x
| title = Building and installing HHVM on CentOS&nbsp;7.x
| date = May 26, 2015 | access-date = June 12, 2015
| publisher = [[Meta Platforms]] | website = github.com
}}</ref> [[OCaml]]<ref>{{cite web
| url = https://github.com/facebook/hhvm/wiki/Building%20the%20Hack%20Typechecker
| title = Building the Hack typechecker
| date = September 10, 2014 | access-date = June 12, 2015
| publisher = Meta | website = github.com
}}</ref>{{Efn|Only the [[Hack (programming language)|Hack]]'s [[Data type|type]]-checking ({{Mono|hh_server}} and {{Mono|hh_client}}) and code-formatting ({{Mono|hh_format}}) [[Command-line utility|command-line utilities]] and [[Daemon (computing)|daemons]] bundled together with the HipHop Virtual Machine are written in [[OCaml]].}} और [[जंग (प्रोग्रामिंग भाषा)]]<ref>{{cite web |title=Facebook's HHVM Begins Seeing Rust Rewrite - Phoronix |url=https://www.phoronix.com/scan.php?page=news_item&px=Facebook-Rust-HHVM |access-date=29 August 2019}}</ref>
| ऑपरेटिंग सिस्टम =
| मंच =
| लाइसेंस = PHP लाइसेंस और [[ज़ेंड लाइसेंस]]<ref name="license">{{cite web
| url = https://github.com/facebook/hhvm#license
| title = facebook/hhvm: License
| access-date = August 2, 2014
| publisher = [[Facebook, Inc.]] | website = github.com
}}</ref>
| वेबसाइट = {{Official URL}}
}}


हिपहॉप वर्चुअल मशीन (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 16:
  | 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 26:
  | 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> यह पीएचपी लाइसेंस और ज़ेंड लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।
HHVM को मेटा प्लेटफॉर्म द्वारा विकसित किया गया है, परियोजना के स्रोत कोड को [[GitHub]] पर होस्ट किया गया है;<ref>[https://github.com/facebook/hhvm HHVM source code on GitHub]</ref> यह PHP लाइसेंस और Zend लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त है।<ref name="initial-release" /><ref name="license" />




== सिंहावलोकन ==
== समीक्षा ==
एचएचवीएम को हिपहॉप फॉर पीएचपी (एचपीएचपीसी) पीएचपी निष्पादन इंजन के उत्तराधिकारी के रूप में बनाया गया था, जो कि फेसबुक द्वारा बनाया गया एक पीएचपी-टू-सी++ [[ट्रांसपाइल्स]] भी है।<ref name="performance">{{cite web
एचएचवीएम को हिपहॉप फॉर पीएचपी (एचपीएचपीसी) पीएचपी निष्पादन इंजन के उत्तराधिकारी के रूप में बनाया गया था, जो कि फेसबुक द्वारा बनाया गया एक पीएचपी-टू-सी++ [[ट्रांसपाइल्स]] भी है।<ref name="performance">{{cite web
  | url = https://www.facebook.com/notes/facebook-engineering/speeding-up-php-based-development-with-hiphop-vm/10151170460698920
  | url = https://www.facebook.com/notes/facebook-engineering/speeding-up-php-based-development-with-hiphop-vm/10151170460698920
Line 77: Line 40:
  | 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 में, फेसबुक.कॉम  वेबसाइट के उत्पादन संस्करण ने एच.पी.एच.पी.सी का उपयोग करना बंद कर दिया और एचएचवीएम पर स्विच कर दिया।


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="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 49:
}}</ref> नतीजतन, एचएचवीएम में अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली वर्चुअल मशीनों के लिए कुछ समानताएं हैं, जिनमें [[सामान्य भाषा रनटाइम]] (सी शार्प (प्रोग्रामिंग भाषा) के लिए सीएलआर, सी # भाषा) और [[जावा वर्चुअल मशीन]] (जेवीएम, जावा (प्रोग्रामिंग) शामिल हैं। भाषा) भाषा)।
}}</ref> नतीजतन, एचएचवीएम में अन्य प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली वर्चुअल मशीनों के लिए कुछ समानताएं हैं, जिनमें [[सामान्य भाषा रनटाइम]] (सी शार्प (प्रोग्रामिंग भाषा) के लिए सीएलआर, सी # भाषा) और [[जावा वर्चुअल मशीन]] (जेवीएम, जावा (प्रोग्रामिंग) शामिल हैं। भाषा) भाषा)।


एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और [[एचपीएचपीडी]] [[डिबगर]] के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, [[एचपीएचपीआई]] (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे [[सॉफ्टवेयर निर्माण]] को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं।<ref name="initial-release" />  अंत में, 4.0 से पहले के एचएचवीएम के संस्करणों में संपूर्ण PHP भाषा के लिए लगभग पूर्ण समर्थन है (जैसा कि PHP संस्करण 5.4 के आधिकारिक कार्यान्वयन द्वारा परिभाषित किया गया है), जिसमें समर्थन शामिल है <code>create_function()</code> और <code>eval()</code> निर्माण, जो एचपीएचपीसी के साथ असंभव था।<ref>{{cite web
एचपीएचपीसी की तुलना में एचएचवीएम के कई फायदे हैं। एचएचवीएम एक ही निष्पादन इंजन का उपयोग करता है जब उत्पादन और विकास दोनों वातावरणों में तैनात किया जाता है, जबकि निष्पादन इंजन और [[एचपीएचपीडी]] [[डिबगर]] के बीच दोनों प्रकार के वातावरण में एकीकरण का समर्थन करता है; नतीजतन, [[एचपीएचपीआई]] (हिपहॉप दुभाषिया) को विकास उपयोगिता के रूप में अलग से बनाए रखने की अब आवश्यकता नहीं है क्योंकि यह एचपीएचपीसी के मामले में था। एचएचवीएम प्रोग्राम चलाने के लिए एचपीएचपीसी द्वारा आवश्यक लंबे [[सॉफ्टवेयर निर्माण]] को भी समाप्त कर देता है, जिसके परिणामस्वरूप एचपीएचपीसी की तुलना में बहुत सरल विकास और परिनियोजन प्रक्रियाएं होती हैं। अंत में, 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 65:
  | 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 76:
  | 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 102:
  | 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 116:


== प्रदर्शन ==
== प्रदर्शन ==
एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, HHVM में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर [[THROUGHPUT]] और कम [[विलंबता (इंजीनियरिंग)]] हो जाती है। Q4 2012 में, HHVM पर facebook.com के स्रोत कोड के निष्पादन ने HPHPc के साथ प्रदर्शन समानता प्राप्त की,<ref name="performance" />और दिसंबर 2013 में HPHPc को लगभग 15% से भी अधिक कर दिया गया था।<ref>{{cite web
एक प्रक्रिया वर्चुअल मशीन के रूप में जो निष्पादन वातावरण प्रदान करती है, एचएचवीएम में अधिक कुशल देशी कोड का उत्पादन करने के लिए लाइव प्रकार की जानकारी का उपयोग करने की क्षमता होती है, जिससे उच्च वेब सर्वर [[THROUGHPUT|प्रवाह क्षमता]] और कम [[विलंबता (इंजीनियरिंग)]] हो जाती है। Q4 2012 में, एचएचवीएम पर फेसबुक.कॉम  के स्रोत कोड के निष्पादन ने एच.पी.एच.पी.सी के साथ प्रदर्शन समानता प्राप्त की,<ref name="performance" />और दिसंबर 2013 में एच.पी.एच.पी.सी को लगभग 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%)
Line 178: Line 141:
{{Sister project links|wikt=no|commons=no|n=no|q=no|s=no|b=no|voy=no|v=no|d=no|species=no|species_author=no|m=no|mw=HHVM}}
{{Sister project links|wikt=no|commons=no|n=no|q=no|s=no|b=no|voy=no|v=no|d=no|species=no|species_author=no|m=no|mw=HHVM}}


* {{Official website}}
* [https://hhvm.com/ Official Website]




{{PHP}}
{{PHP}}
{{Facebook navbox}}
{{Facebook navbox}}
[[Category: 2011 सॉफ्टवेयर]] [[Category: सी ++ सॉफ्टवेयर]] [[Category: जंग (प्रोग्रामिंग भाषा) सॉफ्टवेयर]] [[Category: फेसबुक सॉफ्टवेयर]] [[Category: निःशुल्क संकलक और दुभाषिए]] [[Category: ओकैमल सॉफ्टवेयर]] [[Category: पीएचपी सॉफ्टवेयर]] [[Category: सॉफ्टवेयर PHP लाइसेंस का उपयोग कर रहा है]] [[Category: आभाषी दुनिया]] [[Category: बाइटकोड]]


[[Category: Machine Translated Page]]
[[Category:2011 सॉफ्टवेयर]]
[[Category:Articles using infobox templates with no data rows]]
[[Category:Articles with invalid date parameter in template]]
[[Category:CS1 English-language sources (en)]]
[[Category:Citation Style 1 templates|M]]
[[Category:Collapse templates]]
[[Category:Created On 18/02/2023]]
[[Category:Created On 18/02/2023]]
[[Category:Interwiki link templates| ]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Official website missing URL]]
[[Category:Pages using Infobox software with unknown parameters|लाइसेंसएचएचवीएम]]
[[Category:Pages with empty portal template]]
[[Category:Pages with reference errors]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Templates using under-protected Lua modules]]
[[Category:Use mdy dates from August 2014]]
[[Category:Wikipedia fully protected templates|Sister project links]]
[[Category:Wikipedia metatemplates]]
[[Category:आभाषी दुनिया]]
[[Category:ओकैमल सॉफ्टवेयर]]
[[Category:जंग (प्रोग्रामिंग भाषा) सॉफ्टवेयर]]
[[Category:निःशुल्क संकलक और दुभाषिए]]
[[Category:पीएचपी सॉफ्टवेयर]]
[[Category:फेसबुक सॉफ्टवेयर]]
[[Category:बाइटकोड]]
[[Category:सी ++ सॉफ्टवेयर]]
[[Category:सॉफ्टवेयर PHP लाइसेंस का उपयोग कर रहा है]]

Latest revision as of 13:15, 29 August 2023

हिपहॉप वर्चुअल मशीन (एचएचवीएम) एक खुला स्रोत सॉफ्टवेयर है। ओपन-सोर्स वर्चुअल मशीन समय-समय पर संकलन पर आधारित है। जस्ट-इन-टाइम (जेआईटी) कंपाइलेशन हैक (प्रोग्रामिंग भाषा) के लिए एक निष्पादन इंजन के रूप में कार्य करता है। जेआईटी संकलन के सिद्धांत का उपयोग करके, हैक कोड को पहले इंटरमीडिएट हिपहॉप बाइटकोड (एचएचबीसी) में रूपांतरित किया जाता है, जिसे बाद में गतिशील रूप से 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.


बाहरी संबंध