華為終於放出方舟編譯器原始碼,網友:硬核項目

2020-12-25 澎湃新聞

關注前沿科技 量子位 乾明 邊策 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

華為方舟編譯器終於正式開源,原始碼放出,兌現了在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。

source build/envsetup.sh #初始化環境,將OpenArkCompiler工具鏈路徑openarkcompiler/src/bin設置到環境變量中make #編譯OpenArkCompiler的Release版本make BUILD_TYPE=DEBUG #編譯OpenArkCompiler的Debug版本

目前,只是針對方舟編譯器的框架進行開源。

其後續具體開源計劃如下:

2019年第四季度:上線英文版開源網站。

2020 年:開放 Java 編譯器工具鏈,支持 Java 程序編譯。

2021 年:開放對 JavaScript 語言的支持能力,可用於 JS 應用的編譯。

華為表示,在孵化委員會期間,方舟編譯器代碼是託管在華為雲上面。

在未來走向開放治理以後,將由所掛靠機構選擇的平臺進行託管。如果掛靠的機構採取了X平臺,就採用這個機構的代碼託管模式進行託管。 華為打造開源平臺

意料之中,華為沒有選擇在GitHub上開源。至於為什麼,也不難理解。

GitHub畢竟是一家「美國公司」。此前因為美國禁令,對位於伊朗等國家和地區的GitHub用戶「斷供」。

華為現在給出的替代方案,有「兩層」。

首先,針對方舟編譯器打造了一個開源網站,用於發布圍繞方舟編譯器的介紹、指南等信息。

其次,自己打造一個開源平臺,名為華為開原始碼託管平臺,託管代碼。

https://code.opensource.huaweicloud.com/home

與GitHub不同的是。華為開原始碼託管平臺並不允許普通開發者託管自己的代碼,主要是官方(華為)發布開原始碼。

也就是說,這一平臺不會支持普通用戶以自助的方式創建自己的開原始碼倉庫。

但是,在華為給出的example中,已經有不少人呼籲,要創建自己的倉庫。

從功能上來看,目前上線的平臺只是一個早期的版本,但已經有了Fork、克隆、PR、問題(issues)、標星(關注)等功能。

而其他一系列功能,如CI/CD、Wiki、發布與包管理、靜態頁面生成等等,還需要迭代才能上線。

對於這種情況,有人表示,太簡陋了。不過,也有人表示非常理解:

雖然簡陋了點,但中國人自己的開源交流平臺的產品原型,就此誕生了!

根據華為之前透露的消息,這應該只是華為開源動作的一小部分,但也是華為開源的一大步。

2019華為開發者大會期間,華為消費者BG軟體部總裁王成錄透露,一兩個月後,中國的開源基金會將正式運營起來。

屆時,國內的開源基金會也將借鑑國外的運作模式,根據大家在社區的貢獻來確定大家的排名。

這段時間內,華為也先後宣布要開源更多技術,比如面向未來的作業系統鴻蒙OS,以及全場景AI推理框架MindSpore。

這些開源動作,將會以何種面貌問世,仍舊有不少懸念。

但可以預見的是,來自中國本土的開源力量,已經在呈現新面貌,邁出新步伐,甚至創造新宇宙。

— 完 —

閱讀原文

相關焦點

  • 華為方舟編譯器開源了哪些內容?
    華為方舟編譯器開源官網8月31日正式上線,方舟編譯器代碼正式出現在華為開源平臺HUAWEIOpenSource上。方舟編譯器是華為自研作業系統鴻蒙OS的重要組成部分,本次方舟編譯器框架代碼的正式上線,也意味著華為鴻蒙OS向開源走近了一步。
  • 解讀| 華為方舟編譯器的革命性到底體現在哪裡?
    方舟編譯器的榮光和使命》的長文,該文對華為方舟編譯器的實現原理和背後故事進行了解讀——而雷鋒網也希望由此提取出關於華為方舟編譯器實現 Android 性能革命的諸多要點。Android 代碼編譯的原理和弊端在目前全世界的多種程式語言中,Android 作業系統採用的是 Java 語言。
  • 華為方舟編譯器深入解讀:已有45款第三方應用
    8月31日,華為方舟編譯器(OpenArkCompiler)正式開源,官網已上線,原始碼包、二進位包已提供下載,相關文檔、演示等資料也一應俱全。本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進位組件,實現Java程序到aarch64彙編指令的編譯過程。
  • 華為方舟編譯器正式支持C語言:完全開源
    2019年8月底,華為方舟編譯器(OpenArkCompiler)正式開源,邁出了跨越性的一步。一年多來,方舟編程體系陸續實現了編譯器、引擎、調試器的開源,其中編譯器的重點功能主要集中在Java應用程式靜態編譯上。
  • 華為方舟編譯器開源了,還公布了這 45 個合作夥伴
    根據華為公布的時間表,後續還將開源編譯器前端、後端;支持 Java 程序編譯、JavaScript 語言應用的編譯等。現在的官網也只是方舟編譯器孵化期間的網站,「正式畢業後的官網待定」。顧名思義,編譯器相當於一個翻譯器,將程式設計師編程使用的高級語言翻譯成機器能懂的代碼,目前 Android 系統的應用運行時主要採用邊「翻譯」邊執行的模式,會消耗部分資源且影響運行效率,而華為的方舟編譯器則優化了這個過程,在開發環境中完成全部代碼編譯,所以應用在運行時不需要再經過編譯即可直接將操作指令送達處理器執行,給用戶帶來的直觀感受就是系統更流程、應用運行更快了。
  • 華為方舟編譯器完整開源為何要10年?看看專家怎麼說
    華為方舟編譯器完整開源為何要10年?查資料【必備】 微信掃一掃,我知道了 8月31日,華為官宣方舟編譯器正式上線
  • 華為方舟編譯器解讀 如何讓手機性能再突破
    今年4月,華為新品發布會上,除了發布全新的華為P30系列手機,還發布了革命性的 「華為方舟編譯器」。通過架構級優化,華為方舟編譯器可以從程序編譯與運行機制上提升安卓系統的流暢度,補齊安卓系統的短板。據了解,2009年華為便創立了編譯組,期間推出自研編譯器HCC、程式語言CM等,歷經10餘年方舟編譯器才得以面世。
  • 華為開源方舟編譯器的意義究竟有多大,或許能「拯救」安卓手機?
    不過值得大家關注的不僅僅只有新品手機發布,在前不久結束的華為開發者大會上,華為公布了鴻蒙OS及方舟編譯器的具體開源時間。這一消息的公布無疑讓眾多開發者為之欣喜。相比新手機的發布,個人覺得華為鴻蒙和方舟編譯器對於整個行業來說影響力會更重要一些!
  • 華為「黑科技」方舟編譯器解讀,帶來安卓系統新革命
    華為在2019春季新品發布會上,正式發布了華為方舟編譯器,這一編譯器能顯著改善安卓應用編譯效率,根據華為官方測試數據,方舟編譯器能夠使系統操作流暢度提升24%,系統響應性能提升44%的收益,第三方應用重新編譯後流暢度可提升60%。
  • 華為方舟編譯器:支持C語言編譯新功能已開源
    【天極網手機頻道】據華為方舟編譯器官方消息,方舟支持C語言編譯新功能已開源。   據介紹,自2019年8月開源以來,方舟編程體系已經陸續實現了編譯器、引擎和調試器的開源,編譯器的重點功能主要集中在Java應用程式靜態編譯上。
  • 華為方舟編譯器:支持 C 語言編譯新功能開源
    IT之家10月14日消息 據方舟編譯器官方消息,方舟支持 C 語言編譯新功能已開源。據介紹,自 2019 年 8 月開源以來,方舟編程體系已經陸續實現了編譯器、引擎和調試器的開源,編譯器的重點功能主要集中在 Java 應用程式靜態編譯上。
  • 華為方舟編譯器是什麼怎麼用 開源後多久編譯時間介紹
    今天下午,華為開發者大會(HDC2019)在東莞松山湖召開,大會上華為消費者業務CEO、華為常務董事餘承東稱,方舟編譯器未來支持多語言統一編譯。  華為消費者業務CEO餘承東稱,方舟編譯器未來支持多語言統一編譯,大幅提高開發效率,支持C/C++、Java、JS和Kotlin等。
  • 華為方舟編譯器開源細節:45家合作夥伴公布,英文站Q4上線
    據IT之家消息,8月31日,華為方舟編譯器開源官網正式上線。(網址為https://www.openarkcompiler.cn/home)。官網概述顯示,方舟編譯器是為支持多種程式語言、多種晶片平臺的聯合編譯、運行而設計的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件。方舟編譯器還在持續演進中,陸續將上述能力實現和開源。
  • 華為方舟編譯器開源細節:45家合作夥伴公布,英文網站Q4上線
    IT之家8月31日消息 今日,華為方舟編譯器開源官網正式上線。(網址為https://www.openarkcompiler.cn/home)。官網概述顯示,方舟編譯器是為支持多種程式語言、多種晶片平臺的聯合編譯、運行而設計的統一編程平臺,包含編譯器、工具鏈、運行時等關鍵部件。
  • 華為宣布方舟編譯器8月31日開源,友商上船嗎?
    華為稱使用華為方舟編譯器後可系統操作流暢度將提升24%,系統響應將提升44%,三方應用操作流暢度將提升60%,並稱這是「安卓性能革命」,在會上,華為還承諾開源方舟編譯器。華為之所以敢說方舟編譯器是「革命」,和其編譯器的高效有關。什麼是「編譯器」呢,簡單來說,「編譯器」就是將我們能夠理解的語言「翻譯」為計算機能夠理解的以0和1構成的語言。
  • 點評方舟編譯器開源:如同嬰兒般帶來新希望
    八月份,方舟編譯器開源官網已經上線,同時框架代碼同步對外公布。這次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語言編譯實現,同時搭配編譯器其他二進位組件,實現Java程序到aarch64彙編指令的編譯過程。
  • 華為方舟正式牽手C語言!完全開源
    近一年多來,方舟編程系統相繼實現了編譯器、引擎和調試器的開源,編譯器的關鍵功能主要集中在Java應用程式的靜態編譯上。華為強調,Ark項目的目標是建立一個基於MapleIR的跨語言編程環境,以實現跨語言的全局分析和優化。
  • 方舟編譯器帶來更多話語權,國產編譯器仍需提高自主性
    2019 年 8 月底,華為方舟編譯器(OpenArkCompiler)正式開源。一年多來,方舟編程體系陸續實現了編譯器、引擎、調試器的開源。方舟編譯器的「走紅」,也讓編譯器這一技術性話題逐漸廣為人知。那麼,編譯器的重要性有哪些?中國在編譯器方面是怎樣的現狀?還有哪些不足?
  • 華為openEuler作業系統原始碼正式開放
    IT之家1月2日消息 去年9月19日,華為在上海舉辦的第四屆華為全聯接大會上宣布,華為伺服器作業系統EulerOS開源,開源名為openEuler。華為Cloud&AI產品與服務總裁侯金龍還透露,華為正在與中標紅旗、武漢深之度等公司籌備開源社區。
  • 方舟編譯器 Toy Runtime 可以運行 Hello World 了
    方舟編譯器 runtime 參考實現 pacific 發布了 0.1 版本,支持運行基於方舟編譯器的 Hello World 程序。pacific 並不是華為官方實現,而是 PLCT 實驗室的培訓項目。PLCT 即「程序語言與編譯技術實驗室」,隸屬於中國科學院軟體研究所智能軟體研究中心。