polarphp
是一个全新的PHP
语言的运行时环境,基于目前最新的zend virtual machine
进行打造,支持最新的语言规范,同时提供了本身的运行时标准库 (libpdk
)。php
简单来讲polarphp
之于PHP
语言的关系跟NodeJS
之于Javascript
语言同样,NodeJS
在v8
引擎基础之上进行打造,为Javascript
提供了一个在服务端运行的环境。一样polarphp
也在zend engine
的基础上进行打造,实现了一个除Web
开发以外的一个全新的运行环境。git
随着Go
和NodeJS
的强势崛起,PHP
的市场份额逐渐被蚕食,而PHP
官方仍然坚守在Web
编程领域,有些东西越是想守住就越守不住。polarphp
借鉴NodeJS
和Go
的相关特性对zendVM
从新封装,去掉PHP
一些古老弃用的特性和强Web
属性,经过实现一套新的运行时框架libpdk
,将PHP
语言打形成为一门真正的通用性脚本语言,赋能PHP
,让其拥有异步编程,协程,线程,内置的unicode
支持,标准的文件IO
等等特性,让PHP
程序员不只仅能作web
应用,也能从容面对真正的服务端应用。程序员
SAPI
从而更好的实现服务端环境。OPCODE
造成规范,从而提供一种相似pyc
文件的预编译机制。Java
在多线程方面的编程范式。IO
支持。unicode
支持。Cargo
和npm
。API
文档生成工具。项目主要由三部分构成,主要有以下三个子模块github
这个模块大体的关系以下:web
polarvm <=> zendAPI <=> libpdk
现阶段实现对zend engine
的封装,实现最基本的PHP
执行环境,好比实现:docker
OPCODE
的执行。zend engine
的初始化,实现语言引擎与终端的连接,实现语言引擎对标准输入输出的直接控制。作过PHP
扩展的朋友应该知道,在咱们开发扩展的时候,zend engine
的不少接口都是经过宏调用的方式提供的,类型不安全,出错了很差调试,并且有些宏还长的特别像,同时操做数组的时候特别繁琐。zend engine
的gc
是经过引用计数实现的,同时C
语言又没有什么从语言层面帮咱们管理计数的机制,从而咱们在写扩展的时候管理内存不只很繁琐并且一不当心就会形成内存泄露。特别是将写时复制和PHP
变量之间的引用一块儿使用的时候,很是让能头痛。npm
若是咱们的标准库若是直接基于原生的zend engine
的接口,势必扩展性,可维护性会受到严重影响,特别是目前polarvm
是基于zend engine
二次开发的可观状况下。因此在语言引擎和标准库之间实现一个屏蔽层,对下实现对zend engine
原生接口的封装,对上提供一套相对稳定且简单的面向对象的CPP
编程接口。编程
Zend Engine API
进行二次定义C++11
语法进行开发,便于维护PHP
版本对扩展开发的影响,zendAPI
将对Zend Engine API
不一样版本带来的差别屏蔽掉libpdk
的定位是polarphp
语言环境中的标准库,PDK
是PHP Development Kit
几个单词的缩写。在设计上参考Java
的JDK
的模块组织风格,为PHP
提供一套严谨而且功能强大的运行时标准库,让实现服务端高效编程成为可能,好比使用PHP
实现相似Netty
那样的事件驱动的网络框架,或者CoreDNS
那样的应用项目成为可能。同时也可让开发终端程序好比npm
,Cargo
和PM2
等等相似的程序更加便捷。在Web
领域,libpdk
让polarphp
可以脱离SAPI
直接像go
那样本身对端口进行监听,从而实现gin
那样的轻量级的服务框架更加方便,底层基于事件循环模型和多线程模型。ubuntu
项目库地址: https://github.com/polarphp/l...centos
PDK
计划了以下几个模块
Http
协议,提供一个类型Serlet
的Web
运行时容器)PHP
具有编写常见的客户端系统,基于openGL
实现)由于开发资源有限,开发计划暂定以下:
cmake
对zend VM
进行编译,生成polarphp
定制版的PHP
语言虚拟机。LLVM
项目的lit
测试框架。polarphp
驱动程序,实现从命令行执行PHP代码。polarphp
虚拟机进行回归测试,暂定跑通PHP的语言虚拟机相关回归测试。polarphp
的内置函数。docker
镜像。libpdk
运行时框架。polarphp
的安装。将来打算原生支持Windows
操做系统,目前正在进行知识储备。
目前项目处于一个很是前期的阶段,经过docker
镜像来实现项目的迭代发布,目前主要是我一我的在业余时间进行开发,欢迎你们一块儿玩。2019年一个重要的任务就是完善polarphp
标准库libpdk
,以及实如今主流的Linux
操做系统上稳定的运行。
目前咱们暂时只针对中国的用户,因此采用了微信群的交流方式:
微信号:zzu_xiuxiu