【驱动之家】华为方舟编译器深入解读:已有45款第三方应用
8月31日 , 华为方舟编译器(OpenArkCompiler)正式开源 , 官网已上线 , 源代码包、二进制包已提供下载 , 相关文档、演示等资料也一应俱全 。
本次方舟编译器开源的是编译器框架部分源码 , 包括编译器中间表示(IR)和语言编译实现 , 同时搭配编译器其他二进制组件 , 实现Java程序到aarch64汇编指令的编译过程 。
开发者可基于开源代码+二进制 , 编译构建出编译器工具链 , 尝试对Java程序进行编译 。
社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架 , 熟悉方舟编译器的架构思想 , 并参与诸如对编译器中端优化的贡献 。
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
【方舟编译器的优势】
按照华为的介绍 , 方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台 , 包含编译器、工具链、运行时等关键部件 , 目前还在持续演进中 , 上述能力将陆续实现和开源 。
通过多语言统一IR表示 , 方舟编译器可实现应用中多种编程语言联合编译优化提升性能 , 而且在支持多平台的同时 , 根据设备特征提供便捷的开发与部署策略提升效率 。
华为方舟编译器提供了全新的系统及应用的编译和运行机制 , 从动态编译变为静态编译 , 就是直接将高级语言直接编译成机器码 , 彻底消除了虚拟机动态编译的额外开销 , 实现了开发和运行效率的兼容并举 。
1、多语言联合
将同一应用中的不同语言代码联合编译、联合优化 , 消除语言间的性能“鸿沟” , 降低开发者的优化成本
2、轻量运行时
通过编译器的语言实现能力和优化能力增强 , 应用运行时的开销更小
3、软硬件协同
编译器与芯片实现软硬件协同优化 , 充分发挥硬件能效 , 应用体验更佳
4、多平台支持
支持面向多样化的终端设备平台进行编译和运行 , 根据设备特征提供便捷的开发与部署策略 , 提高开发效率
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
【方舟编译器的架构设计】
当前方舟编译器支持Java/Kotlin程序字节码的前端输入 , C/C++/JS等其它编程语言的支持还在规划中 。
方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR , 并输送给后端的优化器 , 最终生成二进制文件 , 二进制文件与编译器运行时库文件链接生成可执行文件 , 在方舟的运行环境中就可执行该文件 。
方舟编译器IR是支持程序编译和运行的中间程序表示 。 程序源代码中的任何信息对于程序分析和优化都是有帮助的 , 所以方舟IR的目标是尽可能完整详细地提供源程序的信息 。
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
【方舟编译器的环境配置】
- 硬件配置推荐
方舟编译器的硬件配置需求不高 , 最低只需2GHz双核心处理器、2GB内存、200GB硬盘空间 , 当然要获得最高效率 , 更高配置是强烈推荐的 。
- 开发环境推荐
需要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三个变量配置为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 , 地址:
http://github.com/ninja-build/ninja/releases
GN下载地址:
http://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn
将GN和Ninja可执行程序放置到openarkcompiler/tools目录 , 打开openarkcompiler/Makefile文件 , 将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径 。 例如:
GN := ${MAPLE_ROOT}/tools/gn/gn
NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
【方舟编译器FAQ】
Q1:方舟编译器开源有官方网站吗?
A1:
孵化期间 , 官方网站为http://www.openarkcompiler.cn 。 正式毕业后的官网待定 。
Q2:方舟编译器是一次性全部代码吗?
A2:
首次开源范围是编译器IR(Intermediate Representation)、RC(Reference Counting)和多语言设计思想等 , 用于与业界、学术界沟通交流 。 后续将陆续开源编译器前端、后端 , 支持其它语言(比如JavaScript)的编译等 。
当前部分Java语言特性和JVM虚拟机特性的支持未包括在本次开源代码中 , 包括annotation、lambda表达式、泛型等 。
目前仍有很多地方不完善 , 会在社区陆续迭代 , 遇到问题请在社区提交issue 。
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
Q3:通过哪些渠道可以获取方舟编译器的框架源码?
A3:
孵化期间 , 开发者可以通过如下代码托管网址获得相关代码和文档 , 供参考学习、了解方舟编译器的架构和代码 。
华为云托管地址:
http://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
开源中国码云托管地址:
http://gitee.com/harmonyos/OpenArkCompiler
Q4:方舟编译器开源路标是怎样的?
A4:
方舟编译器从2019年8月开始开源 , 欢迎广大的应用开发者、手机厂商、软件从业人员一起共建开源社区和生态 。
开源计划大体上这样安排:2019年8月重点开源框架部分;后续将陆续开源编译器前端、后端;支持Jav 程序编译、JavaScript语言应用的编译等 。
Q5:还有哪些方式可以获取方舟编译器的相关信息?
A5:
方舟编译器有官方微信公众号:开源方舟编译器
Q6:方舟编译开源面向全球开发者吗?英文网站何时上线?
A6:
方舟编译器是向全球开发者进行开源 , 因此 , 官方网站和代码托管平台均面向全球开发者开放 。
目前英文版网站正在紧张的开发及内测 , 计划将于2019年Q4上线 。
Q7:方舟编译器源码托管计划是怎么的?
A7:
孵化委员会期间 , 方舟编译器代码是托管在华为云上面 。
在未来走向开放治理以后 , 将由所挂靠机构选择的平台进行托管 。 如果挂靠的机构采取了X平台 , 就采用这个机构的代码托管模式进行托管 。
当前代码托管的地址:
http://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
所有相关信息请以方舟编译器开源官方网站发布为准 。
Q8:方舟编译器开源使用的是什么License?
A8:
方舟编译器采用木兰License , 由业界众多专家和公司集体共建 , 并非华为主导 , 具体好处详见专业点评:
开源中国:http://www.oschina.net/news/108840/mulanpsl-the-1st-opensource-license-of-china
开源社:http://mp.weixin.qq.com/s/1xqxxiNKhcgw4RRspAaW2A
InfoQ:http://www.infoq.cn/article/KrZAbAcJrxCU27vKj*JE
Q9: 如何确认下载包来源可靠?MD5校验码是多少?
A9:
OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz二进制包的MD5码是:e7dc8b8c242f2d26429e2ad71dae3112
OpenArkCompiler-0.2.tar.gz源代码包的MD5码是:1bf859a67c8b9a2d4080bdaf25ef6181
【方舟编译器的合作伙伴】
从官网给出的介绍看 , 目前已有至少45款第三方应用支持华为方舟编译器 , 都是大家耳熟能详的超大用户量APP , 不过尚未看到微信 。
具体名单如下:
----【驱动之家】华为方舟编译器深入解读:已有45款第三方应用 //----[ http://www.caoding.cn]
推荐阅读
- 《异度神剑 终极版》日语配音与英语配音直观对比影像
- RNG新上单暴露了?绿毛小明聊天记录曝光:记得照顾好我们的兄弟
- 讲解bjl下三路打法原理及个人实战技巧心得经验分享【许祥孜】
- 莱万已经累计4张黄牌,对阵法兰克福若再吃牌,将无法出战多特
- 2换1!乔丹当年的交易筹码曝光
- 中国渔民再次立功! 巨大宝藏重见天日, 美国请求被拒之门外!
- 余生不长,和谁在一起,真的很重要
- 【独家】自小米入股后灵动微进入D+轮融资
- 国产EDA迎来了最好的发展机遇,补全短板,就能和国外产品PK了
- 私募会员专用指标:自编交易模型+短期建仓(源码免费分享)
