【风雪之隅】写在PHP7发布之际一些话 2015-12-02
做开源也有4,5年的时间了,从最初的 Yaf,到今天的 PHP7,我参与的项目越来越多,使用我代码的用户也越来越多,明天就要发布的PHP7,绝对是我从事开源以来的一个最重要里程碑,我应该纪念一下今天,就让我稍微感性一次吧。
PHP7项目开始于去年春节的时候,那个时候我们基于PHP-5.5的Opcache JIT项目基本上因为无法得到期望的结果而搁置了,一些在做JIT的时候收集到的信息让我们认识到,基础部分还不够好,并不能很好的支持JIT,所以在2014年2月左右吧,我们开始了重构项目,当时的希望是说通过重构,能得到30%以上的性提升,为将来的进一步优化提供基础。
那时还没有给这个项目起名字,我们只是试试,那几个月是我最忙碌的时刻,因为只有我们俩个人在这个项目中,我还因为自身微博的工作也比较忙,所以基本上只晚上的时间都扑在了上面。 不过好在,我和另外一个人有5个小时的时差,所以很多工作可以串行起来。
随着项目的推进,我们惊喜的发现性能提升比我们想象的还要大,到4月的时候另外一个人也加入了进来,到5月基本上已经完成了大部分的工作,于是我们公布了这一个成果,定名为PHP NG项目。
但我没想到的是,我们遇到了社区很大的阻力,因为在我们秘密开发PHP NG的时候,社区还并行着一个主要是微软的同学们发起的64位支持的项目, 当我们公开PHP NG的时候, 他们质疑说,突然拿着这么大的一个Patch出来,没有其他人懂,后续如何维护,如何和64位支持的分支合并等,继而反对采纳PHP NG分支。 当时我是非常沮丧的,持续好久的争吵也让我感到非常疲倦,最后因为我实在无法排遣,一腔怒火的也不管自己蹩脚的英文,在邮件组回了一封吐槽邮件,呼吁大家珍惜这个性能提升分支。
还有个很好玩的插曲, PHP NG的支持者很多,他们也对这样的争吵很郁闷,某天,有一些支持者就在PHP官网上发布了这样的一个新闻: http://php.net/archive/2014.php#id2014-05-27-1 其中写到:
"When we aren't looking for pictures of kittens on the internet, internals developers are nearly always looking for ways to improve PHP, a few developers have a focus on performance.",
但当天反对者们就说,不行,PHP NG还没有被接纳,要求删除这篇文章, 好在考虑到文章已经发出去了,最后就在首页上下掉了这个文章的入口,只是在存档中保留了内容。 很多媒体都感受到了这次的乌龙。
争执不下之后,不得已,我们只能发起投票,来决定是否接纳PHP NG, 好在,最后投票的时候,绝大部分人都支持了PHP NG项目,并决定以PHP NG为基础,开始我们的新版的PHP的开发。 当时还没有确定用PHP6还是PHP7版本号(后来投票决定PHP7)。 我现在经常会说这次经历,让我感受到了"民主之痛"。
之后的事情大家就都能看到了,在这近两年的时间里, 各种新特性的加入,性能的持续提升, 很多以前不合理的地方改进等等,都加入到了PHP7,让PHP7越来越丰满。 从最底层的ZVAL的改变,到标量类型提示,从最初的30%的性能提升,到现在超过100%的性能飞跃,每一处变化都让人值得期待。 然后经过几次不情愿的跳票,终于,到今天,这一切都将呈现于你面前。
有的时候我会想,我是幸运的,幸运在一直有机会做没做过并且有挑战的事情, 幸运在一直能感受到自己的成长,幸运在所做的大部分努力,终究看到了效果,得到了回报。 也衷心的希望我的幸运可以激励更多的人参与到开源中来。
未来,我们还会一如既往的致力于提升PHP的性能,提升PHP的品质,让更多的PHPer们,可以持续享受到透明的提升。
最后,做开源这么久,带给了我很多的收获,我要谢谢大家,谢谢这些鼓励,也谢谢那些善意的谬赞。
PS: 本来想等到PHP7发布以后再发的,但是想到可以为它的到来造势,就先发布罢。 PHP7 目前已经可以下载,官方宣布考虑到时差问题,后天早上来看吧。 目前下载地址: http://php.net/get/php-7.0.0.tar.gz/from/a/mirror enjoy!
谢谢
风雪之隅
2015-12-02
【风雪之隅】写在PHP7发布之际一些话 2015-12-02的更多相关文章
- memory_limit的一个bug | 风雪之隅
原文:memory_limit的一个bug | 风雪之隅 27 Nov 09 memory_limit的一个bug 作者: Laruence( ) 本文地址: http://www.laruence. ...
- 如何调试PHP的Core之获取基本信息 --------风雪之隅 PHP7核心开发者
http://www.laruence.com/2011/06/23/2057.html https://github.com/laruence PHP开发组成员, Zend兼职顾问, PHP7核心开 ...
- 用es6方式的写的订阅发布的模式
//发布订阅模式 class EventEmiter { constructor() { //维护一个对象 this._events = { } } on(eventName, callback) { ...
- 最后一片蓝海的终极狂欢-写在Win10发布前夕
作为一名Windows8.x+系统平台从业者,从工作伊始,耳边不断充斥着Windows将走向没落的言论,Win10今日晚些时候即将发布,笔者借此机会,说说自己的看法. 早在2012年的时候,IDC曾预 ...
- 在dotnet6发布之际,FastNat内网穿透,给开发人员送的硬货福利
一.FastNat可为您解决的问题 1.没有公网服务器,但是想发布共享本地的站点或网络程序到公网上,以供他人访问: 此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行. 2.需要远程到在其 ...
- 风雪之隅(Laruence PHP开发组成员, Zend兼职顾问, Yaf, Yar, Yac, Opcache等项目作者、维护者.)
http://www.laruence.com/?from=inf&wvr=5&loc=infblog
- 写给OIer们的一些话(修订版)
我是一个高二的OIer,离我正式退役的日子已经不超过一年了.在这个时期,与其写一些回忆性的文字,不如跳出"自我"的范畴,以一种比较全局的角度和大家一起分享一些我对OI的认知和看法. ...
- 发布有礼!2015 Autodesk程序商店有奖发布活动拉开序幕
您是不是有希望您的 Autodesk 产品应用程序有更多的用户?您是不是正在寻求更广阔的市场机会?您是不是在激荡人心的云时代大潮中有许多奇思妙想没有小试身手? 来吧,来参加Autodesk应用程序发布 ...
- wpf 单例模式和异常处理 (原发布 csdn 2017-04-12 20:34:12)
第一次写博客,如有错误,请大家及时告知,本人立即改之. 如果您有好的想法或者建议,我随时与我联系. 如果发现代码有误导时,请与我联系,我立即改之. 好了不多说,直接贴代码. 一般的错误,使用下面三个就 ...
随机推荐
- javascript基于原型实现面向对象
传统的OO语言有类的概念,但js(ES5)却是基于原型实现的面向对象. 原型是?我们创建的每一个函数都会有一个原型(prototype)属性,这个属性是一个指针,指向函数的原型(prototype)对 ...
- nth-child() 选择器
给tabel tb1 td添加样式 #tb1 tr td:nth-child(2n+1) {/*奇数行样式*/ } #tb1 tr td:nth-child(2n) {/*偶数行样式*/ }
- 第十六章:脚本化HTTP
写在本章内容前: 第十五章:事件处理 涉及到到较多的文字篇幅,介于个人精力问题,暂不更新.主要包含的内容有事件类型.注册事件处理程序.事件处理程序的调用.文档加载事件.鼠标事件.鼠标滚轮事件.拖放事件 ...
- Windows Office key 持续更新地址
微软 Windows Office 系列序列号,每日都有更新,上面显示的基本都可用,包括MAK及Retail Key. Windows 10 http://textuploader.com/52 ...
- hdu3487 伸展树(区间搬移 区间旋转)
对于区间旋转使用lazy思想就能解决.然后对于区间搬移,先把a-1结点做根,b+1作为它的右孩子,这样ch[ch[root][1]][0]就是区间[a,b],现将他取出. 然后在将当前的树伸展,把c结 ...
- jQuery插件开发模式
jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...
- Java基础-final和static的区别
很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变.看下面这个例子: public class Test { ...
- BZOJ-1228 E&D 博弈SG+找啊找啊找规律
讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...
- WDCP(WDlinux Control Panel) mysql/add_user.php、mysql/add_db.php Authentication Loss
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 http://www.wooyun.org/bugs/wooyun-2010-06 ...
- Git删除文件操作
使用Git删除文件需要使用Git rm命令来实现,最后git commit 需要注意的是直接rm命令删除后是不可以的,可以用git status 命令尝试一下,效果如图下(创建了test文件,演示了g ...