После нескольких месяцев работы над Zephir мы очень довольны прогрессом. В течение нескольких месяцев мы выпустим бета-версию и сможем использовать все ее возможности. Проект собрал более 1000 коммитов и все еще многое нужно сделать. Проект позволил нам провести больше исследований в области computer science и это было очень интересно для нас.
Кроме того, хоть мы и не уверенны, на счет того, что произойдет с PHP в будущем, так или иначе — мы создаем инструмент, который позволяет использовать еще одну возможность PHP (расширения на C), которая раньше была доступна только опытным C программистам.
Также в Zephir мы реализовали фичи, о которых многие мечтали, но по тем или иным причинам их нет в PHP сейчас:
Мы верим, что все это поможет нам улучшить фреймворк и может помочь вам в создании собственных инструментов новым способом. Не всем нужны эти фичи и не все с ними согласны, но так или иначе мы надеемся, что однажды они таки окажутся в PHP. Что бы не произошло, мы надеемся что PHP продолжит развивать��я несмотря на пройденный путь.
Zephir изначально задуман, как высокоуровневый язык, создающий абстракцию над низкоуровневыми деталями ядра PHP. Он генерирует код на C, который в последствии может быть скомпилирован популярными компиляторами такими как gcc/clang/vc.
Так как Zephir высокоуровневый язык, он может работать, как мета-язык, а не просто DSL.
После некоторого обдумывания, я создал этот топик, чтобы обсудить с вами новую идею.
Если мы переделаем Zephir так, чтобы он мог генерировать и PHP и C код, тогда Zephir станет более мощным и гибким.
Генерация C:
Генерация PHP:
Использование расширений на C:
Использование PHP:
Возможные минусы
С нетерпением ждем ваших комментариев
Кроме того, хоть мы и не уверенны, на счет того, что произойдет с PHP в будущем, так или иначе — мы создаем инструмент, который позволяет использовать еще одну возможность PHP (расширения на C), которая раньше была доступна только опытным C программистам.
Также в Zephir мы реализовали фичи, о которых многие мечтали, но по тем или иным причинам их нет в PHP сейчас:
- Статическая типизация
- Именованные параметры
- Сокращения для геттеров/сеттеров
- Типизация возвращаемых значений
- Исключения, вместо варнингов
- Использование методов для скаляров
- И многое другое
Мы верим, что все это поможет нам улучшить фреймворк и может помочь вам в создании собственных инструментов новым способом. Не всем нужны эти фичи и не все с ними согласны, но так или иначе мы надеемся, что однажды они таки окажутся в PHP. Что бы не произошло, мы надеемся что PHP продолжит развивать��я несмотря на пройденный путь.
Zephir изначально задуман, как высокоуровневый язык, создающий абстракцию над низкоуровневыми деталями ядра PHP. Он генерирует код на C, который в последствии может быть скомпилирован популярными компиляторами такими как gcc/clang/vc.
Так как Zephir высокоуровневый язык, он может работать, как мета-язык, а не просто DSL.
После некоторого обдумывания, я создал этот топик, чтобы обсудить с вами новую идею.
Если мы переделаем Zephir так, чтобы он мог генерировать и PHP и C код, тогда Zephir станет более мощным и гибким.
Генерация C:
- Код может быть скомпилирован, повысится производительность и уменьшится расход памяти.
- Появляется некоторый важный уровень защиты
- Код экспортируется как C расширение
Генерация PHP:
- PHP запустится везде, где сам php доступен (шаред-хостинги, серверы с ограничениями, другие реализации PHP)
- Код экспортируется как библиотека на PHP
Использование расширений на C:
- На продакшене, когда производительность необходима и установка расширения осуществима
Использование PHP:
- Разработка/Тестирование, другие реализации PHP
Возможные минусы
- С-код-блоки не могут быть перенесены в PHP
- Интеграция с C-библиотеками не может быть экспортирована в PHP
- Возможные несовместимости, из-за разных сред выполнения (может быть решено с помощью тестов)
С нетерпением ждем ваших комментариев
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Проведем хабра-голосование!
27.92%Реализовать трансляцию в PHP сейчас79
47.7%Отложить это до выхода стабильной (1.0) версии135
24.38%Не реализовывать этого вообще69
Проголосовали 283 пользователя. Воздержались 85 пользователей.
