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

В начале мая разработчик ядра PHP Дмитрий Стогов объявил о начале проектирования новой ветви языка, получившей название phpng (PHP Next Generation). Соответствующая информация была опубликована в блоге на сайте PHP.net.

Идея, положенная в основу новой версии языка, заключается в реорганизации внутренних интерфейсов API таким образом, чтобы код PHP мог использовать преимущества компиляции «на лету» (Just-In-Time, JIT).

Новая ветвь phpng не поддерживает возможности JIT, но пытается устранить препятствия, мешающие современным и будущим реализациям исполняемого механизма с поддержкой JIT достигать максимальной производительности. Это предполагается делать за счет оптимизации использования памяти и переработки некоторых интерфейсов API ядра.

Сегодня PHP представляет собой интерпретируемый язык. Это означает, что исходный код выполняется процессором напрямую, без каких-либо промежуточных преобразований. В общем случае программы, написанные на интерпретируемых языках (к их числу относится и PHP), выполняются не так быстро, как приложения на Cи или C++, которые компилируются в код, представленный на машинном языке и гораздо эффективнее обрабатываемый процессором.

В прошлом году компания Facebook, всегда остававшаяся крупным пользователем PHP, представила JIT-компилятор HHVM (Hip Hop Virtual Machine). Технология HHVM пробудила у сообщества интерес к JIT-компиляторам.

По аналогии с виртуальной машиной Java (Java Virtual Machine, JVM), HHVM компилирует исходный текст на языке программирования в байт-код в момент, когда пользователь обращается к программе. Выяснилось, что при использовании HHVM код PHP может выполняться в девять раз быстрее. Facebook опубликовала исходный код HHVM в надежде на то, что он будет использоваться и за пределами компании, а возможно, в перспективе окажет влияние и на разработку PHP в целом.

По словам Стогова (в компании Zend, поставляющей программное обеспечение PHP, он занимает должность главного инженера по производительности), уже внесенные в phpng изменения привели к 20-процентному росту производительности на целом ряде запросов WordPress (популярная платформа для создания блогов, которая создана на PHP).

«Благодаря phpng дверь для JIT-компилятора, который будет отвечать возлагаемым на него надеждам, открыта, — утверждается в блоге. — Но необходимо отметить, что изменения эти важны уже сами по себе и не требуют подтверждения своей ценности от JIT-компиляторов, которые появятся в будущем».

Сегодня phpng еще не подходит для решения производственных задач, но после завершения разработки эта технология может стать основой для создания PHP 6 или PHP 7. В настоящее время рабочей версией является PHP 5.5.

Разработчики ядра обещают, что новые итерации языка будут обладать обратной совместимостью с предыдущими версиями. Это означает, что код, написанный для ранних версий, в неизменном виде сможет выполняться и на новых версиях PHP.

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

«Серверный интерфейс API mod_php, например, может перестать функционировать в новой версии, — указал в своем блоге разработчик PHP Мануэль Лемос. — А этот API, позволяющий веб-серверу Apache управлять задачами в интересах PHP, используется очень многими сайтами».

Возможно, именно разработка phpng создала условия для выпуска компанией Facebook в марте этого года PHP-подобного языка Hack, который поддерживает множество дополнительных функций, не включенных непосредственно в PHP.

В настоящее время PHP — один из наиболее популярных языков веб-программирования. Согласно последней версии индекса популярности языков программирования Tiobe, он занимает седьмое место в списке самых распространенных языков.

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF