Статьи

HHVM против Zend Engine в PHP 6

Легендарный PHP 6 давно пора. Этот единорог мира веб-разработчиков «грядет» уже несколько десятилетий, и до сих пор неясно, произойдет ли это на самом деле то, что произойдет в этом десятилетии, или просто идея, фантазия пользовательской базы PHP. Минорные версии, такие как 5.4> 5.5 и 5.5> 5.6, в любом случае приносят так много новых функций , что мы часто видим их как основные версии.

Моя личная фантазия для v6 — это согласованность именования функций, полный разрыв обратной совместимости с PHP <6 с точки зрения загрязнения глобального пространства имен и полное переписывание всех типов данных в классы, как в Scala или Dart, но, эй, мы все есть наши дикие мечты.

Хорошую статью о неудачной судьбе PHP 6 вы можете найти здесь — и не пропустите комментарии. Там можно извлечь некоторые ценные уроки об отношении основных разработчиков PHP.

Предпосылка

Не многие знают это, но на http://www.phpclasses.org есть несколько интересных, хотя и очень неуклюжих подкастов, довольно часто. Иногда бывает трудно отсеять полезную информацию из этих выступлений, но список содержимого Мануэля обычно помогает. Если вам интересно узнать об изменениях в PHP и не отставать от последних новостей, почему бы не запустить их во время тренировок, написания кода, приготовления пищи или чего-то еще? В последнем выпуске между Мануэлем Лемосом и Сезаром Родасом возникла интересная тема — HHVM от Facebook заменил Zend Engine в PHP 6.

Хотя это было чисто спекуляция со стороны участников, и независимо от того, верите ли вы в PHP 6 или нет, вы должны признать, что это интересное понятие. Как мы видели в статье HHVM и в блоге HHVM , HHVM добилась успехов в обеспечении совместимости с большинством популярных библиотек, CMS и фреймворков. Команда делает все возможное, чтобы максимально повысить производительность, сохраняя ее совместимость с существующими кодовыми базами для различных продуктов. Давайте рассмотрим возможность замены ZE в HHVM в PHP 6 и рассмотрим плюсы и минусы.

Плюсы

Очевидно, производительность. HHVM работает быстрее, чем ванильный PHP, даже со встроенным OpCache в 5.5. Он использует меньше ресурсов, чтобы делать вещи быстрее . Никто не может не видеть преимуществ этого — рассмотрите, если хотите, только экономию на счетах за развертывание облака. Меньшее использование ЦП и ОЗУ означает меньше часов работы экземпляра.

Следующее преимущество — поддержка HHVM со стороны Facebook. Facebook использует HHVM для развертывания своего собственного кода PHP, поэтому им необходимо убедиться, что он максимально эффективен. 1% -ый всплеск ЦП означает для них расходы на десятки тысяч долларов, поэтому вполне естественно, что они предпочитают бросить эти деньги в команду HHVM, чтобы этого никогда не произошло. В результате HHVM разрабатывается людьми, гораздо более опытными и сфокусированными — особенно в современном мире с высоким уровнем параллелизма и большим количеством трафика — чем фактическими разработчиками ядра Zend Engine и PHP. В качестве примера рассмотрим тот факт, что у Facebook были генераторы на PHP за три года до того, как они вошли в основной релиз PHP.

Еще одним преимуществом является возможность статического ввода в самой последней версии HHVM с помощью их собственного языка Hack. Hack является производным от PHP, но поддерживает статическую типизацию. Вы запускаете проверяемые файлы перед компиляцией с помощью <?hh<?php Более подробная статья о Hack находится в работе и будет опубликована в ближайшее время. Этот подход еще больше повышает качество компиляции, делая нативный код гораздо более эффективным, а PHP HHVM — намного быстрее.

Правда ли, все дело в скорости?

Минусы

Одним из главных минусов HHVM на данный момент является невозможность установки пользовательских расширений, которые зависят от Zend Engine. Как говорит Сезар, HHVM и ZE похожи на две машины, которые похожи друг на друга, но их внутренности совершенно разные.

Я бы расширил эту метафору, сказав, что у двух автомобилей разные двигатели или разные системы переключения передач. Попытка установить закись азота в электромобиль просто не сработает, как бы вы ни старались, потому что NOS зависит от процесса сгорания, который отсутствует в электромобилях.

Это, к сожалению, означает, что большинство современных расширений не будут устанавливаться на HHVM, если они не будут конвертированы, и, поскольку большинство расширений являются проектами с открытым исходным кодом, которым не платят их разработчики, ситуация пахнет возможным Python3-адом *.

Другим недостатком является тот же, который мы перечислили в разделе «Плюсы» — он разработан Facebook. В то время как Facebook все еще здоров, Сезар и Мануэль полагают, что в ближайшие годы он может пострадать, и я склонен согласиться. Более того, существует возможность того, что Facebook сделает смелую попытку полностью перейти от PHP к чему-то еще более быстрому и более структурированному, например Dart, — что произойдет, если произойдет любой из этих сценариев? HHVM — это открытый исходный код, да, но без банка Facebook и его опытных рук, а также без многомиллиардной базы пользователей для регулярного тестирования и сравнения, разработка HHVM значительно замедлится. Сообществу открытого исходного кода просто не хватает опыта, ресурсов и преданности делу, чтобы взять на себя должное управление.

И последнее, но не менее важное: уже есть попытки кардинально улучшить скорость PHP другими способами. Инфраструктура Phalcon, о которой мы подробно рассказали , уже написана на C и невероятно быстро, а с их языком Zephir пользователи могут легко писать реальные расширения PHP для версии PHP для Zend Engine. Это означает, что PHP-приложения с закрытым исходным кодом и / или скомпилированы, которые уже работают на почти родной скорости, почти конкурируя с HHVM.

Вывод

Здесь нет четкого сценария победы. Если HHVM заменит ZE, сообщество PHP получит выгоду, хотя новая версия может пострадать в размере базы пользователей, пока HHVM не сможет поддерживать общие расширения или пока для него не будут переписаны расширения. Если это останется отдельным проектом, у нас есть две школы мысли — полагаться на vanilla HHVM и Hack для компиляции наших фреймворков и классов с наилучшим возможным собственным кодом, или полагаться на старый добрый ZE PHP, наши старые расширения и работать с современные языки и фреймворки, такие как Phalcon и Zephir.

Как бы вы ни смотрели на это, ясно, что PHP готов к новому рассвету. Появление поддержки функций с переменным числом аргументов и распаковки аргументов, аналогичных тем, которые используются в других основных языках, доказывает его готовность к зрелости, и отличные усилия высококлассных разработчиков низкого уровня продвигают язык и его среду выполнения, как никогда раньше. Для нас, пользователей PHP, единственный способ проиграть эту игру — вообще не играть в нее.

Давайте не будем никого оставлять позади. У вас есть HHVM / Hack и / или Phalcon / Zephir? Брось им наш путь.

* Python3-ад говорит о том, что Python3 существует уже более 3 лет, является улучшением по сравнению с Python2 и по-прежнему мало востребован по сравнению с Python2 .