鳥哥:寫在 PHP 7 釋出之際一些話
做開源也有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!
相關文章
- runc 1.0-rc7 釋出之際
- 鳥哥:PHPNext:JITPHP
- runc 1.0-rc6 釋出之際
- Sharding-Sphere成長記——寫在分散式資料庫代理端里程碑版本3.0.0釋出之際分散式資料庫
- 寫實風視覺小說《青箱》釋出之後的一些總結視覺
- 手寫程式碼之 【釋出訂閱】
- 寫在又一個國際資料保護日之際
- 菜鳥站長之家收集分享一些比較出名的外鏈釋出地址
- 鳥哥的伺服器10 防火牆伺服器防火牆
- 鳥哥的Linux私房菜--CPU種類Linux
- 鳥哥的Linux私房菜 -- 電子書(pdf)Linux
- 鳥哥私房菜-基礎篇小筆記筆記
- linux-鳥哥私房菜學習筆記Linux筆記
- 寫在最前面的話
- 鳥哥私房菜學習筆記(第零章)筆記
- PJzhang:鳥哥的linux私房菜-shell指令碼-上Linux指令碼
- 鳥哥的linux基礎學習實訓教程Linux
- 【淺出 PHP】PHP 檔案操作 寫檔案PHP
- Linux“菜鳥”到“菜鳥的一些建議Linux
- XAMPP with PHP 7.1.28, 7.2.17 & 7.3.4 釋出PHP
- 登堂入室,滿目餘香——寫在黑神話全成就之後
- 為什麼是InfluxDB | 寫在《InfluxDB原理和實戰》出版之際UX
- 釋出.netcore到Centos7NetCoreCentOS
- 一些話
- Hyperf 3.0 釋出,PHP 新時代PHP
- 萌新之php一句話木馬PHP
- 鳥哥的Linux私房菜筆記第六章Linux筆記
- docker釋出專案的一些坑Docker
- PHP8的一些新特性之MatchPHP
- 兄弟們還在繼續寫php嗎?PHP
- .NET ASPIRE 預覽版 7 釋出
- .NET 7 Preview 1 已正式釋出View
- Capistrano 3.11, GitLab, PHP 本地自動釋出APIGitlabPHP
- 寫在2024年國際資料保護日之際:如何保護資料安全和隱私?
- Solon 1.5.11 釋出,增加國際化外掛
- 手寫事件釋出訂閱框架事件框架
- Flutter 1.7 釋出,新增一些漂亮的元件Flutter元件
- ABAP Platform 2020 釋出的一些新功能Platform
- 7 – 在 Django Admin 後臺釋出文章Django