Компания Facebook опубликовала (https://code.facebook.com/posts/398235553660954/announcing-t.../) транслятор Hack Transpiler (h2tp (http://docs.hhvm.com/manual/en/install.hack.h2tp.php)), позволяющий автоматически преобразовать код на языке Hack (http://hacklang.org) в представление на обычном PHP. Язык программирования Hack обратно совместим с PHP и расширяет (http://www.opennet.me/opennews/art.shtml?num=39368) синтаксис PHP поддержкой статической типизации и ряда расширенных возможностей, заимствованных из других языков программирования, таких как обобщения (generics по образу C# и Java), null-значения, коллекции, Lambda-выражения, механизмы асинхронного программирования, составные shape-структуры и средства для переопределения имён типов. Код на языке Hack выполняется с использованием виртуальной машины HHVM (http://hhvm.com/) (HipHop Virtual Machine).
Необходимость создания Hack Transpiler обусловлена тем, что в окружении Hack могут выполняться обычные PHP-скрипты, но не наоборот - код с расширенными конструкциями и типами Hack не может быть запущен с использованием интерпретатора PHP. Hack Transpiler даёт возможность преобразовать код на языке Hack в вид, совместимый с PHP, т.е. разработчики могут развивать свой продукт с учётом расширений Hack, но для окружений не поддерживающих Hack обеспечить его поставку в форме обычного PHP-проекта. Из-за потери данных о типах сгенерированный PHP-код будет не столь эффективен как Hack, но пригоден для работы в любых хостинг-окружениях, в которых имеется поддержка PHP. Пользователи которые имеют возможность установить HHVM смогут воспользоваться более эффективным вариантом приложения на языке Hack.
Дополнительно можно отметить доступность (http://php.net/index.php#id2014-11-13-1) корректирующих выпусков языка программирования PHP - 5.5.19 и 5.6.3, в которых устранено 13 (http://php.net/ChangeLog-5.php#5.5.19) и 25 ошибок (http://php.net/ChangeLog-5.php#5.6.3) соответственно. В дополнении Fileinfo устранена уязвимость (CVE-2014-3710), которая может привести к переполнению буфера при получении информации о специально оформленных файлах в формате ELF. В дополнение curl добавлена поддержка констант CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1 и CURL_SSLVERSION_TLSv1_2. В pack() и unpack() реализованы 64-разрядные коды форматирования.URL: https://code.facebook.com/posts/398235553660954/announcing-t.../
Новость: http://www.opennet.me/opennews/art.shtml?num=41058
> Компания Facebook опубликовала транслятор Hack Transpiler (h2tp), позволяющий автоматически преобразовать код на языке Hack в представление на обычном PHP.
> Необходимость создания Hack Transpiler обусловлена тем, что в окружении Hack могут выполняться обычные PHP-скрипты, но не наоборот - код с расширенными конструкциями и типами Hack не может быть запущен с использованием интерпретатора PHP.Hack Transpiler — не очень подходящее название. "Dirty Hack" лучше бы передало суть, ящитаю.
и 5.4.35
Кстати, кто-либо из присутствующих внедрял HHVM или втыкантерский KPHP? Интересно.
Я пробовал один проект на симфони запустить через hhvm, не заработало.
> Я пробовал один проект на симфони запустить через hhvm, не заработало.Логи смотрели? :)
>> Я пробовал один проект на симфони запустить через hhvm, не заработало.
> Логи смотрели? :)А зачем? :)
> Я пробовал один проект на симфони запустить через hhvm, не заработало.http://hhvm.com/frameworks/ - тесты на совместимость с разными фреймворками/библиотеками.
Symfony действительно проходит только на 98.66%, и так уже довольно давно. Интересно, что та же доктрина, в которой тонны всякой магии, проходит на 100%.
> Кстати, кто-либо из присутствующих внедрял HHVMЯ внедрял для работы пары наших сайтов. Получил прирост производительности где-то в 3-5 раза (затык был именно со стороны PHP, а не со стороны SQL или чего-либо другого). Жертва — пришлось потратить час рабочего дня на адаптацию кода, так как у HHVM-а более строгие требования к коду, чем у обычного PHP. С тех пор работает и никаких нареканий пока нет.
У языка не должно быть затыков. Мог бы переписать на православном питоне и всё бы работало в 10 раз быстрей.
> У языка не должно быть затыков.Не понял, что вы имели в виду.
> Мог бы переписать на православном питоне и всё бы работало в 10 раз быстрей.
Во-первых, Python не быстрее PHP [1]. В среднем у них примерно одинаковая производительность (посмотрите результаты по другим задачам по ссылке [1]).
Во-вторых, аналогично, глюкавые Python JIT-ы (а-ля PyPy [2]) работают не быстрее HHVM. <captain>А если не использовать JIT у Python (в целях избежания глюков), то тогда он, грубо говоря, будет работать в разы медленее, чем PHP поверх HHVM-а.</captain>
[1] http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
[2] Глюки при интерпретации https://gist.github.com/vladimir-smirnov-sociomantic/2f040b5...
Я не люблю PHP, но хотя бы знаю за что…
>> Кстати, кто-либо из присутствующих внедрял HHVM
> Жертва — пришлось потратить час рабочего
> дня на адаптацию кода, так как у HHVM-а более строгие требования
> к коду, чем у обычного PHP.P.S.: Кстати говоря, поправки были с повышением безопасности, если я правильно помню. Ибо не работало из-за строк кода, которые потенциально содержали неприятные ошибки.
HHVM не поддерживает некоторые редко используемые части языка и стандартной библиотеки. Но их постепенно вводят, как например, eval() и create_function(). В основном это действительно не самые нужные вещи, но Facebook видимо хочет формальной 100%-й совместимости с PHP. И получается у них это весьма неплохо.
Например, Wikipedia и, похоже, результаты радуют: https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2...По поводу, KPHP - не смешите. Этот огрызок разве что с каким-нибудь PHP3 совместим (и то, весьма ограничено). Разработчики гордо заявляет, что намерено не стали реализовывать ООП-возможности, но на деле - там не поддерживается ничего кроме самого _базового_ синтаксиса.
похоже на то
Почему-то вспомнилось про бритву Оккама...
дело "за малым" написать препроцессор/компилятор PHP-кода в C++.
или просто научить стафф фэйсбука - нормальными ЯП, пользоваться.
то есть - нанять нормальный HRM для начала/эффекта надо было. на не вбухивать потом мегабаксы, пытаясь латать самую Суть своих проблем - КАДРЫ.
> дело "за малым" написать препроцессор/компилятор PHP-кода в C++.Ты не поверишь, но фейсбук уже написал компилятор пыха в С++. HHVM называется.
HHVM - не транслирует PHP в C++. Это виртуальная машина, похожая на JVM. Транлятором был HPHPc, который частично лёг в основу HHVM.