當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]8月31日,華為方舟編譯器(OpenArkCompiler)正式開源,官網(wǎng)已上線,源代碼包、二進(jìn)制包已提供下載,相關(guān)文檔、演示等資料也一應(yīng)俱全。 本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中

8月31日,華為方舟編譯器(OpenArkCompiler)正式開源,官網(wǎng)已上線,源代碼包、二進(jìn)制包已提供下載,相關(guān)文檔、演示等資料也一應(yīng)俱全。

本次方舟編譯器開源的是編譯器框架部分源碼,包括編譯器中間表示(IR)和語(yǔ)言編譯實(shí)現(xiàn),同時(shí)搭配編譯器其他二進(jìn)制組件,實(shí)現(xiàn)Java程序到aarch64匯編指令的編譯過(guò)程。

開發(fā)者可基于開源代碼+二進(jìn)制,編譯構(gòu)建出編譯器工具鏈,嘗試對(duì)Java程序進(jìn)行編譯。

社區(qū)參與者可以通過(guò)框架源碼學(xué)習(xí)方舟編譯器的編譯器中間表達(dá)(IR)及基本的中端編譯框架,熟悉方舟編譯器的架構(gòu)思想,并參與諸如對(duì)編譯器中端優(yōu)化的貢獻(xiàn)。

【方舟編譯器的優(yōu)勢(shì)】

按照華為的介紹,方舟編譯器是為支持多種編程語(yǔ)言、多種芯片平臺(tái)的聯(lián)合編譯、運(yùn)行而設(shè)計(jì)的統(tǒng)一編程平臺(tái),包含編譯器、工具鏈、運(yùn)行時(shí)等關(guān)鍵部件,目前還在持續(xù)演進(jìn)中,上述能力將陸續(xù)實(shí)現(xiàn)和開源。

通過(guò)多語(yǔ)言統(tǒng)一IR表示,方舟編譯器可實(shí)現(xiàn)應(yīng)用中多種編程語(yǔ)言聯(lián)合編譯優(yōu)化提升性能,而且在支持多平臺(tái)的同時(shí),根據(jù)設(shè)備特征提供便捷的開發(fā)與部署策略提升效率。

華為方舟編譯器提供了全新的系統(tǒng)及應(yīng)用的編譯和運(yùn)行機(jī)制,從動(dòng)態(tài)編譯變?yōu)殪o態(tài)編譯,就是直接將高級(jí)語(yǔ)言直接編譯成機(jī)器碼,徹底消除了虛擬機(jī)動(dòng)態(tài)編譯的額外開銷,實(shí)現(xiàn)了開發(fā)和運(yùn)行效率的兼容并舉。

1、多語(yǔ)言聯(lián)合

將同一應(yīng)用中的不同語(yǔ)言代碼聯(lián)合編譯、聯(lián)合優(yōu)化,消除語(yǔ)言間的性能“鴻溝”,降低開發(fā)者的優(yōu)化成本

2、輕量運(yùn)行時(shí)

通過(guò)編譯器的語(yǔ)言實(shí)現(xiàn)能力和優(yōu)化能力增強(qiáng),應(yīng)用運(yùn)行時(shí)的開銷更小

3、軟硬件協(xié)同

編譯器與芯片實(shí)現(xiàn)軟硬件協(xié)同優(yōu)化,充分發(fā)揮硬件能效,應(yīng)用體驗(yàn)更佳

4、多平臺(tái)支持

支持面向多樣化的終端設(shè)備平臺(tái)進(jìn)行編譯和運(yùn)行,根據(jù)設(shè)備特征提供便捷的開發(fā)與部署策略,提高開發(fā)效率

【方舟編譯器的架構(gòu)設(shè)計(jì)】

當(dāng)前方舟編譯器支持Java/Kotlin程序字節(jié)碼的前端輸入,C/C++/JS等其它編程語(yǔ)言的支持還在規(guī)劃中。

方舟編譯器的中間表示(IR)轉(zhuǎn)換器將前端輸入轉(zhuǎn)換成方舟IR,并輸送給后端的優(yōu)化器,最終生成二進(jìn)制文件,二進(jìn)制文件與編譯器運(yùn)行時(shí)庫(kù)文件鏈接生成可執(zhí)行文件,在方舟的運(yùn)行環(huán)境中就可執(zhí)行該文件。

方舟編譯器IR是支持程序編譯和運(yùn)行的中間程序表示。程序源代碼中的任何信息對(duì)于程序分析和優(yōu)化都是有幫助的,所以方舟IR的目標(biāo)是盡可能完整詳細(xì)地提供源程序的信息。

【方舟編譯器的環(huán)境配置】

- 硬件配置推薦

方舟編譯器的硬件配置需求不高,最低只需2GHz雙核心處理器、2GB內(nèi)存、200GB硬盤空間,當(dāng)然要獲得最高效率,更高配置是強(qiáng)烈推薦的。

- 開發(fā)環(huán)境推薦

需要64位版本的Linux,尤其推薦Ubuntu 16.04

sudo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386

sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu

- Clang編譯器

主要用于編譯方舟編譯器代碼。

下載clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04,地址:

http://releases.llvm.org/download.html#8.0.0

放置到openarkcompiler/tools目錄,打開openarkcompiler/build/config/BUILDCONFIG.gn文件,將GN_C_COMPILER、GN_CXX_COMPILER和GN_AR三個(gè)變量配置為Clang編譯器所在路徑。例如:

GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang"

GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++"

GN_AR = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"

其中${MAPLE_ROOT}為openarkcompiler源碼根目錄。

安裝Ninja、GN并完成配置

- Ninja、GN

下載Ninja(v1.9.0)及GN(Linux Version) Ninja,地址:

https://github.com/ninja-build/ninja/releases

GN下載地址:

https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn

將GN和Ninja可執(zhí)行程序放置到openarkcompiler/tools目錄,打開openarkcompiler/Makefile文件,將GN和NINJA兩個(gè)變量配置為GN和Ninja可執(zhí)行程序所在路徑。例如:

GN := ${MAPLE_ROOT}/tools/gn/gn

NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja

【方舟編譯器FAQ】

Q1:方舟編譯器開源有官方網(wǎng)站嗎?

A1:

孵化期間,官方網(wǎng)站為https://www.openarkcompiler.cn。正式畢業(yè)后的官網(wǎng)待定。

Q2:方舟編譯器是一次性全部代碼嗎?

A2:

首次開源范圍是編譯器IR(Intermediate Representation)、RC(Reference Counting)和多語(yǔ)言設(shè)計(jì)思想等,用于與業(yè)界、學(xué)術(shù)界溝通交流。后續(xù)將陸續(xù)開源編譯器前端、后端,支持其它語(yǔ)言(比如JavaScript)的編譯等。

當(dāng)前部分Java語(yǔ)言特性和JVM虛擬機(jī)特性的支持未包括在本次開源代碼中,包括annotation、lambda表達(dá)式、泛型等。

目前仍有很多地方不完善,會(huì)在社區(qū)陸續(xù)迭代,遇到問(wèn)題請(qǐng)?jiān)谏鐓^(qū)提交issue。

Q3:通過(guò)哪些渠道可以獲取方舟編譯器的框架源碼?

A3:

孵化期間,開發(fā)者可以通過(guò)如下代碼托管網(wǎng)址獲得相關(guān)代碼和文檔,供參考學(xué)習(xí)、了解方舟編譯器的架構(gòu)和代碼。

華為云托管地址:

https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler

開源中國(guó)碼云托管地址:

https://gitee.com/harmonyos/OpenArkCompiler

Q4:方舟編譯器開源路標(biāo)是怎樣的?

A4:

方舟編譯器從2019年8月開始開源,歡迎廣大的應(yīng)用開發(fā)者、手機(jī)廠商、軟件從業(yè)人員一起共建開源社區(qū)和生態(tài)。

開源計(jì)劃大體上這樣安排:2019年8月重點(diǎn)開源框架部分;后續(xù)將陸續(xù)開源編譯器前端、后端;支持Jav 程序編譯、JavaScript語(yǔ)言應(yīng)用的編譯等。

Q5:還有哪些方式可以獲取方舟編譯器的相關(guān)信息?

A5:

方舟編譯器有官方微信公眾號(hào):開源方舟編譯器

Q6:方舟編譯開源面向全球開發(fā)者嗎?英文網(wǎng)站何時(shí)上線?

A6:

方舟編譯器是向全球開發(fā)者進(jìn)行開源,因此,官方網(wǎng)站和代碼托管平臺(tái)均面向全球開發(fā)者開放。

目前英文版網(wǎng)站正在緊張的開發(fā)及內(nèi)測(cè),計(jì)劃將于2019年Q4上線。

Q7:方舟編譯器源碼托管計(jì)劃是怎么的?

A7:

孵化委員會(huì)期間,方舟編譯器代碼是托管在華為云上面。

在未來(lái)走向開放治理以后,將由所掛靠機(jī)構(gòu)選擇的平臺(tái)進(jìn)行托管。如果掛靠的機(jī)構(gòu)采取了X平臺(tái),就采用這個(gè)機(jī)構(gòu)的代碼托管模式進(jìn)行托管。

當(dāng)前代碼托管的地址:

https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler

所有相關(guān)信息請(qǐng)以方舟編譯器開源官方網(wǎng)站發(fā)布為準(zhǔn)。

Q8:方舟編譯器開源使用的是什么License?

A8:

方舟編譯器采用木蘭License,由業(yè)界眾多專家和公司集體共建,并非華為主導(dǎo),具體好處詳見專業(yè)點(diǎn)評(píng):

開源中國(guó):https://www.oschina.net/news/108840/mulanpsl-the-1st-opensource-license-of-china

開源社:https://mp.weixin.qq.com/s/1xqxxiNKhcgw4RRspAaW2A

InfoQ:https://www.infoq.cn/article/KrZAbAcJrxCU27vKj*JE

Q9: 如何確認(rèn)下載包來(lái)源可靠?MD5校驗(yàn)碼是多少?

A9:

OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz二進(jìn)制包的MD5碼是:e7dc8b8c242f2d26429e2ad71dae3112

OpenArkCompiler-0.2.tar.gz源代碼包的MD5碼是:1bf859a67c8b9a2d4080bdaf25ef6181

【方舟編譯器的合作伙伴】

從官網(wǎng)給出的介紹看,目前已有至少45款第三方應(yīng)用支持華為方舟編譯器,都是大家耳熟能詳?shù)某笥脩袅緼PP,不過(guò)尚未看到微信。

具體名單如下:

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉