The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск виртуальной машины HHVM 4.0 с прекращением поддержки PHP

12.02.2019 11:41

Спустя пять лет с момента формирования ветки 3.0 компания Facebook представила выпуск виртуальной машины HHVM 4.0 (HipHop Virtual Machine), поддерживающей выполнение программ на языке Hack (вариант PHP со статической типизацией). С оговорками поддерживается синтаксис PHP 5 и большинство возможностей PHP 7. Код проекта написан на C++ и распространяется под открытыми лицензиями PHP и Zend.

Отличительной чертой HHVM является применение JIT-компиляции и динамических оптимизаций, учитывающих особенности выполнения скрипта. В процессе выполнения кода производится определение типов данных и генерация на лету эффективных наборов машинных инструкций, оптимизированных специально для используемых типов. Перед выполнением PHP-скрипты преобразуются в специальное промежуточное абстрактное представление AST (Abstract Syntax Tree), которое затем транслируется в байткод HHBC (HipHop bytecode), который выполняется внутри высокоуровневой виртуальной машины.

Проект активно используется в инфраструктуре Facebook. Ранее HHVM использовался проектами WordPress и Wikipedia. После намерений Facebook отказаться от полной поддержки PHP данные проекты перешли на ветку PHP 7, которая начиная с PHP 7.2 в некоторых тестах опережает по производительности HHVM.

Ключевые изменения:

  • HHVM отныне не нацелен на обеспечение полной совместимости с PHP. Начиная с HHVM 4.0 прекращена поддержка некоторых специфичных для PHP особенностей, без которых будет нарушена совместимость с большинством PHP-проектов. Например, больше не поддерживаются особенности обработки массивов, не свойственные массивам и коллекциям языка Hack, прекращена поддержка ссылок на переменные, удалены функции, требующие доступа к памяти вызывающего, такие как compact(), extract(), get_declared_variables(), func_get_args() и parse_str() с одним аргументом. Прекращена поддержка менеджера зависимостей Composer. В следующем выпуске планируется прекратить поддержку тега "‹?php";
  • Добавлена поддержка файлов с расширением ".hack" для скриптов на языке Hack. В отличие от расширения ".hh" скрипты в файлах ".hack" автоматически запускаются в режиме "strict" (жёсткая проверка типов) и не требуют обрамления в тег "‹?" (как в скриптах на других языках теперь используется заголовок "#!/usr/bin/env hhvm");
  • Стабилизирована библиотека HH/lib/Regex, входящая в состав HSL (Hack Standard Library) и предоставляющая поддержку регулярных выражений, определяемых при помощи префиксов (например, $pattern = re"/foo(bar)?/").

  1. Главная ссылка к новости (https://hhvm.com/blog/2019/02/...)
  2. OpenNews: Релиз языка программирования PHP 7.3
  3. OpenNews: Facebook представил Hack, вариант языка PHP со статической типизацией
  4. OpenNews: Facebook анонсировал виртуальную машину HipHop и JIT-компилятор для языка PHP
  5. OpenNews: Проект Wikipedia перешёл на использование HHVM для выполнения PHP-кода
  6. OpenNews: Сравнение производительности PHP 7.0, PHP 5.6.16 и HHVM 3.10.1
Лицензия: CC-BY
Тип: Программы
Ключевые слова: hhvm, php
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, terryfilch (ok), 11:53, 12/02/2019 [ответить] [показать ветку] [···]    [к модератору]
  • –2 +/
    Зачем еще один PHP?
     
     
  • 2.4, Вася (??), 11:55, 12/02/2019 [^] [ответить]    [к модератору]
  • +1 +/
    А зачем так много разных марок легковесных авто?
     
     
  • 3.10, Аноним (10), 12:29, 12/02/2019 [^] [ответить]    [к модератору]
  • –1 +/
    Спроси у немцев и других французев. У нас в стране одна марка.
     
     
     
    Часть нити удалена модератором

  • 5.24, нах (?), 15:58, 12/02/2019 [ответить]     [к модератору]
  • –2 +/
    это сцукенберг богатый технолог - а компания бедная, он судя по просачивающейся... весь текст скрыт [показать]
     
  • 3.15, swine (ok), 13:14, 12/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Чтоб потребитель мог выбрать нравящийся ему шильдик.
     
  • 2.35, Аноним (35), 19:55, 12/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Уперлись они в его производительность сопровождаемость Сначала компиляли в С ... весь текст скрыт [показать]
     
  • 2.42, Аноним (42), 00:57, 13/02/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    Видимо, им проще и дешевле чинить PHP, чем переходить на нормальный язык.
     
     
  • 3.48, Онаним (?), 09:34, 13/02/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    Ну и какой язык в манямирке сегодня нормальный В реальности же - PHP и есть сам... весь текст скрыт [показать]
     
     
  • 4.62, Аноним (62), 17:06, 13/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Раскройте секрет для каких задач  pho
     
     
  • 5.80, Hello (?), 17:28, 17/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Для мейнстримных Мейнстрим тоже приносит бабло люди покупают машины - компании... весь текст скрыт [показать]
     
  • 3.61, сцукенберг (?), 15:36, 13/02/2019 [^] [ответить]     [к модератору]  
  • +/
    конечно дешевле - так я двух нормальных разработчиков нанял, они подпиливают это... весь текст скрыт [показать]
     
  • 1.7, Ilya Indigo (ok), 12:10, 12/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • –4 +/
    Надеюсь, следом за Hack, PHP8 будет тоже двигаться в сторону статической типизации и выкинет несовместимые с этим особенности, функции и языковые конструкции.
     
     
  • 2.8, тоже Аноним (ok), 12:17, 12/02/2019 [^] [ответить]    [к модератору]  
  • –5 +/
    Вы так говорите, как будто это что-то плохое.
     
     
  • 3.9, Аноним (9), 12:21, 12/02/2019 [^] [ответить]    [к модератору]  
  • –5 +/
    Динамическая типизация?
     
     
  • 4.14, тоже Аноним (ok), 13:12, 12/02/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    На практике - вредная и ненужная вещь Достаточно простых переводов в строку и о... весь текст скрыт [показать]
     
     
  • 5.21, Junior frontend developer (?), 15:12, 12/02/2019 [^] [ответить]     [к модератору]  
  • –2 +/
    Проблема не в том, что она не нужна, а в том, что это куда больше выразительной ... весь текст скрыт [показать]
     
     
  • 6.22, Аноним (22), 15:31, 12/02/2019 [^] [ответить]    [к модератору]  
  • +4 +/
    Проблема пыха не динамическая типизация, а легаси и слабая типизация.
     
     
  • 7.23, тоже Аноним (ok), 15:45, 12/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Проблема еще и в том, что тем, кто продолжает писать это легаси, не подается 220В на клавиатуру.
     
  • 5.50, Онаним (?), 09:47, 13/02/2019 [^] [ответить]     [к модератору]  
  • +2 +/
    Угу Лепим ООП к месту и не к месту, получая на выходе одноразовый тормозной гов... весь текст скрыт [показать]
     
     
  • 6.52, тоже Аноним (ok), 10:39, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Внезапно, именно статическая типизация могла уменьшить потребление памяти в вашем случае.
    Если, конечно, не дурить и не строить деревья из объектов без всякой на то необходимости.
     
     
  • 7.67, Онаним (?), 22:54, 13/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Необходимость в деревьях там 100 , в процессе обработки нужно выхватывать произв... весь текст скрыт [показать]
     
  • 6.65, KonstantinB (??), 22:40, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    А, геттеры-сеттеры это у нас ООП, понятно. Сдуру можно и буй сломать. Бегом читать Фаулера и Эванса, в частности про антипаттерн anemic model.
     
     
  • 7.66, Онаним (?), 22:52, 13/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Дурак выхватил из рассказа два малозначительных слова, и на основании них начал делать свои далеко идущие выводы. Впрочем, на то он и дурак.
     
     
  • 8.75, KonstantinB (ok), 14:33, 14/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    См правило тринадцатого удара Если часы пробили 13 раз, то следует усомнитьс... весь текст скрыт [показать]
     
  • 2.12, vitalif (ok), 13:09, 12/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Надеюсь, что нет. Идите на хрен со своей типизацией "пока в вилларибо настраивают сборку, в виллабаджо уже сделали MVP"
     
     
  • 3.16, тоже Аноним (ok), 13:15, 12/02/2019 [^] [ответить]    [к модератору]  
  • +/
    ... на Ноде, которой ничего такого - вроде статической типизации или широкого использования в серьезных проектах - не грозит.
     
     
  • 4.20, Junior frontend developer (?), 15:06, 12/02/2019 [^] [ответить]    [к модератору]  
  • –6 +/
    Все серьезные проекты давно на TS
     
     
  • 5.25, сцукенберг (?), 16:00, 12/02/2019 [^] [ответить]    [к модератору]  
  • –3 +/
    ну оооок, у меня, значит, несирьозный, понял-понял...
     
     
  • 6.26, KonstantinB (ok), 17:06, 12/02/2019 [^] [ответить]     [к модератору]  
  • +3 +/
    Серьезный или несерьезный, а типизация очень хорошо помогает не накосячить тупей... весь текст скрыт [показать]
     
     
  • 7.31, Аноним (31), 19:09, 12/02/2019 [^] [ответить]     [к модератору]  
  • –2 +/
    Сколько раз вам нужно запустить компиляцию, чтобы исправить реально все обнаруже... весь текст скрыт [показать]
     
     
  • 8.36, Антон (??), 20:52, 12/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    чтобы отлавливать ошибки не нужно запускать компиляцию, это делает IDE Компиля... весь текст скрыт [показать]
     
  • 8.39, KonstantinB (ok), 00:22, 13/02/2019 [^] [ответить]    [к модератору]  
  • –2 +/
    > Сколько раз вам нужно запустить компиляцию, чтобы исправить реально все обнаруженные ошибки?

    Вручную - 0 раз, все ошибки видно сразу в IDE.

     
     
  • 9.44, Онаним (?), 07:37, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    А, ну то есть синтаксис верный - можно и в продакшн. Ферштейн.
     
     
  • 10.56, KonstantinB (ok), 10:58, 13/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    Типичный аноним Опеннета не в состоянии удержать контекст обсуждения глубиной бо... весь текст скрыт [показать]
     
  • 7.43, Онаним (?), 07:36, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > типизация очень хорошо помогает _криворучкам_ не накосячить тупейшим образом

    Fixed

     
     
  • 8.79, Junior frontend developer (?), 19:24, 15/02/2019 [^] [ответить]    [к модератору]  
  • +/
    >> типизация очень хорошо помогает _криворучкам_ не накосячить тупейшим образом
    > Fixed

    А хорошим программистам позволяет форсировать так же и логическую корректность кода.

     
  • 7.63, Аноним (62), 17:16, 13/02/2019 [^] [ответить]     [к модератору]  
  • +2 +/
    Дорогой друг Я понимаю что ты ахринеть разработчик Но у меня за плечами, 7 лет... весь текст скрыт [показать]
     
     
  • 8.68, Онаним (?), 22:55, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Поддерживаю.
     
  • 8.73, KonstantinB (ok), 14:17, 14/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Дорогой друг Во-первых, если уж меряться, то у меня за плечами опыта в 3 раза б... весь текст скрыт [показать]
     
  • 2.27, KonstantinB (ok), 17:18, 12/02/2019 [^] [ответить]     [к модератору]  
  • +/
    На подмножестве PHP уже сейчас можно писать строго Выкидывать там ничего не буд... весь текст скрыт [показать]
     
     
  • 3.33, Ilya Indigo (ok), 19:42, 12/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    Строго - это когда ты определяешь в любом месте кода int a и теперь a можно пр... весь текст скрыт [показать]
     
     
  • 4.40, KonstantinB (ok), 00:23, 13/02/2019 [^] [ответить]     [к модератору]  
  • +/
    На самом деле, при должной декомпозиции когда нет простыней по сто строк кода ... весь текст скрыт [показать]
     
     
  • 5.49, Онаним (?), 09:38, 13/02/2019 [^] [ответить]     [к модератору]  
  • +/
    Вот сразу видно, когда классики лезут в язык с динамической сборкой В итоге п... весь текст скрыт [показать]
     
     
  • 6.55, KonstantinB (ok), 10:54, 13/02/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    Это вы лихо всех авторов общепризнанных паттернов проектирования ПО в кодомакак ... весь текст скрыт [показать]
     
     
  • 7.69, Онаним (?), 22:57, 13/02/2019 [^] [ответить]     [к модератору]  
  • +2 +/
    С того бы, что PHP вынужден каждый раз всю эту портянку подгружать и парсить На... весь текст скрыт [показать]
     
     
  • 8.74, KonstantinB (ok), 14:29, 14/02/2019 [^] [ответить]     [к модератору]  
  • +/
    В php времен 4 5 opcache из коробки не было по одной простой причине - чтобы Zen... весь текст скрыт [показать]
     
  • 7.77, Онаним (?), 22:28, 14/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    Когда у кодомакак ломается паттерн - это хорошо. Потому, что учиться думать самостоятельно - хорошо безусловно.
     
  • 5.54, RNZ (ok), 10:51, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    https://github.com/lakwarus/wordpresshhvm

    Никогда не говори...

     
     
  • 6.57, KonstantinB (ok), 10:59, 13/02/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    3 commits, 6 years ago. Сразу видно, проект живет и развивается!
     
  • 2.32, Coocos (?), 19:36, 12/02/2019 [^] [ответить]    [к модератору]  
  • –2 +/
    Какой смысл в ПХП со статической типизацией если есть Java с отлаженным JIT, богатым выбором библиотек и отсутствием геммороя со сборкой расширений.
     
     
  • 3.34, Ilya Indigo (ok), 19:46, 12/02/2019 [^] [ответить]     [к модератору]  
  • +2 +/
    Какой смысл в жабе с её виртуальной машиной, если есть C с отлаженной кросплат... весь текст скрыт [показать]
     
     
  • 4.53, coocos (?), 10:40, 13/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Такой что требуется значительно больше времени тратить на разработку вместо того чтобы купить память.
     
  • 4.64, Аноним (62), 17:23, 13/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Отсутствие ручного выделения памяти для вас уже недостаточно? Или вы по причине своей не компетентности не понимаете что для каждого яп свои задачи?
     
  • 1.29, Аноним (29), 19:05, 12/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Поместил php8 с jit компилятором, на бенчмарках показывает 40% прирост производительности и 26% на реальном проекте, жаль в прод его пока рано.
     
     
  • 2.30, Аноним (29), 19:06, 12/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Потестировал*
     
  • 2.37, SubGun (ok), 23:55, 12/02/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    Это проект из разряда "допили сам". За 3 года так и не дошел до прода с поддержкой php.
    Но работает и правда шустро. Не вижу кому он без пхп может понадобиться, кроме самого фейсбука?!
     
  • 1.41, Аноним (41), 00:51, 13/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    В чем смысл убрать <?php ?
     
     
  • 2.45, Онаним (?), 07:38, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    В том, что это больше не PHP, а скорее самостоятельная поделка для внутренних нужд фейсбука.
     
     
  • 3.51, Аноним (51), 10:26, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > В том, что это больше не PHP, а скорее самостоятельная поделка для внутренних нужд фейсбука.

    Как Go для Гугла?

     
     
  • 4.70, Онаним (?), 22:58, 13/02/2019 [^] [ответить]    [к модератору]  
  • +/
    Ну не совсем, но типа того. За пределами оных они бессмысленны.
     
     
  • 5.76, bentall (ok), 20:59, 14/02/2019 [^] [ответить]    [к модератору]  
  • +/
    > Ну не совсем, но типа того. За пределами оных они бессмысленны.

    К Go это уже определённо не относится. А вот Hack/HVVM скорее всего так и останется языком одной фирмы, виртуальная машина которого одно время использовалась для ускорения PHP.

     
  • 1.60, bentall (ok), 14:47, 13/02/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Логично, HHVM как альтернативный JIT для PHP с выходом семёрки уже как-то и не нужен (вот и Wikipedia.ORG в процессе перехода с HHVM на PHP 7.0). Поэтому фейсбуковцы и сконцентрировались на поддержке своего языка. Нужен ли такой брат-2 PHP — вопрос другой. На фоне того что PHP начал терять популярность — далеко не факт, очень сильно сомневаюсь, что за пределами FB кто-то станет переписывать большой проект с PHP на Hack (хотя это, наверняка и проще, чем на что бы то ни было другое).
     
     
  • 2.78, bentall (ok), 17:32, 15/02/2019 [^] [ответить]    [к модератору]  
  • +/
    А между тем язык Hack в TIOBE вытеснил с 50-го места TypeScript. Наверняка в связи с этим самым новым HHVM, но мало ли, чем чёрт не шутит, ввдруг кому-то вне FB да пригодится.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2019 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor