Skip to content

Commit 533749a

Browse files
committed
增加新博客
0 parents  commit 533749a

File tree

2 files changed

+122
-0
lines changed

2 files changed

+122
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: 关于制定 polarphp 编译器支持的语言规范
3+
date: 2019-12-22 00:11:19
4+
tags:
5+
---
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
title: polarphp 项目简单介绍
3+
date: 2019-12-22 00:11:38
4+
tags:
5+
---
6+
### 为什么要做 polarphp 项目
7+
8+
随着`Go``NodeJS`的强势崛起,`PHP`的市场份额逐渐被蚕食,而`PHP`官方仍然坚守在`Web`编程领域,有些东西越是想守住就越守不住。`polarphp`借鉴`NodeJS``Go`的相关特性对`zendVM`重新封装,去掉`PHP`一些古老弃用的特性和强`Web`属性,通过实现一套新的运行时框架`libpdk`,将`PHP`语言打造成为一门真正的通用性脚本语言,赋能`PHP`,让其拥有异步编程,协程,线程,内置的`unicode`支持,标准的文件`IO`等等特性,让`PHP`程序员不仅仅能做`web`应用,也能从容面对真正的服务端应用。`polarphp`不是一门新的语言,而是`PHP`语言的除官方外的一个新的编译器及其运行时。
9+
10+
### 主要特性
11+
12+
- [ ] 兼容最新的`PHP`语言标准,移除废弃语言特性
13+
- [ ] 内置`unicode`字符标准支持
14+
- [ ] 全功能型运行时库支持,支持异步编程,多线程和协程等等编程模式
15+
- [ ] 内置包管理器
16+
- [ ] 内置文档生成器
17+
18+
### 开发计划
19+
20+
因为开发资源有限,开发计划暂定如下:
21+
22+
1. 实现自己的`PHP`编译器前端
23+
2. 语言支持项目,语言测试框架,移植`LLVM`项目的`lit`测试框架
24+
3. 使用`phplit`回归测试框架完成对`polarphp`编译器前端的测试
25+
4. 定义`polarvm`的指令集,完成虚拟机的基础架构
26+
5. 实现完整的虚拟机规范的指令集
27+
6. 完成`polarphp` AST 到指令集的编译,暂时不定义 IR 层
28+
7. 使用`phplit`对语言结构到指令集所有编译模块的测试
29+
8. 实现一个最小化的运行时,暂时使用`PHP`内置的`GC`
30+
9. 实现`PHP`语言标准库`libpdk`的底层架构 (`cpp`部分)
31+
10. 实现人性化安装,尽量以最少的步骤进行`polarphp`的安装
32+
11. 实现包管理器
33+
12. 实现语言配套小工具,比如文档生成工具等等
34+
13. 发动社区,实现一个功能完备的`PHP`标准库 (使用`PHP`代码配合`libpdk`底层支持进行实现)
35+
36+
### 开始体验
37+
38+
#### 克隆 polarphp 项目库
39+
```
40+
git clone https://github.com/polarphp/polarphp.git
41+
cd polarphp
42+
git submodule init
43+
git submodule update
44+
git checkout v0.0.1-alpha
45+
```
46+
#### 运行脚本
47+
```
48+
./devtools/scripts/build_polarphp.sh
49+
```
50+
这个时候脚本开始编译相关镜像,耗时比较长,请您耐心等待。等待编译完成,您运行:
51+
```
52+
docker images
53+
```
54+
这个时候请确认在输出中有如下镜像:
55+
1. polarphp_base_env
56+
2. polarphp_debug
57+
58+
如果没有问题,我们开始测试`polarphp`是否在镜像中正常运行。
59+
```
60+
docker run --rm -it polarphp_debug
61+
```
62+
进入容器后,输入我们的`polarphp`命令行程序
63+
```
64+
polar --version
65+
```
66+
如果您得到下面的输出:
67+
```
68+
polarphp 0.0.1-git (built: 2019-01-27 12:22)
69+
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
70+
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
71+
```
72+
恭喜您,您已经成功编译了`polarphp`运行时环境。
73+
在编译镜像的时候,我们在`~/temp/`文件夹中放入了一个测试脚本
74+
```php
75+
if (function_exists('\php\retrieve_version_str')) {
76+
echo "version str: " . \php\retrieve_version_str() . "\n";
77+
}
78+
79+
if (function_exists('\php\retrieve_major_version')) {
80+
echo "major version: " . \php\retrieve_major_version() . "\n";
81+
}
82+
83+
if (function_exists('\php\retrieve_minor_version')) {
84+
echo "minor version: " . \php\retrieve_minor_version() . "\n";
85+
}
86+
87+
if (function_exists('\php\retrieve_patch_version')) {
88+
echo "patch version: " . \php\retrieve_patch_version() . "\n";
89+
}
90+
91+
```
92+
您可以运行一下命令:
93+
```
94+
polar ~/temp/main.php
95+
```
96+
如果没有错误,您将得到下面的输出:
97+
```
98+
version str: polarphp 0.0.1-git
99+
major version: 0
100+
minor version: 0
101+
patch version: 1
102+
```
103+
感谢您测试`polarphp`,有什么问题,请扫描下面的微信二维码进群交流。
104+
105+
### 社区
106+
目前我们暂时只针对中国的用户,所以采用了微信和`QQ`群的交流方式,下面是二维码,有兴趣的同学可以扫码加入:
107+
108+
> PS:扫码请注明来意,比如:学习`polarphp`或者`PHP`爱好者
109+
110+
#### 目前有以下工作组
111+
112+
1. 语言核心团队
113+
2. 标准库团队
114+
3. 生态链项目团队
115+
4. 文档团队
116+
5. 官方网站维护团队
117+

0 commit comments

Comments
 (0)