鳥哥:寫在 PHP7 釋出之際的一些話

發表於2015-12-02

做開源也有四五年的時間了,從最初的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!

相關文章