<rmcreative>

RSS

Все заметки с тегом «HipHop»

Можно уточнить:

    (2)
  1. Чем Facebook занимался после HipHop

    16 октября 2012

    Думаю, многие слышали про HipHop — компилятор PHP, который использовался в Facebook.

    Анонсирован он был в 2010 году. С тех пор Facebook не останавливался в своём желании ускорить разработку и выполнение кода.

    В декабре 2011 нам показали виртуальную машину для HipHop. Примерно тогда же Facebook перешёл на неё, значительно ускорив выполнение кода. Код всё ещё компилировался. Для разработки это было явно неудобно и была сделана JIT-версия, которая компилировала и выполняла код на лету. Производительность при этом, хоть и была ниже, чем у компилированного кода, но ненамного.

    В мае 2012 Facebook спонсирует двухмесячную разработку простого интерпретатора PHP на PyPy. В итоге выходит JIT-компилятор, способный переваривать большинство конутрукций и функций PHP (без классов). Код выполняется быстрее, чем в HipHop VM. И это за два месяца.

    Ближе к середине августа всплывают слухи о том, что Facebook планирует переписать HipHop VM под JVM, основанные на том, что инженеры Facebook побывали на JVM Language Summit и живо интересовались данной темой. В той же заметке приводится оценка в шесть человеколет на реализацию проекта, что не так много, учитывая ресурсы Facebook. К тому же, есть варианты купить и использовать Quercus или Project Zero.

    Каким путём пойдёт Facebook далее пока не ясно. Ясно одно: в этом направлении они останавливаться не собираются.

    7 комментариев
  2. HipHop

    3 февраля 2010

    Facebook, как вы уже могли слышать, выпустил транслятор PHP в код C++, названный HipHop.

    Отмечу основные моменты

    • Бесплатный, открытый исходный код.

    • HipHop уже используется в Facebook по полной программе.

    • PHP → С++ → GCC → бинарник. Делать это надо каждый раз при развёртывании кода.

    • Бинарник может работать как сервер (libevent), а также запускаться из командной строки.

    • Веб сервер = один процесс, много потоков.

    • Не использует Zend Engine. Использует написанный на C++ почти совместимый с PHP 5.2 фреймворк.

    • Используются расширения на C++ (стандартные написаны C). Сейчас доступны те, что использует Facebook. Остальные будьте готовы переписывать сами. Все расширения на C++ thread-safe.

    • Некоторые магические методы поддерживаются, но не работают быстрее.

    Не поддерживаются

    • Windows.

    • PHP 5.3 (поддержка планируется).

    • eval().

    • create_function()

    • preg_replace с модификатором /e.

    • function_exists() до объявления функции.

    Поддерживаемый динамический функционал

    • Динамический вызов функций, в том числе call_user_func().

    • Динамические методы и свойства объектов.

    • Динамические переменные, extract().

    • Динамический include().

    • Переопределение функций, классов, констант.

    • __toString(), __get(), __set(), __call().

    Источники информации:

    10 комментариев