Apple 和 Google 都在搞 LLVM,這是兩個公司間的合作還是競爭?
對Google應用LLVM的情況不太了解,大致搜索了一下,根據這篇 C++ At Google: Here Be Dragons ,Google應該主要在用Clang代替G++。此外,還有像Tenzing這樣的項目利用LLVM來對SQL query進行優化等。目測基本上主要是在應用LLVM,而不是開發LLVM本身(當然不排除向上游提patch)。如果是這樣的話,Apple和Google在LLVM這件事上沒有理由競爭。
根據我的一位同事的觀點,站在LLVM創始人Chris Lattner的角度,LLVM現階段不太可能脫離Apple。LLVM的遠景很宏偉,其目標是全時優化。如果真的實現這個目標,那麼今後可能出現這樣一種場景:
- 用戶開發一個基於LLVM的程序,在將其編譯成native二進位代碼的過程中LLVM會進行大量的編譯期和鏈接期優化;
- 用戶運行該二進位代碼時,LLVM會在裝載器進行裝載期優化;
- 二進位代碼運行期間,LLVM會根據運行過程中採集的信息通過直接改寫二進位代碼的方式進行運行時二進位優化(注意這跟普通的JIT是不一樣的)。
要實現這樣的目標,在整套體系完善之前,最好能夠在統一的軟硬體體系之下進行探索,以避免陷入繁雜的兼容性問題的陷阱。從這個角度上講,Apple完全掌控著自己的軟硬體,可謂LLVM最好的孵化場所。
感興趣的話題,我不請自來了。
android和IOS的處理器現在絕大部分還是ARM架構。
LLVM被引入到ART,不可能是競爭關係,雙方的成果都有可能被對方吸收。應該是一種心照不宣的互利共贏關係。而真正的輸家很有可能是Windows和X86。
雖然X86也可以利用部分成果(其實Tizen也使用了LLVM),但是,既生瑜何生亮?-----------------------------------------
這裡的信息已經過時了,僅代表我當時獲取到的信息得出的結論。但是事情的發展並沒有往這個方向發展。見到繼續有人贊,要update一下這個答案,免得誤導人。具體參考:Android 中的 LLVM 主要做什麼? - 知乎用戶的回答
最近講生態系統講多了,很多人都會覺得,只有維護一個完全是自己的stack,才是大公司的生存之道。
其實不是,比如oracle除了Solaris還有Oracle Linux,微軟也提供Linux hosting。只要開源,許可證是商業友好的,採用既有開源方案不但能降低成本,也能控制風險和增強業界影響。只有短時如PC時代的IBM,才會試圖用新的OS綁定用戶。
LLVM/clang stack的價值主要在於和gcc比它的代碼模塊性好,易於擴展和修改。同時又擁有和gcc可以比較的代碼生成質量,google選擇它進行二次開發也是很合理的。
所以我覺得硬體兼容性不是問題,反而是llvm的優點和最大賣點 - 且不說OS X本身就是認證UNIX,移植並不困難。想像一下,是給模塊化的llvm寫個代碼生成器容易,還是給gcc寫擴展容易。
此外,一個非常重要的因素是LLVM和gcc的許可證不一樣。GPL3對商業並不友好,提交代碼給upstream也會有很多顧慮 - LLVM的許可證不太有這個問題。這也就是為什麼FreeBSD會轉向clang stack.
軟體上是合作,不過APPL的人跑到GOOG去的可不少。另外,GOOG基本搞公版,APPL內部有私貨,比如AArch64最大是輸家是原來賣工具的,現在賣不出去了,比如RVDS 6已經是LLVM了
談不上競爭,也趕不上合作吧。各取所需而已。Apple一直在搞自己的LLVM版本,和社區版本是不同的。Google內部情況不清楚。
推薦閱讀:
※Mac App Store 下載速度慢是誰的原因?
※蘋果內部設計比安卓緊湊,機身比安卓大(同尺寸),電池卻比安卓小,那蘋果到底在裡面多放了什麼?
TAG:蘋果公司AppleInc | 谷歌Google | LLVM |