Pull to refresh

Переосмысление Zephir

Reading time2 min
Views8.8K
Original author: Phalcon
После нескольких месяцев работы над 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:

  • Код может быть скомпилирован, повысится производительность и уменьшится расход памяти.
  • Появляется некоторый важный уровень защиты
  • Код экспортируется как C расширение


Генерация PHP:

  • PHP запустится везде, где сам php доступен (шаред-хостинги, серверы с ограничениями, другие реализации PHP)
  • Код экспортируется как библиотека на PHP


Использование расширений на C:
  • На продакшене, когда производительность необходима и установка расширения осуществима


Использование PHP:

  • Разработка/Тестирование, другие реализации PHP


Возможные минусы

  • С-код-блоки не могут быть перенесены в PHP
  • Интеграция с C-библиотеками не может быть экспортирована в PHP
  • Возможные несовместимости, из-за разных сред выполнения (может быть решено с помощью тестов)


С нетерпением ждем ваших комментариев
Only registered users can participate in poll. Log in, please.
Проведем хабра-голосование!
28.01% Реализовать трансляцию в PHP сейчас79
47.52% Отложить это до выхода стабильной (1.0) версии134
24.47% Не реализовывать этого вообще69
282 users voted. 85 users abstained.
Tags:
Hubs:
+28
Comments9

Articles

Change theme settings