寫在 PHP7 發(fā)布之際一些話
做開(kāi)源也有4, 5年的時(shí)間了, 從最初的Yaf, 到今天的PHP7, 我參與的項(xiàng)目越來(lái)越多, 使用我代碼的用戶也越來(lái)越多, 明天就要發(fā)布的PHP7, 絕對(duì)是我從事開(kāi)源以來(lái)的一個(gè)最重要里程碑, 我應(yīng)該紀(jì)念一下今天, 就讓我稍微感性一次吧.
PHP7項(xiàng)目開(kāi)始于去年春節(jié)的時(shí)候, 那個(gè)時(shí)候我們基于PHP-5.5的Opcache JIT項(xiàng)目基本上因?yàn)闊o(wú)法得到期望的結(jié)果而擱置了, 一些在做JIT的時(shí)候收集到的信息讓我們認(rèn)識(shí)到, 基礎(chǔ)部分還不夠好, 并不能很好的支持JIT, 所以在2014年2月左右吧, 我們開(kāi)始了重構(gòu)項(xiàng)目, 當(dāng)時(shí)的希望是說(shuō)通過(guò)重構(gòu), 能得到30%以上的性提升, 為將來(lái)的進(jìn)一步優(yōu)化提供基礎(chǔ).
那時(shí)還沒(méi)有給這個(gè)項(xiàng)目起名字, 我們只是試試, 那幾個(gè)月是我最忙碌的時(shí)刻, 因?yàn)橹挥形覀儌z個(gè)人在這個(gè)項(xiàng)目中, 我還因?yàn)樽陨砦⒉┑墓ぷ饕脖容^忙, 所以基本上只晚上的時(shí)間都撲在了上面. 不過(guò)好在, 我和另外一個(gè)人有5個(gè)小時(shí)的時(shí)差, 所以很多工作可以串行起來(lái).
隨著項(xiàng)目的推進(jìn), 我們驚喜的發(fā)現(xiàn)性能提升比我們想象的還要大, 到4月的時(shí)候另外一個(gè)人也加入了進(jìn)來(lái), 到5月基本上已經(jīng)完成了大部分的工作, 于是我們公布了這一個(gè)成果, 定名為PHP NG項(xiàng)目.
但我沒(méi)想到的是, 我們遇到了社區(qū)很大的阻力, 因?yàn)樵谖覀兠孛荛_(kāi)發(fā)PHP NG的時(shí)候, 社區(qū)還并行著一個(gè)主要是微軟的同學(xué)們發(fā)起的64位支持的項(xiàng)目, 當(dāng)我們公開(kāi)PHP NG的時(shí)候, 他們質(zhì)疑說(shuō), 突然拿著這么大的一個(gè)Patch出來(lái), 沒(méi)有其他人懂, 后續(xù)如何維護(hù), 如何和64位支持的分支合并等, 繼而反對(duì)采納PHP NG分支. 當(dāng)時(shí)我是非常沮喪的, 持續(xù)好久的爭(zhēng)吵也讓我感到非常疲倦, ***因?yàn)槲覍?shí)在無(wú)法排遣, 一腔怒火的也不管自己蹩腳的英文, 在郵件組回了一封吐槽郵件, 呼吁大家珍惜這個(gè)性能提升分支.
還有個(gè)很好玩的插曲, PHP NG的支持者很多, 他們也對(duì)這樣的爭(zhēng)吵很郁悶, 某天, 有一些支持者就在PHP官網(wǎng)上發(fā)布了這樣的一個(gè)新聞: 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.", 但當(dāng)天反對(duì)者們就說(shuō), 不行, PHP NG還沒(méi)有被接納, 要求刪除這篇文章, 好在考慮到文章已經(jīng)發(fā)出去了, ***就在首頁(yè)上下掉了這個(gè)文章的入口, 只是在存檔中保留了內(nèi)容. 很多媒體都感受到了這次的烏龍.
爭(zhēng)執(zhí)不下之后, 不得已, 我們只能發(fā)起投票, 來(lái)決定是否接納PHP NG, 好在, ***投票的時(shí)候, 絕大部分人都支持了PHP NG項(xiàng)目, 并決定以PHP NG為基礎(chǔ), 開(kāi)始我們的新版的PHP的開(kāi)發(fā). 當(dāng)時(shí)還沒(méi)有確定用PHP6還是PHP7版本號(hào)(后來(lái)投票決定PHP7). 我現(xiàn)在經(jīng)常會(huì)說(shuō)這次經(jīng)歷, 讓我感受到了"民主之痛".
之后的事情大家就都能看到了, 在這近兩年的時(shí)間里, 各種新特性的加入, 性能的持續(xù)提升, 很多以前不合理的地方改進(jìn)等等, 都加入到了PHP7, 讓PHP7越來(lái)越豐滿. 從***層的ZVAL的改變, 到標(biāo)量類型提示, 從最初的30%的性能提升, 到現(xiàn)在超過(guò)100%的性能飛躍, 每一處變化都讓人值得期待. 然后經(jīng)過(guò)幾次不情愿的跳票, 終于, 到今天, 這一切都將呈現(xiàn)于你面前.
有的時(shí)候我會(huì)想, 我是幸運(yùn)的, 幸運(yùn)在一直有機(jī)會(huì)做沒(méi)做過(guò)并且有挑戰(zhàn)的事情, 幸運(yùn)在一直能感受到自己的成長(zhǎng), 幸運(yùn)在所做的大部分努力, 終究看到了效果, 得到了回報(bào). 也衷心的希望我的幸運(yùn)可以激勵(lì)更多的人參與到開(kāi)源中來(lái).
未來(lái), 我們還會(huì)一如既往的致力于提升PHP的性能, 提升PHP的品質(zhì), 讓更多的PHPer們, 可以持續(xù)享受到透明的提升.
***, 做開(kāi)源這么久, 帶給了我很多的收獲, 我要謝謝大家, 謝謝這些鼓勵(lì), 也謝謝那些善意的謬贊.
PS: 本來(lái)想等到PHP7發(fā)布以后再發(fā)的, 但是想到可以為它的到來(lái)造勢(shì), 就先發(fā)布罷. PHP7 目前已經(jīng)可以下載, 官方宣布考慮到時(shí)差問(wèn)題, 后天早上來(lái)看吧. 目前下載地址: http://php.net/get/php-7.0.0.tar.gz/from/a/mirror enjoy!