abstract:佩服百度人民堅(jiān)守傳統(tǒng)的精神。百度的 gcc 還曾經(jīng)有很長一段時間被鎖定在了 gcc 2.96, 當(dāng)年升級到 gcc 3 的時候那個喜大普奔。記得之前有人質(zhì)疑我說百度在很長時間禁止大部分 C++ feature 的真實(shí)性, 你在這版本上玩 C++ 試試……我沒寫錯,是 2.96,你在 GNU 的主頁上查不到 gcc 2.96 這個版本的,這是一個 RedHat 的私家 branch... http:
佩服百度人民堅(jiān)守傳統(tǒng)的精神。百度的 gcc 還曾經(jīng)有很長一段時間被鎖定在了 gcc 2.96, 當(dāng)年升級到 gcc 3 的時候那個喜大普奔。記得之前有人質(zhì)疑我說百度在很長時間禁止大部分 C++ feature 的真實(shí)性, 你在這版本上玩 C++ 試試……
我沒寫錯,是 2.96,你在 GNU 的主頁上查不到 gcc 2.96 這個版本的,這是一個 RedHat 的私家 branch... http://www.redhat.com/advice/speaks_gcc.html 這酸爽。
我不了解現(xiàn)在百度的情況,以下講述的是 6 年前還被鎖定在 2.96 時代的事,當(dāng)故事聽就好。
其實(shí)就是軟件管理沒做好,這在創(chuàng)業(yè)階段不算個事,但是到發(fā)展壯大了還沒跟上只能怪自己。一堆無人維護(hù)卻躲不開的庫,很多庫是二進(jìn)制發(fā)布把源碼像什么似的供著直接造成編譯器和glibc版本依賴鎖定(當(dāng)年有幸看過一眼源碼,那代碼質(zhì)量簡直了),有的甚至干脆找不到可靠的源碼(沒有可靠源碼是指,你手上的源碼是編譯不出跟生產(chǎn)環(huán)境一樣的binary的,生產(chǎn)環(huán)境上的有可能是某次緊急改bug上線的遺跡,連代碼提交都沒留下來)?;緵]有 unittest 鬼知道刷個版本會發(fā)生什么事,還有好多上古傳奇人物留下的謎之代碼,不乏 /* 別刪這行刪了會掛雖然我也不知為啥 */ 的注釋,又沒人有這個閑功夫重寫,都被當(dāng)成 taboo 一樣留在那了唄。
對了,百度有很長時間把模塊線上 core dump 數(shù)目作為軟件質(zhì)量評價指標(biāo),計入 KPI 的,而不是去改進(jìn) fault tolerence 機(jī)制讓有缺陷的程序相對健康地跑著。這種激勵機(jī)制,誰吃飽了撐著去升級版本做重構(gòu)拼 core dump 嘛。