PHP ждут радикальные перемены
Под нажимом Facebook будущие версии языка, возможно, станут компилируемыми
Под влиянием компании 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, он занимает седьмое место в списке самых распространенных языков.