You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Hiphop virtual machine

از EverybodyWiki Bios & Wiki
پرش به:ناوبری، جستجو

ماشین مجازی هیپ هاپ:

ماشین مجازی هیپ هاپ(hiphop virtual machine) یک ماشین مجازی متن باز بر اساس کامپایل شدن درجا است(just-in-time compilation) که به عنوان موتور اجرا کننده برای زبان برنامه نویسی Hack و همچنین برای پشتیبانی از اجرای PHP پیش از منتشر شدن HHVM نسخه 4 استفاده میشده است. با استفاده از اصل JIT، کد Hack ابتدا به حد وسط HipHop bytecode تبدیل میشود، که به طور پویا به کد ماشینی x86-64 ترجمه، بهینه، و به سادگی اجرا میشود. این با اجرای تفسیر شده ی معمول در php در تضاد است، که موتور Zend کد منبع PHP را به opcode تبدیل میکند که به عنوان صورتی از bytecode عمل میکند، و opcodeها مستقیما روی پردازنده ی مرکزی مجازی موتور Zend اجرا میشوند.

HHVM به وسیله ی facebook به همراه کد کنبع به میزبانی github توسعه یافته است.

نگاه کلی[ویرایش]

HHVM به عنوان جایگزین HipHop for PHP (HPHPc) موتور اجرای PHP، که یک PHP به C++ tranpiler است و Facebook را نیز ساخته است. بر اساس تجربه ی کسب شده و هدف گیری جهت حل مشکلات بوجود آمده توسط HPHPc، فیس بوک (Facebook) تصمیم گرفت که در اوایل سال 2010 یک ماشین مجازی JIT-based PHP بسازد. مشکلات در ارتباط با HPHPc شامل دسترسی آن به یک plateau برای بهبودهای عملکردی، کمبود پشتیبانی کامل برای تمام مزایای زبان PHP، و دشواری های برآمده از توسعه های هدر دهنده ی زمان و منابع و فرآیند پیشبرد لازم برای پروژه های PHP که از HPHPc استفاده میکنند، بوده است. در Q1 2013، نسخه ی تولیدی وب سایت facebook.com، دیگر از HPHPc استفاده نکرد و از HHVM استفاده کرد.

طبق اصل تلفیقی JIT، HHVM ابتدا کد اجرا شده ی PHP یا Hack را به یک bytecode بالا مرتبه یعنی HHBC تبدیل میکند، که به عنوان یک زبان میان مرتبه (intermediate language) شناخته میشود.HHBC یک شکل از bytecode است که به طور خاص برای HHVM ساخته شده است، به شکلی که برای استفاده ی interpreters  و just-in-time کامپایلرها مناسب باشد. برای قدم بعدی در اجرا، HHVM به طور پویا ((“just-in-time” بایت کد HHBC  را به ماشین کد x86-64 ترجمه میکند، بهینه سازی اضافی را به طور آنالیز پویای بایت کد ترجمه شده انجام میدهد، و کد ماشینی x86-64 را اجرا میکند. در نتیجه ،HHVM شباهت های مشخصی با یک ماشین مجازی که با دیگر زبانهای برنامه نویسی استفاده شده است، دارد، که شامل CLR (common language run-time) و ماشین مجازی Java (JVM) میشود.

HHVM فواید زیادی را در مقایسه با HPHPc اراده میدهد، و یکی از کاملترین پشتیبانیها برای تمام زبان PHP طبق تعریف رسمی پیادی سازی PHP نسخه 5.4،شامل پشتیبانی برای ساختارهای create function() و eval() میشود. همچنین، HHVM موتور اجرای مشابهی را هنگام تولید و محیط های توسعه، درحال پشتیبانی ادغام بین موتور اجرا و HPHPd debugger در دو نوع محیط استفاده میکند; در نتیجه، حفظ کردن HPHPi جداگانه به عنوان یک ابزار توسعه دیگر به اندازه ی HPHPc مورد نیاز نیست. HHVM ساختمان های بلند مورد نیاز HPHPc که برای اجرای برنامه های PHP استفاده میشود را نابود میکند، که نتیجه ی آن توسعه و گسترش  ساده تر نسبت به HPHPc است.

همراه با HHVM، فیس بوک همچنین Hack را منتشر کرد، مشتقی برای PHP که به برنامه نویسان اجازه میدهد که از تایپ پویا و تایپ ثابت استفاده کنند، که این مفهومی است که به عنوان gradual typing  نیز شناخته میشود. و به تایپ ها اجازه میدهد که برای function arguements خاص شوند، تابع return values، و class properties، در هر حال، انواع متغیرهای محلی نمیتوانند مشخص شوند. در زمان مشابه، Hack قابلیت backward compatibility را با حمل برخی ویژگی های PHP گردآوری نمیکند، مثل جمله ی goto و نام های متغیر پویا.

در سپتامبر 1017، اعلام شد که نسخه ی 3.24 اخرین نسخه ی HHVM  است که رسما از PHP پشتیبانی میکند، و از انجا به بعد فقط از Hack  پشتیبانی میکند.

عملکرد[ویرایش]

به عنوان یک فرآیند ماشین مجازی که محیط اجرا را گردآوری میکند، HHVM توانایی این را دارد که نوع زنده ی اطلاعات برای تولید یک native code مفیدتر استفاده شود، که به سمت یک وب سرور through put و تاخیر کمتر هدایت میشود

در ۲۰۱۲، سرعت اجرای کد مبدأ فیسبوک بر هیپ‌هاپ با سرعت اجرای آن بر HPHPc برابر شد، و در دسامبر همان سال تا حتّی ۱۵٪ از HPHPc سریع‌تر شد.


منابع[ویرایش]

https://en.wikipedia.org/wiki/HHVM

https://github.com/facebook/hhvm/wiki/Building%20the%20Hack%20Typechecker

https://www.facebook.com/notes/facebook-engineering/the-hiphop-virtual-machine/10150415177928920

This article "Hiphop virtual machine" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Hiphop virtual machine. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[ویرایش]