乾明 邊策 發自 凹非寺
華為方舟編譯器終于正式開源,源代碼放出,兌現了在8月開源的承諾。
代碼不在GitHub,而是在自家開源平臺上。這也意味著,華為開源平臺也同時問世。
根據官方信息,這次方舟編譯器開源信息內容主要有:
編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進制組件,實現JAVA程序到aarch64匯編指令的編譯過程。
開發者可基于開源代碼+二進制,編譯構建出編譯器工具鏈,嘗試對Java程序進行編譯。
社區參與者可以通過框架源碼學習方舟編譯器的編譯器中間表達(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構思想,并參與諸如對編譯器中端優化的貢獻。
開源地址:
https://www.openarkcompiler.cn/home
這是華為兌現開源承諾的第一步,也備受開發者們期待。
有網友認為,方舟編譯器的開源,將提升Android的流暢性,縮小與IOS系統的差距。
對于華為來說,也是自證實力的體現。
此前華為曾大力宣傳方舟編譯器對手機性能的提升,有人質疑華為的技術能否達到此前聲稱的水平,以及質疑國內公司的自主創新能力。
將代碼開源,無疑會打消這些開發者的疑慮。
方舟編譯器終開源
早在8月29日晚,華為就放出預告,在8月31日開源方舟編譯器,很多用戶一大早就開始等待了,大家感受下氛圍:
但是直到下午3點左右,開源方舟編譯器官方才能夠訪問。到了傍晚,華為才正式放出代碼,但從代碼的時間線來看,“趕工”痕跡明顯。
不過很多網友對華為此舉表示理解,一位名為“Gh0u1L5”知乎網友的評論獲得了廣泛的認同:
代碼放出之后,有匿名開發者第一時間下載試用方舟編譯器后發表評論,得到2.5K贊同:
知乎鏈接:
https://www.zhihu.com/question/343431810
從華為的代碼平臺來看,開源方舟編譯器只是搭建鴻蒙生態系統的第一步,華為今后將在自家平臺上陸續發布更多鴻蒙OS細節。
方舟編譯器開源了什么?
方舟編譯器,是華為歷時十多年研發出的編譯器,是一種靜態的編譯方式,于今年4月份正式對外公布。
現有的安卓系統,運行一個應用程序首先啟動虛擬機,然后讀入應用代碼逐條解釋執行,無法做到100%做到擺脫虛擬機,這也是當前安卓陣營面臨的問題。
華為方舟編譯器的靜態編譯方式可將語言里的動態特性直接翻譯成機器碼,手機安裝應用程序后可全速運行程序,徹底干掉了虛擬機,極大提升了系統運行效率。
華為官方表示,方舟編譯器對手機App運行速度提升極大。
使用EMUI 9.1的華為手機,對系統主要服務System Server進行靜態編譯化后,系統流暢度提升了24%,系統響應性能提升了44%。
華為以第三方微博極速版為例,經過方舟編譯器靜態化編譯后,流暢度提升高達60%。
在2019華為開發者大會期間,余承東也透露了方舟編譯器的新動向,未來能支持多語言統一編譯,C、C++、Java、JS、Kotlin等都能支持,甚至可以混合編譯。
這次方舟編譯器開放的框架代碼,包括中間語言 IR 框架和編譯器中端基礎實現,同時搭配編譯器其他二進制組件,實現 Java 基礎源碼到 ARM64 匯編的編譯過程。
華為表示,開發者可基于開源代碼+二進制,編譯構建出編譯器工具鏈,支持對特定 Java SampleCode 的編譯。
社區參與者可以通過框架源碼學習方舟編譯器的中間語言結構(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構思想,并參與到諸如編譯器中端優化 PHASE 的貢獻里。
具體來說,方舟編譯器框架代碼可完成 java 靜態編譯,包括類層次關系分析、虛方法表和接口表的生成、native 函數的處理等,以及基于引用計數的內存管理方式,提供樸素的 RC 插入功能。
開發者也可通過代碼托管平臺參與社區貢獻,包括文檔貢獻和代碼貢獻,同時也可在此平臺上反饋相關問題和需求。
如何獲取方舟編譯器?
方舟編譯器可以從方舟編譯器開源官網上獲取,也可以從華為開源代碼托管平臺上獲取,網址為:
https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
它與GitHub平臺一樣,都是基于Git。
在使用華為的開源托管代碼前,需要注冊華為云用戶,華為表示后續會支持更多的第三方登錄平臺。
為了把本地電腦上的Git與遠程的華為開源代碼托管平臺代碼倉庫連接到一起,需要先進行授權。授權方式有HTTPS或者SSH兩種協議可選。
因為同樣使用Git版本控制系統,其余操作與GitHub上托管和下載項目代碼的幾乎完全一致。
下載好代碼后,華為推薦的開發環境是Ubuntu 16.04 x86_64 版本,此外還需要安裝clang、llvm 8.0.0、openjdk等運行環境。
另外方舟編譯器對電腦的硬件配置也有一定的要求,華為給出的推薦配置為:
- 2 GHz 雙核處理器或者更高等級 CPU
- 2 GB 系統內存及以上
- 200GB 可用磁盤空間
下載好源代碼后,在openarkcompiler目錄下執行以下命令,編譯出OpenArkCompiler,默認輸出路徑為openarkcompiler/out/bin。
目前,只是針對方舟編譯器的框架進行開源。
其后續具體開源計劃如下:
2019年第四季度:上線英文版開源網站。
2020 年:開放 Java 編譯器工具鏈,支持 Java 程序編譯。
2021 年:開放對 Java 語言的支持能力,可用于 JS 應用的編譯。
華為表示,在孵化委員會期間,方舟編譯器代碼是托管在華為云上面。
在未來走向開放治理以后,將由所掛靠機構選擇的平臺進行托管。如果掛靠的機構采取了X平臺,就采用這個機構的代碼托管模式進行托管。
華為打造開源平臺
意料之中,華為沒有選擇在GitHub上開源。至于為什么,也不難理解。
GitHub畢竟是一家“美國公司”。此前因為美國禁令,對位于伊朗等國家和地區的GitHub用戶“斷供”。
華為現在給出的替代方案,有“兩層”。
首先,針對方舟編譯器打造了一個開源網站,用于發布圍繞方舟編譯器的介紹、指南等信息。
其次,自己打造一個開源平臺,名為華為開源代碼托管平臺,托管代碼。
https://code.opensource.huaweicloud.com/home
與GitHub不同的是。華為開源代碼托管平臺并不允許普通開發者托管自己的代碼,主要是官方(華為)發布開源代碼。
也就是說,這一平臺不會支持普通用戶以自助的方式創建自己的開源代碼倉庫。
但是,在華為給出的example中,已經有不少人呼吁,要創建自己的倉庫。
從功能上來看,目前上線的平臺只是一個早期的版本,但已經有了Fork、克隆、PR、問題(issues)、標星(關注)等功能。
而其他一系列功能,如CI/CD、Wiki、發布與包管理、靜態頁面生成等等,還需要迭代才能上線。
對于這種情況,有人表示,太簡陋了。不過,也有人表示非常理解:
雖然簡陋了點,但中國人自己的開源交流平臺的產品原型,就此誕生了!
根據華為之前透露的消息,這應該只是華為開源動作的一小部分,但也是華為開源的一大步。
2019華為開發者大會期間,華為消費者BG軟件部總裁王成錄透露,一兩個月后,中國的開源基金會將正式運營起來。
屆時,國內的開源基金會也將借鑒國外的運作模式,根據大家在社區的貢獻來確定大家的排名。
在這段時間內,華為也先后宣布要開源更多技術,比如面向未來的操作系統鴻蒙OS,以及全場景AI推理框架MindSpore。
這些開源動作,將會以何種面貌問世,仍舊有不少懸念。
但可以預見的是,來自中國本土的開源力量,已經在呈現新面貌,邁出新步伐,甚至創造新宇宙。