ХХВМ
![]() | |
Разработчик(и) | Мета-платформы |
---|---|
Первоначальный выпуск | 9 декабря 2011 г [1] |
Стабильная версия | 3.15.0 [2] ![]() |
Репозиторий | |
Написано в | PHP , С++ , [3] OCaml [4] [а] и ржавчина [5] |
Лицензия | Лицензия PHP и лицензия Zend [6] |
Веб-сайт | ххвм |
HipHop Virtual Machine ( HHVM ) — это виртуальная машина с открытым исходным кодом, основанная на JIT-компиляции , которая служит механизмом выполнения для языка программирования Hack . Используя принцип JIT-компиляции, код Hack сначала преобразуется в промежуточный байт-код HipHop ( HHBC ), который затем динамически транслируется в x86-64 машинный код , оптимизируется и исполняется в собственном коде. [7] [8] выполнением PHP Это контрастирует с обычным интерпретируемым , при котором Zend Engine преобразует исходный код PHP в коды операций , которые служат формой байт-кода Zend Engine , и выполняет коды операций непосредственно на виртуальном процессоре . [9]
HHVM разработан Meta , исходный код проекта размещен на GitHub ; [10] он лицензируется на условиях PHP License и Zend License . [1] [6]
Обзор
[ редактировать ]HHVM был создан как преемник механизма выполнения PHP HipHop for PHP PHP- C++, (HPHPc), который представляет собой транспилятор также созданный Facebook. [11] [12] Основываясь на полученном опыте и стремясь решить проблемы, возникающие при использовании HPHPc, в начале 2010 года компания Meta решила создать виртуальную машину PHP на базе JIT . Проблемы, связанные с HPHPc, включали достижение плато для дальнейшего улучшения производительности, фундаментальную неспособность поддерживать все функции языка PHP, а также трудности, возникающие из-за определенных трудоемких и ресурсоемких процессов разработки и развертывания. [11] В первом квартале 2013 года производственная версия веб-сайта facebook.com перестала использовать HPHPc и перешла на HHVM.
Следуя принципу JIT-компиляции, HHVM сначала преобразует исполняемый код в промежуточный язык высокого уровня — байт-код HHBC. HHBC — это формат байт-кода, созданный специально для HHVM, подходящий для использования как интерпретаторами , так и JIT-компиляторами. Затем HHVM динамически («точно в срок») преобразует HHBC в машинный код x86-64, оптимизированный посредством динамического анализа преобразованного байт-кода. Наконец, он выполняет машинный код x86-64. [1] [11] [13] В результате HHVM имеет определенное сходство с виртуальными машинами, используемыми другими языками программирования, включая среду Common Language Runtime (CLR для языка C# ) и виртуальную машину Java (JVM для языка Java ).
HHVM имеет множество преимуществ по сравнению с HPHPc. HHVM использует один и тот же механизм выполнения при развертывании как в производственной среде, так и в среде разработки, одновременно поддерживая интеграцию между механизмом выполнения и HPHPd отладчиком в обоих типах сред; в результате поддержка HPHPi (интерпретатора HipHop) отдельно в качестве утилиты разработки больше не требуется, как это было в случае с HPHPc. HHVM также исключает длительные сборки, необходимые HPHPc для запуска программ, что значительно упрощает процессы разработки и развертывания, чем в случае с HPHPc. [1] Наконец, версии HHVM до 4.0 имеют почти полную поддержку всего языка PHP (согласно официальной реализации PHP версии 5.4), включая поддержку create_function()
и eval()
конструкции, что было невозможно с HPHPc. [14] [15]
Вместе с HHVM 3.0, [16] Meta также выпустила Hack , производную от PHP. [17] [18] Это позволяет программистам использовать как динамическую , так и статическую типизацию (концепция, также известная как постепенная типизация ), а также позволяет типы указывать функции для аргументов , возвращаемых значений функции и свойств класса . Однако Hack не обеспечивает полную обратную совместимость , поскольку удаляет некоторые функции PHP, такие как goto
имена операторов и динамических переменных . [19] [20] [21] [22]
В сентябре 2017 года было объявлено, что версия 3.30 станет последней версией HHVM, официально поддерживающей PHP, и что в будущем HHVM будет поддерживать только Hack. [23] Это произошло из-за различий и несовместимости PHP 7. [24] HHVM 4.0, выпущенная в феврале 2019 года, стала первой версией без поддержки PHP. [25]
Производительность
[ редактировать ]Как виртуальная машина процесса, обеспечивающая среду выполнения, HHVM имеет возможность использовать информацию о текущих типах для создания более эффективного собственного кода , что приводит к более высокой пропускной способности веб-сервера и снижению задержки . В четвертом квартале 2012 года выполнение исходного кода facebook.com на HHVM достигло уровня производительности с HPHPc. [11] а в декабре 2013 г. показатель HPHPc был даже превзойден примерно на 15%. [26]
См. также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д Джейсон Эванс (9 декабря 2011 г.). «Виртуальная машина хип-хопа» . Метаплатформы . Проверено 2 августа 2014 г.
- ^ «Выпуск 3.15.0» . 28 сентября 2016 г. Проверено 13 марта 2018 г.
- ^ «Сборка и установка HHVM на CentOS 7.x» . github.com . Метаплатформы . 26 мая 2015 года . Проверено 12 июня 2015 г.
- ^ «Создание средства проверки типов Hack» . github.com . Мета. 10 сентября 2014 года . Проверено 12 июня 2015 г.
- ^ «HHVM Facebook начинает переписывать Rust — Phoronix» . Проверено 29 августа 2019 г.
- ^ Перейти обратно: а б «facebook/hhvm: Лицензия» . github.com . Facebook, Inc. Проверено 2 августа 2014 г.
- ^ Оттони, Гильерме (20 июня 2018 г.). «HHVM JIT: регионально-ориентированный компилятор для PHP и взлома» . Материалы 39-й конференции ACM SIGPLAN по проектированию и реализации языков программирования (PLDI) . АКМ . стр. 151–165.
- ^ «Фейсбук/ххвм» . github.com . Метаплатформы . Проверено 2 августа 2014 г.
- ^ Кошик Пал (28 апреля 2014 г.). «Внутреннее устройство PHP и Zend Engine» . phpbuilder.com . Архивировано из оригинала 15 сентября 2014 года . Проверено 23 сентября 2014 г.
- ^ Исходный код HHVM на GitHub.
- ^ Перейти обратно: а б с д Дрю Пароски (29 ноября 2012 г.). «Ускорение разработки на основе PHP с помощью HHVM» . Метаплатформы . Проверено 2 августа 2014 г.
- ^ «Объявление об удалении GitHub поддержки HPHPc» . github.com . Метаплатформы . 19 февраля 2013 года . Проверено 24 мая 2013 г.
- ^ «Байткод HipHop v1, версия 18» . github.com . Метаплатформы . 31 июля 2014 года . Проверено 24 мая 2013 г.
- ^ «facebook/hhvm: Об обновлении движка PHP 5.4» . github.com . Май 2013 года . Проверено 2 августа 2014 г.
- ^ «facebook/hhvm: Домой» . github.com . Метаплатформы . 8 мая 2014 года . Проверено 2 августа 2014 г.
- ^ Пол Тарьян (28 марта 2014 г.). «ХХВМ 3.0.0» . Фейсбук . Проверено 26 декабря 2022 г.
- ^ Кейд Мец (20 марта 2014 г.). «Facebook представляет «Hack» — язык программирования будущего» . Проводной . Проверено 15 апреля 2014 г.
- ^ Жюльен Верлаге; Алок Менграджани (апрель 2014 г.). «Хак: новый язык программирования для HHVM» . code.facebook.com . Фейсбук . Проверено 23 марта 2014 г.
- ^ Джош Локхарт (3 апреля 2014 г.). «Взлом Facebook, HHVM и будущее PHP» . О'Рейли Медиа . Проверено 2 августа 2014 г.
- ^ «Взлом и HHVM: Аннотации типов (Руководство по взлому)» . docs.hhvm.com . Проверено 25 марта 2014 г.
- ^ «Взлом и HHVM: вывод типа (Руководство по взлому)» . docs.hhvm.com . Архивировано из оригинала 26 марта 2014 года . Проверено 25 марта 2014 г.
- ^ «Hack и HHVM: неподдерживаемые функции PHP в Hack (Руководство по взлому)» . docs.hhvm.com . Архивировано из оригинала 4 ноября 2015 года . Проверено 2 апреля 2014 г.
- ^ Фред Эммотт (12 сентября 2018 г.). «Прекращение поддержки PHP и будущее взлома» . Проверено 26 декабря 2022 г.
- ^ Криль, Пол (20 сентября 2017 г.). «Забудьте о PHP! Вместо этого движок HHVM Facebook переключается на Hack» . Инфомир . Проверено 6 февраля 2019 г.
- ^ Фред Эммотт (11 февраля 2019 г.). «ХХВМ 4.0.0» . Проверено 26 декабря 2022 г.
- ^ «Мы — 98,5% (и 16%)» . hhvm.com . 19 декабря 2013 года . Проверено 2 августа 2014 г.
Внешние ссылки
[ редактировать ]- программное обеспечение 2011 года
- Программное обеспечение С++
- Программное обеспечение Rust (язык программирования)
- программное обеспечение Facebook
- Бесплатные компиляторы и интерпретаторы
- Программное обеспечение OCaml
- PHP-программное обеспечение
- Программное обеспечение с использованием лицензии PHP
- Виртуальные машины на основе стека
- Байт-коды