PHP核心开发者Nikita的首次提交,就实现了个寂寞啊

Nikita Popov 曾是 PHP 社区中备受尊敬的核心开发者之一。几年间,他深度参与了性能优化工作,一边不断实现新功能,一边修复历史遗留的大量错误,是把 PHP 从"老旧脚本语言"推动为"现代编程语言"的关键人物之一。

Nikita 可谓年轻有为,据说还在高中时期就开始参与 PHP 开发,首次贡献是在 PHP 5.5 版本中。

我们不禁好奇,这位才华横溢的开发者第一次会向 PHP 代码库提交哪些内容?下面,我们就来看看 Nikita 的首秀吧,了解他是如何开启这段非凡的开源旅程的。

以邮箱为关键词在提交日志中进行搜索,可以发现他首次提交的时间是 2012 年 5 月 20 日。不知道当时高中毕没毕业。

这次提交主要新增了 2 个文件 zend_generators.czend_generators.h,并对 Makefileconfigure 等构建脚本文件做了相应的修改。从注释来看,Nikita 的首次提交只是添加了没有任何功能的、一个名为 Generator 的内置类 。文件 zend_generators.c 中的代码也验证了这一点。

c 复制代码
#include "zend.h"
#include "zend_API.h"
#include "zend_generators.h"

ZEND_API zend_class_entry *zend_ce_generator;

static const zend_function_entry generator_functions[] = {
       ZEND_FE_END
};

void zend_register_generator_ce(TSRMLS_D) /* {{{ */
{
       zend_class_entry ce;

       INIT_CLASS_ENTRY(ce, "Generator", generator_functions);
       zend_ce_generator = zend_register_internal_class(&ce TSRMLS_CC);
       zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS;
}
/* }}} */

换句话说,Nikita 的首次提交,只是让我们可以在代码中写出 <?php new Generator(); ------ 仅此而已,new 出来的对象没有任何作用。

如果你对 PHP 扩展开发稍有了解,会发现这几行代码是模板化的"公文格式":定义一个类、注册类名、绑定方法,这套流程任谁来写都是这样。真正透露出一点"作者痕迹"的,只有两个地方:一个是类名 "Generator",另一个是 zend_ce_generator->ce_flags |= ZEND_ACC_FINAL_CLASS;,表明 Generator 这个类无法被继承。

尽管这次提交看起来非常朴素,甚至可以说简陋,却悄然拉开了一个重要特性的序幕------生成器(generators)。这项特性随着 yield 关键字在 PHP 5.5 中正式落地,大大丰富了语言的表达力。

正如所有伟大的旅程都始于第一步,Nikita 的这次"空提交"似乎也预示着他在 PHP 语言演进中的关键角色。

Nikita Popov 目前是 Red Hat 的高级软件工程师,主要从事 LLVM、Clang 和 Rust 编译器的开发工作。

相关推荐
挨踢攻城7 小时前
华为 | SD-WAN场景丢包类问题定位
网络·华为·php·hcie·hcia·hcip·厦门微思网络
fakaifa11 小时前
【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
人工智能·小程序·uni-app·php·crmeb·源码下载·crmebpro
lingggggaaaa16 小时前
小迪安全v2023学习笔记(六十二讲)—— PHP框架反序列化
笔记·学习·安全·web安全·网络安全·php·反序列化
Q_Q19632884751 天前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
Ashlee_code1 天前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php
nightunderblackcat1 天前
进阶向:人物关系三元组,解锁人物关系网络的钥匙
开发语言·python·开源·php
向日葵.2 天前
fastdds.ignore_local_endpoints 属性
服务器·网络·php
dog2502 天前
难以超越的 TCP AIMD
网络协议·tcp/ip·php
檀越剑指大厂2 天前
【Linux系列】如何在 Linux 服务器上快速获取公网
linux·服务器·php
Q_Q5110082852 天前
python的软件工程与项目管理课程组学习系统
spring boot·python·django·flask·node.js·php·软件工程