成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

polarphp:一個新的 PHP 語言運行時環(huán)境

宋華 / 2672人閱讀

摘要:項目介紹是一個全新的語言的運行時環(huán)境,基于目前最新的進行打造,支持最新的語言規(guī)范,同時提供了自己的運行時標準庫。同樣也在的基礎上進行打造,實現(xiàn)了一個除開發(fā)之外的一個全新的運行環(huán)境。發(fā)布核心虛擬機的鏡像。整合運行時框架。

polarphp 項目介紹

polarphp是一個全新的PHP語言的運行時環(huán)境,基于目前最新的zend virtual machine進行打造,支持最新的語言規(guī)范,同時提供了自己的運行時標準庫 (libpdk)。

簡單來說polarphp之于PHP語言的關系跟NodeJS之于Javascript語言一樣,NodeJSv8引擎基礎之上進行打造,為Javascript提供了一個在服務端運行的環(huán)境。同樣polarphp也在zend engine的基礎上進行打造,實現(xiàn)了一個除Web開發(fā)之外的一個全新的運行環(huán)境。

為什么發(fā)起 polarphp 項目

隨著GoNodeJS的強勢崛起,PHP的市場份額逐漸被蠶食,而PHP官方仍然堅守在Web編程領域,有些東西越是想守住就越守不住。polarphp借鑒NodeJSGo的相關特性對zendVM重新封裝,去掉PHP一些古老棄用的特性和強Web屬性,通過實現(xiàn)一套新的運行時框架libpdk,將PHP語言打造成為一門真正的通用性腳本語言,賦能PHP,讓其擁有異步編程,協(xié)程,線程,內(nèi)置的unicode支持,標準的文件IO等等特性,讓PHP程序員不僅僅能做web應用,也能從容面對真正的服務端應用。

polarphp 提供的基礎設施

直接面向終端,去掉SAPI從而更好的實現(xiàn)服務端環(huán)境。

規(guī)范化OPCODE形成規(guī)范,從而提供一種類似pyc文件的預編譯機制。

提供原生多線程支持,借鑒Java在多線程方面的編程范式。

提供原生異步IO支持。

提供針對字符串的unicode支持。

提供一種全新的包組織方式,內(nèi)置包依賴管理工具,類似Cargonpm。

提供內(nèi)置的API文檔生成工具。

polarphp 大致架構

項目主要由三部分構成,主要有如下三個子模塊

polarvm

zendAPI

libpdk

這個模塊大致的關系如下:

polarvm <=> zendAPI <=> libpdk
polarvm 介紹

現(xiàn)階段實現(xiàn)對zend engine的封裝,實現(xiàn)最基本的PHP執(zhí)行環(huán)境,比如實現(xiàn):

語言解析,OPCODE的執(zhí)行。

實現(xiàn)基礎運行環(huán)境,實現(xiàn)變量操作,數(shù)組操作,類加載機制,語言反射等等。

zend engine的初始化,實現(xiàn)語言引擎與終端的鏈接,實現(xiàn)語言引擎對標準輸入輸出的直接控制。

實現(xiàn)語言引擎與標準庫之間的回調機制。

zendAPI 介紹

做過PHP擴展的朋友應該知道,在我們開發(fā)擴展的時候,zend engine的很多接口都是通過宏調用的方式提供的,類型不安全,出錯了不好調試,而且有些宏還長的特別像,同時操作數(shù)組的時候特別繁瑣。zend enginegc是通過引用計數(shù)實現(xiàn)的,同時C語言又沒有什么從語言層面幫我們管理計數(shù)的機制,從而我們在寫擴展的時候管理內(nèi)存不僅很繁瑣而且一不小心就會造成內(nèi)存泄露。特別是將寫時復制和PHP變量之間的引用一起使用的時候,非常讓能頭痛。

如果我們的標準庫如果直接基于原生的zend engine的接口,勢必擴展性,可維護性會受到嚴重影響,特別是目前polarvm是基于zend engine二次開發(fā)的可觀情況下。所以在語言引擎和標準庫之間實現(xiàn)一個屏蔽層,對下實現(xiàn)對zend engine原生接口的封裝,對上提供一套相對穩(wěn)定且簡單的面向對象的CPP編程接口。

zendAPI 提供如下的特性:

完全面向對象,對Zend Engine API進行二次定義

使用現(xiàn)代的C++11語法進行開發(fā),便于維護

最大化屏蔽PHP版本對擴展開發(fā)的影響,zendAPI將對Zend Engine API不同版本帶來的差異屏蔽掉

高覆蓋的單元測試,保證代碼質量

在封裝的時候,盡最大能力保證性能

致力于項目庫的二進制兼容

libpdk 介紹

libpdk 的定位是polarphp語言環(huán)境中的標準庫,PDKPHP Development Kit幾個單詞的縮寫。在設計上參考JavaJDK的模塊組織風格,為PHP提供一套嚴謹并且功能強大的運行時標準庫,讓實現(xiàn)服務端高效編程成為可能,比如使用PHP實現(xiàn)類似Netty那樣的事件驅動的網(wǎng)絡框架,或者CoreDNS那樣的應用項目成為可能。同時也可以讓開發(fā)終端程序比如npm,CargoPM2等等類似的程序更加便捷。在Web領域,libpdkpolarphp能夠脫離SAPI直接像go那樣自己對端口進行監(jiān)聽,從而實現(xiàn)gin那樣的輕量級的服務框架更加方便,底層基于事件循環(huán)模型和多線程模型。

項目庫地址: https://github.com/polarphp/l...

PDK計劃了如下幾個模塊

Base module (基礎模塊,實現(xiàn)最基本的功能,比如輸入輸出,文件系統(tǒng),進程與線程,事件模型等等)

Network module(網(wǎng)絡模塊,在基礎模塊之上,實現(xiàn)一套高性能的網(wǎng)絡框架,讓編寫服務端系統(tǒng)更加便捷)

Web module (Web模塊,實現(xiàn)常見的Http協(xié)議,提供一個類型SerletWeb運行時容器)

GUI module (用戶界面模塊,未來實現(xiàn),讓PHP具備編寫常見的客戶端系統(tǒng),基于openGL實現(xiàn))

polarphp 的開發(fā)計劃

因為開發(fā)資源有限,開發(fā)計劃暫定如下:

使用cmakezend VM進行編譯,生成polarphp定制版的PHP語言虛擬機。

語言支持項目,語言測試框架,移植LLVM項目的lit測試框架。

實現(xiàn)polarphp驅動程序,實現(xiàn)從命令行執(zhí)行PHP代碼。

polarphp虛擬機進行回歸測試,暫定跑通PHP的語言虛擬機相關回歸測試。

實現(xiàn)polarphp的內(nèi)置函數(shù)。

發(fā)布核心虛擬機的docker鏡像。

整合libpdk運行時框架。

實現(xiàn)人性化安裝,盡量以最少的步驟進行polarphp的安裝。

實現(xiàn)包管理器。

實現(xiàn)語言配套小工具,比如文檔生成工具等等。

polarphp 優(yōu)先支持的操作系統(tǒng)

debain

centos

ubuntu

openSUSE

macOS

未來打算原生支持Windows操作系統(tǒng),目前正在進行知識儲備。

polarphp 目前的現(xiàn)狀

目前項目處于一個非常前期的階段,通過docker鏡像來實現(xiàn)項目的迭代發(fā)布,目前主要是我一個人在業(yè)余時間進行開發(fā),歡迎大家一起玩。2019年一個重要的任務就是完善polarphp標準庫libpdk,以及實現(xiàn)在主流的Linux操作系統(tǒng)上穩(wěn)定的運行。

如何參與

目前我們暫時只針對中國的用戶,所以采用了微信群的交流方式:
微信號:zzu_xiuxiu

目前有以下工作組

語言核心團隊

標準庫團隊

生態(tài)鏈項目團隊

文檔團隊

官方網(wǎng)站維護團隊

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/30041.html

相關文章

  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    Drummor 評論0 收藏0
  • CGI、FastCGI、PHP-CGI和PHP-FPM 概念區(qū)分

    摘要:原理啟動時載入進程管理器或進程管理器自身初始化,啟動多個解釋器進程可見多個并等待來自的連接。當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。子進程接著等待并處理來自進程管理器運行在中的下一個連接。 CGI 簡介 CGI全稱是通用網(wǎng)關接口(Common Gateway Interface),是外部應用程序與與服務器之間的接口標準,是在CGI程序和web服務器之間傳遞信息的規(guī)程。 在...

    light 評論0 收藏0
  • PHP 運行模式

    摘要:接下來會對其中五個比較常見的運行模式進行說明。模式是目前主流的服務運行模式,擁有高效可靠的性能,推薦大家使用。由于微軟的排他性,只能運行于環(huán)境。 SAPI 這里所說的 PHP 運行模式, 其實指的是 SAPI (Server Application Programming Interface,服務端應用編程端口 )。SAPI 為 PHP 提供了一個和外部通信的接口, PHP 就是通過這...

    OnlyMyRailgun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<