Прочтите английскую версию этого документа: English
Прочтите этот документ на других языках: английском, упрощенном китайском .
С сильным ростом Go
и NodeJS
доля PHP
на рынке постепенно снижается, но официально PHP
все еще остается в сфере Web
-программирования. Чем больше они пытаются удержаться, тем труднее удержаться за некоторые вещи. polarphp
использует соответствующие функции NodeJS
и Go
для повторной инкапсуляции zendVM
, удаления некоторых устаревших функций PHP
и сильных Web
атрибутов, а также реализации нового набора среды выполнения libpdk
для превращения языка PHP
в действительно универсальный язык сценариев, расширяющий возможности PHP
с асинхронным программированием, сопрограммами, потоками, встроенной поддержкой unicode
, стандартным файловым IO
и другими функциями, позволяющими PHP
-программистам не только делать web
-приложения, но и спокойно работать с реальными серверными приложениями. polarphp
— это не новый язык, а новый компилятор и среда выполнения языка PHP
в дополнение к официальному.
PHP
и удаление устаревших функций языка. unicode
Ввиду ограниченности ресурсов на развитие, план развития ориентировочно выглядит следующим образом:
PHP
.lit
для трансплантации проекта LLVM
polarphp
с использованием среды регрессионного тестирования phplit
polarvm
и завершите инфраструктуру виртуальной машины.polarphp
в набор инструкций и пока не определяйте уровень IR.phplit
для тестирования всех скомпилированных модулей, от структуры языка до набора инструкций.PHP
GC
PHP
libpdk
(часть cpp
).polarphp
за минимальное количество шагов.PHP
(реализованной с использованием кода PHP
с базовой поддержкой libpdk
). polarphp
git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
В это время скрипт начинает компилировать связанные изображения, что занимает много времени. Подождите терпеливо. Дождитесь завершения компиляции и запустите:
docker images
На данный момент убедитесь, что на выходе имеется следующее изображение:
Если проблем нет, начинаем проверять, нормально ли работает polarphp
в зеркале.
docker run --rm -it polarphp_debug
После входа в контейнер введите нашу программу командной строки polarphp
polar --version
Если вы получите следующий вывод:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
Поздравляем, вы успешно скомпилировали среду выполнения polarphp
. При компиляции образа мы поместили тестовый скрипт в папку ~/temp/
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}
Вы можете запустить следующую команду:
polar ~/temp/main.php
Если ошибок нет, вы получите следующий вывод:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
Благодарим вас за тестирование polarphp
. Если у вас есть какие-либо вопросы, отсканируйте QR-код WeChat ниже, чтобы присоединиться к групповому общению.
В настоящее время мы ориентируемся только на пользователей в Китае, поэтому для общения мы используем группы WeChat и QQ
. Заинтересованные студенты могут отсканировать код, чтобы присоединиться.
PS: При сканировании QR-кода укажите цель визита, например: изучение
polarphp
или энтузиастыPHP
polarphp
проводит вторичную разработку поверх проекта языка php
и соблюдает соглашение о проекте php
. Подробную информацию см. в: Соглашение о проекте.
==========================