点击右上方,关注开源中国OSC头条号,获取最新技能资讯
polarphp 项目先容polarphp是一个全新的PHP措辞的运行时环境,基于目前最新的zend virtual machine进行打造,支持最新的措辞规范,同时供应了自己的运行时标准库 (libpdk)。
大略来说polarphp之于PHP措辞的关系跟NodeJS之于Javascript措辞一样,NodeJS在v8引擎根本之上进行打造,为Javascript供应了一个在做事端运行的环境。同样polarphp也在zend engine的根本上进行打造,实现了一个除Web开拓之外的一个全新的运行环境。

项目官网库:
https://gitee.com/polarphp/polarphp
https://github.com/polarphp/polarphp
欢迎小伙伴们多多star ^ _ ^
为什么发起 polarphp 项目随着Go和NodeJS的强势崛起,PHP的市场份额逐渐被蚕食,而PHP官方仍旧坚守在Web编程领域,有些东西越是想守住就越守不住。polarphp借鉴NodeJS和Go的干系特性对zendVM重新封装,去掉PHP一些古老弃用的特性和强Web属性,通过实现一套新的运行时框架libpdk,将PHP措辞打造成为一门真正的通用性脚本措辞,赋能PHP,让其拥有异步编程,协程,线程,内置的unicode支持,标准的文件IO等等特性,让PHP程序员不仅仅能做web运用,也能从容面对真正的做事端运用。
polarphp 供应的根本举动步伐直接面向终端,去掉SAPI从而更好的实现做事端环境。规范化OPCODE形成规范,从而供应一种类似pyc文件的预编译机制。供应原生多线程支持,借鉴Java在多线程方面的编程范式。供应原生异步IO支持。供应针对字符串的unicode支持。供应一种全新的包组织办法,内置包依赖管理工具,类似Cargo和npm。供应内置的API文档天生工具。polarphp 大致架构
项目紧张由三部分构成,紧张有如下三个子模块
polarvmzendAPIlibpdk这个模块大致的关系如下:
polarvm <=> zendAPI <=> libpdk
polarvm 先容
现阶段实现对zend engine的封装,实现最基本的PHP实行环境,比如实现:
措辞解析,OPCODE的实行。实现根本运行环境,实现变量操作,数组操作,类加载机制,措辞反射等等。zend engine的初始化,实现措辞引擎与终真个链接,实现措辞引擎对标准输入输出的直接掌握。实现措辞引擎与标准库之间的回调机制。zendAPI 先容
做过PHP扩展的朋友该当知道,在我们开拓扩展的时候,zend engine的很多接口都是通过宏调用的办法供应的,类型不屈安,出错了不好调试,而且有些宏还长的特殊像,同时操作数组的时候特殊繁琐。zend engine的gc是通过引用计数实现的,同时C措辞又没有什么从措辞层面帮我们管理计数的机制,从而我们在写扩展的时候管理内存不仅很繁琐而且一欠妥心就会造成内存透露。特殊是将写时复制和PHP变量之间的引用一起利用的时候,非常让能头痛。
如果我们的标准库如果直接基于原生的zend engine的接口,势必扩展性,可掩护性会受到严重影响,特殊是目前polarvm是基于zend engine二次开拓的可不雅观情形下。以是在措辞引擎和标准库之间实现一个屏蔽层,对下实现对zend engine原生接口的封装,对上供应一套相对稳定且大略的面向工具的CPP编程接口。
zendAPI 供应如下的特性:
完备面向工具,对Zend Engine API进行二次定义利用当代的C++11语法进行开拓,便于掩护最大化屏蔽PHP版本对扩展开拓的影响,zendAPI将对Zend Engine API不同版本带来的差异屏蔽掉高覆盖的单元测试,担保代码质量在封装的时候,尽最大能力担保性能致力于项目库的二进制兼容libpdk 先容
libpdk 的定位是polarphp措辞环境中的标准库,PDK是PHP Development Kit几个单词的缩写。在设计上参考Java的JDK的模块组织风格,为PHP供应一套严谨并且功能强大的运行时标准库,让实现做事端高效编程成为可能,比如利用PHP实现类似Netty那样的事宜驱动的网络框架,或者CoreDNS那样的运用项目成为可能。同时也可以让开发终端程序比如npm,Cargo和PM2等等类似的程序更加便捷。在Web领域,libpdk让polarphp能够分开SAPI直接像go那样自己对端口进行监听,从而实现gin那样的轻量级的做事框架更加方便,底层基于事宜循环模型和多线程模型。
项目库地址: https://github.com/polarphp/libpdk
PDK操持了如下几个模块
Base module (根本模块,实现最基本的功能,比如输入输出,文件系统,进程与线程,事宜模型等等)Network module(网络模块,在根本模块之上,实现一套高性能的网络框架,让编写做事端系统更加便捷)Web module (Web模块,实现常见的Http协议,供应一个类型Serlet的Web运行时容器)GUI module (用户界面模块,未来实现,让PHP具备编写常见的客户端系统,基于openGL实现)polarphp 的开拓操持由于开拓资源有限,开拓操持暂定如下:
利用cmake对zend VM进行编译,天生polarphp定制版的PHP措辞虚拟机。措辞支持项目,措辞测试框架,移植LLVM项目的lit测试框架。实现polarphp驱动程序,实现从命令行实行PHP代码。对polarphp虚拟机进行回归测试,暂定跑通PHP的措辞虚拟机干系回归测试。实现polarphp的内置函数。发布核心虚拟机的docker镜像。整合libpdk运行时框架。实现人性化安装,只管即便以最少的步骤进行polarphp的安装。实现包管理器。实现措辞配套小工具,比如文档天生工具等等。polarphp 优先支持的操作系统debaincentosubuntuopenSUSEmacOS未来打算原生支持Windows操作系统,目前正在进行知识储备。
polarphp 目前的现状目前项目处于一个非常前期的阶段,通过docker镜像来实现项目的迭代发布,目前紧张是我一个人在业余韶光进行开拓,欢迎大家一起玩。2019年一个主要的任务便是完善polarphp标准库libpdk,以及实现在主流的Linux操作系统上稳定的运行。
点击下方“理解更多”,获取软件下载地址。
↓↓↓