日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

方舟編譯器開(kāi)源,華為自家開(kāi)源平臺(tái)面世?。ǜ骄幾g過(guò)程)

 板橋胡同37號(hào) 2019-09-04

大數(shù)據(jù)文摘出品

作者:曹培信

8月9日,華為EMUI官方微博發(fā)了這么一條微博。


對(duì)奉行實(shí)用至上的程序員來(lái)說(shuō),Linux的創(chuàng)始人Linus Torvalds的名言“Talk is cheap,show me the code.”這句話確實(shí)是戳到了心里。

8月31日,華為如約開(kāi)源方舟編譯器,并將源代碼放出。然而開(kāi)源并非是在GitHub上,而是自建了一個(gè)“華為開(kāi)源平臺(tái)”。

這意味著華為自己的開(kāi)源平臺(tái)也一并問(wèn)世。

坊間猜測(cè),這是由于7月底GitHub封禁了一批伊朗賬戶,讓華為意識(shí)到了將方舟編譯器和鴻蒙系統(tǒng)在GitHub上開(kāi)源的風(fēng)險(xiǎn),因此趕工趕出來(lái)一個(gè)開(kāi)源平臺(tái)。

目前平臺(tái)上只有兩個(gè)倉(cāng)庫(kù),一是HarmonyOS/OpenArkComplier,另一個(gè)是測(cè)試用的example。

難怪有人表示:“這是我見(jiàn)過(guò)的最簡(jiǎn)潔的網(wǎng)站了”。

同時(shí),華為還在碼云(gitee)上建立了方舟編譯器開(kāi)源代碼官方鏡像倉(cāng)庫(kù),如今標(biāo)星已達(dá)3.6k。

打響了鴻蒙OS開(kāi)源的第一槍

8月9日,在廣東東莞舉辦的華為開(kāi)發(fā)者大會(huì)HDC.2019上,華為消費(fèi)者業(yè)務(wù)CEO余承東正式發(fā)布了鴻蒙HarmonyOS,并宣布鴻蒙OS全部開(kāi)源!

次日,華為消費(fèi)者軟件副總裁劉丹對(duì)華為開(kāi)源的系統(tǒng)設(shè)計(jì)和運(yùn)作模式作了更詳細(xì)的說(shuō)明。

劉丹表示,華為軟件開(kāi)源,秉承的是自信、包容、公平、共建和共贏五大基本準(zhǔn)則,在運(yùn)作模式上,華為會(huì)參考國(guó)際常規(guī)模式,先以'孵化委員會(huì)'的簡(jiǎn)化模式進(jìn)行初期探索,方舟編譯器首先開(kāi)源,隨后其他模塊也將分批開(kāi)源。

對(duì)于未來(lái)的開(kāi)源計(jì)劃,現(xiàn)場(chǎng)也放出了一張表。

方舟編譯器作為“排頭兵”,打響了鴻蒙OS開(kāi)源的第一槍。


方舟編譯器開(kāi)源范圍

如今,方舟編譯器首先在自家平臺(tái)上開(kāi)源了自定的編譯器IR(Intermediate Representation)——MAPLE IR,RC(Reference Counting)和多語(yǔ)言設(shè)計(jì)思想等,用于與業(yè)界,學(xué)術(shù)界溝通交流。后續(xù)將陸續(xù)開(kāi)源編譯器前端,后端,支持其它語(yǔ)言(如JavaScript)的編譯。

后續(xù)華為也會(huì)按照計(jì)劃在2020年開(kāi)始開(kāi)源Java編譯器工具鏈,支持Java程序編譯;到2021年開(kāi)始開(kāi)源JavaScript編譯器工具鏈,可用于JS程序的編譯。

安卓卡頓的“終結(jié)者”

華為開(kāi)發(fā)方舟編譯器花了十年,為了解決安卓系統(tǒng)的“四大命門(mén)”,華為工程師們夜以繼日,只為“再造安卓”。

方舟編譯器官網(wǎng)上的一篇文章,生動(dòng)地訴說(shuō)了這一段歷程。

文章地址:

https://www./news/detail/news5
  • 2009年,華為啟動(dòng)5G基礎(chǔ)技術(shù)研究的同時(shí),開(kāi)始創(chuàng)建編譯組,第一批海內(nèi)外研究人員加入。

  • 2013年,華為推出面向基站領(lǐng)域的自研編譯器,并正式提出編譯器框架構(gòu)想。

  • 2014年,眾多海內(nèi)外專家加入華為,方舟項(xiàng)目正式啟動(dòng)。

  • 2016年,成立編譯器與編程語(yǔ)言實(shí)驗(yàn)室。

  • 2019年,華為方舟編譯器正式面世!

2018年春節(jié)前一周,方舟編譯器跑通安卓系統(tǒng)所有后臺(tái)服務(wù),并成功移植到手機(jī)。成功開(kāi)機(jī)后,項(xiàng)目組成員甚至流下了激動(dòng)的淚水!

大年初一清晨,總架構(gòu)師發(fā)來(lái)了第一條方舟經(jīng)編譯器編譯的程序發(fā)出來(lái)的拜年消息:

春節(jié)快樂(lè),方舟大吉!

方舟編譯器的優(yōu)勢(shì)在兩方面,一是首次在Java領(lǐng)域?qū)⑷サ袅颂摂M機(jī),也是史上首次將Java/C/C++等混合代碼一次編譯成機(jī)器碼直接在手機(jī)上運(yùn)行,徹底告別Java的JNI額外開(kāi)銷(xiāo),也徹底告別了虛擬機(jī)GC內(nèi)存回收帶來(lái)的應(yīng)用進(jìn)程掉線,使操作流暢度大幅提升。


方舟編譯器整體框架

二是方舟編譯器用空間換性能,直接將編譯器的代碼優(yōu)化搬到了開(kāi)發(fā)者環(huán)境,不再被手機(jī)端的硬件資源所限制,為代碼優(yōu)化提供了無(wú)限可能。

根據(jù)華為官方測(cè)試,方舟編譯器提升手機(jī)系統(tǒng)操作流暢度高達(dá)24%,系統(tǒng)響應(yīng)性能提升44%。

方舟編譯器源碼編譯

方舟編譯器開(kāi)源之后,引起了業(yè)界廣泛關(guān)注,方舟編譯器倉(cāng)庫(kù)的文檔也表示開(kāi)發(fā)者可以根據(jù)方舟官方文檔編譯出OpenArkCompiler。

其中知乎網(wǎng)友“小乖他爹”根據(jù)文檔進(jìn)行了編譯并撰寫(xiě)了《方舟編譯器學(xué)習(xí)筆記》系列,文摘菌在取得作者授權(quán)后,將源碼編譯過(guò)程轉(zhuǎn)載如下,快跟文摘菌一起一睹為快吧!

1、操作系統(tǒng)環(huán)境:

64位版本的Ubuntu(官方推薦Ubuntu 16.04)。我自己本身就有Ubuntu 16.04的虛擬機(jī),所以直接就在上面編譯了。

2、基礎(chǔ)配置:

sudo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-devlibc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utilsxsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkinspython-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

官方推薦安裝上述庫(kù),但是即使是在Ubuntu 16.04上,這里很多庫(kù)的版本較低。但是小版本號(hào)應(yīng)該沒(méi)什么太大的影響,我的本地環(huán)境以前編譯過(guò)別的程序,所以導(dǎo)致很多庫(kù)的版本都比這個(gè)推薦的要高,最終沒(méi)有影響我的編譯。所以不用太苛求其版本號(hào)。

3、源碼下載:

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

4、llvm和clang的下載及配置:

LLVM Download Page下載LLVM8.0.0Ubuntu 16.04 (.sig) 二進(jìn)制包。解壓之后,放到OpenArkCompiler/tools目錄之下。

LLVM Download Page:

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

Ubuntu 16.04 (.sig):

http://releases./8.0.0/

打開(kāi)openarkcompiler/build/config/BUILDCONFIG.gn文件,將其中的GN_C_COMPILER、GN_CXX_COMPILERGN_AR_COMPILER 三個(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_COMPILER = '${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar'

5、下載和配置Ninja、GN:

從下載Ninja v1.9.0,在tools下新建目錄ninja_1.9.0,將ninja可執(zhí)行文件放到ninja_1.9.0目錄之下。

Ninja v1.9.0:

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

下載GN,在tools下新建目錄GN,將GN可執(zhí)行文件放到GN目錄之下。

GN:

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

打開(kāi)openarkcompiler/Makefile文件,將GNNINJA兩個(gè)變量配置為GNNinja可執(zhí)行程序所在路徑。例如:

GN := ${MAPLE_ROOT}/tools/gn/gnNINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja

6、在OpenArkCompiler目錄之下依次執(zhí)行如下命令:

source build/envsetup.shmake

命令說(shuō)明:

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

至此,完成方舟編譯器源碼的編譯。編譯完成之后的界面如圖所示:

編譯完成之后,在OpenArkCompiler/out目錄之下,會(huì)有如下幾個(gè)文件:

其實(shí)這幾個(gè)文件在未編譯之前,在OpenArkCompiler/src/bin目錄下就有。讀了下OpenArkCompiler目錄下的Makefile,其中java2jar\jbc2mpl\mplcg都是直接從src/bin目錄之下copy到out/bin目錄之下的。只有maple有點(diǎn)特殊,它應(yīng)該是編譯生成的,然后install的時(shí)候反向copy到了src/bin目錄之下,所以編譯完成之后查看狀態(tài)(git status),會(huì)發(fā)現(xiàn)src/bin/maple發(fā)生了變化。

OpenArkCompiler/Makefile中關(guān)于install的代碼:

.PHONY: installinstall: mapleall  $(shell cp -rf $(MAPLE_ROOT)/src/bin/java2jar $(MAPLE_ROOT)/out/bin/)  $(shell cp -rf $(MAPLE_ROOT)/src/bin/jbc2mpl $(MAPLE_ROOT)/out/bin/)  $(shell cp -rf $(MAPLE_ROOT)/src/bin/mplcg $(MAPLE_ROOT)/out/bin/)  $(shell cp -rf $(MAPLE_ROOT)/out/bin/maple $(MAPLE_ROOT)/src/bin/)

另外附上作者方舟編譯器學(xué)習(xí)筆記系列鏈接。

方舟編譯器學(xué)習(xí)筆記1:方舟相關(guān)資料

https://zhuanlan.zhihu.com/p/80624361

方舟編譯器學(xué)習(xí)筆記2:源碼編譯

https://zhuanlan.zhihu.com/p/80643681

方舟編譯器學(xué)習(xí)筆記3:方舟可執(zhí)行文件簡(jiǎn)介

https://zhuanlan.zhihu.com/p/80693868

方舟編譯器學(xué)習(xí)筆記4:文檔導(dǎo)讀

https://zhuanlan.zhihu.com/p/80783831

方舟編譯器學(xué)習(xí)筆記5:方舟開(kāi)始接受代碼合并請(qǐng)求

https://zhuanlan.zhihu.com/p/80905553

方舟編譯器學(xué)習(xí)筆記6:方舟開(kāi)源目錄簡(jiǎn)介

https://zhuanlan.zhihu.com/p/81046562


實(shí)習(xí)/全職編輯記者招聘ing

加入我們,親身體驗(yàn)一家專業(yè)科技媒體采寫(xiě)的每個(gè)細(xì)節(jié),在最有前景的行業(yè),和一群遍布全球最優(yōu)秀的人一起成長(zhǎng)。坐標(biāo)北京·清華東門(mén),在大數(shù)據(jù)文摘主頁(yè)對(duì)話頁(yè)回復(fù)“招聘”了解詳情。簡(jiǎn)歷請(qǐng)直接發(fā)送至zz@bigdatadigest.cn



點(diǎn)「在看」的人都變好看了哦!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多