Read the English version of this document: English
閱讀本文檔其他語言版本: English,簡體中文.
隨著Go
和NodeJS
的強勢崛起, PHP
的市佔率逐漸被蠶食, PHP
官方仍堅守在Web
程式領域,有些東西越是想守住就越守不住。 polarphp
借鑒NodeJS
和Go
的相關特性對zendVM
重新封裝,去掉PHP
一些古老棄用的特性和強Web
屬性,透過實作一套新的執行時間框架libpdk
,將PHP
語言打造為一門真正的通用性腳本語言,賦能PHP
,讓其擁有非同步編程,協程,線程,內建的unicode
支持,標準的文件IO
等等特性,讓PHP
程式設計師不僅能做web
應用,也能從容面對真正的服務端應用。 polarphp
不是新的語言,而是PHP
語言的除官方外的一個新的編譯器及其運行時。
PHP
語言標準,移除廢棄語言特性unicode
字元標準支援因為開發資源有限,開發計畫暫定如下:
PHP
編譯器前端LLVM
項目的lit
測試框架phplit
回歸測試框架完成對polarphp
編譯器前端的測試polarvm
的指令集,完成虛擬機器的基礎架構polarphp
AST 到指令集的編譯,暫時不定義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
,有什麼問題,請掃描下面的微信二維碼進群交流。
目前我們暫時只針對中國的用戶,所以採用了微信和QQ
群的交流方式,下面是二維碼,有興趣的同學可以掃碼加入:
PS:掃碼請註明來意,例如:學習
polarphp
或PHP
愛好者
polarphp
在php
語言專案之上進行二次開發,遵守php
專案的協議,詳情請看:專案協議
=============================