The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Facebook открыл код транслятора из языка Hack в PHP. Обновление PHP 5.6.3, 5.5.19 и 5.4.35

14.11.2014 09:10

Компания Facebook опубликовала транслятор Hack Transpiler (h2tp), позволяющий автоматически преобразовать код на языке Hack в представление на обычном PHP. Язык программирования Hack обратно совместим с PHP и расширяет синтаксис PHP поддержкой статической типизации и ряда расширенных возможностей, заимствованных из других языков программирования, таких как обобщения (generics по образу C# и Java), null-значения, коллекции, Lambda-выражения, механизмы асинхронного программирования, составные shape-структуры и средства для переопределения имён типов. Код на языке Hack выполняется с использованием виртуальной машины HHVM (HipHop Virtual Machine).

Необходимость создания Hack Transpiler обусловлена тем, что в окружении Hack могут выполняться обычные PHP-скрипты, но не наоборот - код с расширенными конструкциями и типами Hack не может быть запущен с использованием интерпретатора PHP. Hack Transpiler даёт возможность преобразовать код на языке Hack в вид, совместимый с PHP, т.е. разработчики могут развивать свой продукт с учётом расширений Hack, но для окружений не поддерживающих Hack обеспечить его поставку в форме обычного PHP-проекта. Из-за потери данных о типах сгенерированный PHP-код будет не столь эффективен как Hack, но пригоден для работы в любых хостинг-окружениях, в которых имеется поддержка PHP. Пользователи которые имеют возможность установить HHVM смогут воспользоваться более эффективным вариантом приложения на языке Hack.

Дополнительно можно отметить доступность корректирующих выпусков языка программирования PHP - 5.5.19 и 5.6.3, в которых устранено 13 и 25 ошибок соответственно. В дополнении Fileinfo устранена уязвимость (CVE-2014-3710), которая может привести к переполнению буфера при получении информации о специально оформленных файлах в формате ELF. В дополнение curl добавлена поддержка констант CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1 и CURL_SSLVERSION_TLSv1_2. В pack() и unpack() реализованы 64-разрядные коды форматирования.

Дополнение: Вышел PHP 5.4.35, в котором устранены четыре проблемы, имеющие отношение к безопасности.

  1. Главная ссылка к новости (https://code.facebook.com/post...)
  2. OpenNews: Релиз языка программирования PHP 5.6.0
  3. OpenNews: Facebook анонсировал виртуальную машину HipHop и JIT-компилятор для языка PHP
  4. OpenNews: Опубликован первый вариант спецификации для языка программирования PHP
  5. OpenNews: Разработчики PHP представили интерпретатор нового поколения (PHPNG)
  6. OpenNews: Facebook представил Hack, вариант языка PHP со статической типизацией
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41058-php
Ключевые слова: php, hack
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:23, 14/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Компания Facebook опубликовала транслятор Hack Transpiler (h2tp), позволяющий автоматически преобразовать код на языке Hack в представление на обычном PHP.
    > Необходимость создания Hack Transpiler обусловлена тем, что в окружении Hack могут выполняться обычные PHP-скрипты, но не наоборот - код с расширенными конструкциями и типами Hack не может быть запущен с использованием интерпретатора PHP.

    Hack Transpiler — не очень подходящее название. "Dirty Hack" лучше бы передало суть, ящитаю.

     
  • 1.2, Аноним (-), 10:56, 14/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    и 5.4.35
     
  • 1.3, Журналовращатель (?), 11:08, 14/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати, кто-либо из присутствующих внедрял HHVM или втыкантерский KPHP? Интересно.
     
     
  • 2.4, Аноним (-), 12:08, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я пробовал один проект на симфони запустить через hhvm, не заработало.
     
     
  • 3.9, Xaionaro (ok), 14:08, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я пробовал один проект на симфони запустить через hhvm, не заработало.

    Логи смотрели? :)

     
     
  • 4.18, XoRe (ok), 21:24, 15/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Я пробовал один проект на симфони запустить через hhvm, не заработало.
    > Логи смотрели? :)

    А зачем? :)

     
  • 3.17, йцу (?), 07:55, 15/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я пробовал один проект на симфони запустить через hhvm, не заработало.

    http://hhvm.com/frameworks/ - тесты на совместимость с разными фреймворками/библиотеками.
    Symfony действительно проходит только на 98.66%, и так уже довольно давно. Интересно, что та же доктрина, в которой тонны всякой магии, проходит на 100%.

     
  • 2.5, Xaionaro (ok), 12:11, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Кстати, кто-либо из присутствующих внедрял HHVM

    Я внедрял для работы пары наших сайтов. Получил прирост производительности где-то в 3-5 раза (затык был именно со стороны PHP, а не со стороны SQL или чего-либо другого). Жертва — пришлось потратить час рабочего дня на адаптацию кода, так как у HHVM-а более строгие требования к коду, чем у обычного PHP. С тех пор работает и никаких нареканий пока нет.

     
     
  • 3.7, Аноним (-), 13:56, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • –6 +/
    У языка не должно быть затыков. Мог бы переписать на православном питоне и всё бы работало в 10 раз быстрей.
     
     
  • 4.8, Xaionaro (ok), 14:04, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > У языка не должно быть затыков.

    Не понял, что вы имели в виду.

    > Мог бы переписать на православном питоне и всё бы работало в 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?test=fannkuchredux
    [2] Глюки при интерпретации https://gist.github.com/vladimir-smirnov-sociomantic/2f040b5300c600f4692b


    Я не люблю PHP, но хотя бы знаю за что…

     
  • 3.11, Xaionaro (ok), 14:35, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Кстати, кто-либо из присутствующих внедрял HHVM
    > Жертва — пришлось потратить час рабочего
    > дня на адаптацию кода, так как у HHVM-а более строгие требования
    > к коду, чем у обычного PHP.

    P.S.: Кстати говоря, поправки были с повышением безопасности, если я правильно помню. Ибо не работало из-за строк кода, которые потенциально содержали неприятные ошибки.

     
     
  • 4.16, йцу (?), 07:50, 15/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    HHVM не поддерживает некоторые редко используемые части языка и стандартной библиотеки. Но их постепенно вводят, как например, eval() и create_function(). В основном это действительно не самые нужные вещи, но Facebook видимо хочет формальной 100%-й совместимости с PHP. И получается у них это весьма неплохо.
     
  • 2.10, йцу (?), 14:17, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Например, Wikipedia и, похоже, результаты радуют: https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2014-10-08/Technolo

    По поводу, KPHP - не смешите. Этот огрызок разве что с каким-нибудь PHP3 совместим (и то, весьма ограничено). Разработчики гордо заявляет, что намерено не стали реализовывать ООП-возможности, но на деле - там не поддерживается ничего кроме самого _базового_ синтаксиса.

     
     
  • 3.12, manster (ok), 16:32, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    похоже на то
     

  • 1.6, manster (ok), 12:38, 14/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Почему-то вспомнилось про бритву Оккама...
     
  • 1.13, Аноним (-), 18:06, 14/11/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    дело "за малым" написать препроцессор/компилятор PHP-кода в C++.
    или просто научить стафф фэйсбука - нормальными ЯП, пользоваться.
    то есть - нанять нормальный HRM для начала/эффекта надо было. на не вбухивать потом мегабаксы, пытаясь латать самую Суть своих проблем - КАДРЫ.
     
     
  • 2.14, Аноним (-), 21:59, 14/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > дело "за малым" написать препроцессор/компилятор PHP-кода в C++.

    Ты не поверишь, но фейсбук уже написал компилятор пыха в С++. HHVM называется.

     
     
  • 3.15, йцу (?), 07:44, 15/11/2014 [^] [^^] [^^^] [ответить]  
  • +/
    HHVM - не транслирует PHP в C++. Это виртуальная машина, похожая на JVM. Транлятором был HPHPc, который частично лёг в основу HHVM.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру