华为方舟编译器来了,快!上!船!- 开发者文档 [源代码包/二进制包 下载]

本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。
开发者可以通过如下方式获得相关代码和文档,供参考学习、了解方舟编译器的架构和代码。

地址

源代码包下载
二进制包下载
查看源码
官方网站
代码托管网站
码云镜像仓库地址

架构设计

方舟编译器架构示意图
华为方舟编译器来了,快!上!船!- 开发者文档 [源代码包/二进制包 下载]_第1张图片
当前方舟编译器支持Java/Kotlin程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中,方舟编译器的中间表示(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,最终生成二进制文件,二进制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件

方舟编译器IR是支持程序编译和运行的中间程序表示。程序源代码中的任何信息对于程序分析和优化都是有帮助的,所以方舟IR的目标是尽可能完整详细地提供源程序的信息。关于方舟编译器IR的详细信息,请参考文档:方舟IR设计

方舟编译器开源范围请参考这里

环境配置

硬件推荐配置

  • 2 GHz双核处理器或者更高等级CPU
  • 2 GB系统内存及以上
  • 200GB可用磁盘空间

开发环境推荐
您需要安装一个64位版本的Ubuntu(推荐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
LLVM下载地址:http://releases.llvm.org/download.html#8.0.0

放置到openarkcompiler/tools目录,打开openarkcompiler/build/config/BUILDCONFIG.gn文件,将GN_C_COMPILERGN_CXX_COMPILERGN_AR_COMPILER三个变量配置为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"

其中${MAPLE_ROOT}为openarkcompiler源码根目录。

安装Ninja、GN并完成配置

下载Ninja(v1.9.0)及GN(Linux Version) Ninja下载地址:这里

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

开发者指南

通过参考本文档,您可以下载编译器源码编译出OpenArkCompiler。

请先按照 环境配置 文档完成您的开发环境准备。

如何贡献

有哪些形式的贡献
方舟编译器项目诚挚欢迎每个人加入社区并为项目作出贡献。在方舟编译器项目中做贡献,不局限于代码贡献一种形式,您可以通过如下多种形式参与到其中,而我们对您做出的任何贡献表示真诚的感谢:

报告错误
如果您发现了OpenArkCompiler的问题,您有必要访问Issue跟踪系统并上报。登录后创建Issue,将您发现的问题和出现条件进行详细的描述,这将有利于对问题进行重现和快速定位。

贡献代码
代码贡献仍是OpenArkCompiler项目最主要的贡献形式。我们欢迎社区志愿者贡献自己的代码,以此获得代码的维护和增强。为保障项目的健康发展和保持高质量的代码库,我们需要遵循如下贡献事宜:

请随时提问 通过在Issue跟踪系统中发表评论或通过邮件列表提出问题。

重要提示:对OpenArkCompiler项目贡献代码需要遵循流程,并非直接拉取请求和修改代码。首先请与我们取得联系,就需要优化的内容进行讨论,就修改方法达成共识。如果没有与OpenArkCompiler提交者达成共识,贡献可能需要大量返工或不予审核。

具体操作指南请参阅代码贡献指南。

贡献用例
精美的用例能够帮助更多的开发者和用户快速参与到项目中。因此,OpenArkCompiler社区需要大量的用例贡献。针对用例,OpenArkCompiler社区开辟了专门的子项目用于存放代码,请参考用例代码库,代码提交方式参考上节内容。

贡献文档
OpenArkCompiler是较为底层的复杂软件系统。高质量的文档对于项目至关重要。方舟编译器社区旨在提供清晰、准确和完整的文档,以指引社区用户和开发者对项目有更加准确的了解。我们欢迎任何以改进OpenArkCompiler文档的贡献。具体操作指导请参阅文档贡献指南。

帮助代码检视
要保证项目代码的高质量,定期检视代码是必须的。同时,对他人代码进行客观公正的评论及给出优化建议也是一种贡献,并且这是从贡献者晋升为Committer的一个重要考量部分。

回答开发者的问题和疑惑
回复用户邮件列表中的问题
在社区论坛中的问题
检查Issue中的最新问题是否存在实际上是用户问题的故障单
传播关于方舟编译器的话题
组织或参加OpenArkCompiler Meetup
参与OpenArkCompiler微博、微信公众号、知乎等官方讨论渠道
[email protected]邮件列表上分享您的会议。
签署贡献者协议
请先下载贡献者协议;
签署后,通过邮件发送至邮箱:[email protected];
收到OpenArkCompiler确认邮件。

注册会员

操作步骤

  • 进入华为云首页,单击页面右上角的“注册”。

  • 设置手机号并单击“获取短信验证码”。

    • 该手机号未注册过华为云账号,或已注册过华为云账号,但账号数量未达到系统允许的最大数量 输入短信验证码、密码并勾选“我已阅读并同意《华为云用户协议》和《隐私政策声明》”。
    • 该手机号已注册过华为云账号,且账号数量已达到系统允许的最大数量将不支持再使用该手机号注册新的华为云账号。
  • 单击“同意协议并注册”。 账号提示注册成功。

FAQ

Q1:方舟编译器开源有官方网站吗?
A1:孵化期间,官方网站为:https://www.openarkcompiler.cn;正式毕业后的官网待定。

Q2:方舟编译器是一次性全部代码吗?
A2:首次开源范围是编译器 IR( Intermediate Representation)、RC(Reference Counting)和多语言设计思想等,用于与业界、学术界沟通交流。后续将陆续开源编译器前端、后端,支持其它语言(如 JavaScript)的编译等,当前部分Java语言特性和JVM虚拟机特性的支持未包括在本次开源代码中,包括:annotation、lambda表达式、泛型等。目前仍有很多地方不完善,会在社区陆续迭代,遇到问题请在社区提交 issue,欢迎在社区继续讨论设计和代码共建。
华为方舟编译器来了,快!上!船!- 开发者文档 [源代码包/二进制包 下载]_第2张图片
Q3:通过哪些渠道可以获取方舟编译器的框架源码?
A3:孵化期间,开发者可以通过如下代码托管网址获得相关代码和文档,供参考学习、了解方舟编译器的架构和代码。

华为云托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler。

开源中国码云托管地址:https://gitee.com/harmonyos/OpenArkCompiler

Q4:方舟编译器开源路标是怎样的?
A4:方舟编译器从 2019 年 8 月开始开源,欢迎广大的应用开发者、手机厂商、软件从业人员一起共建开源社区和生态。 开源计划大体上这样安排:2019 年 8 月重点开源框架部分;后续将陆续开源编译器前端、后端;支持 Java 程序编译、JavaScript 语言应用的编译等。

Q5:还有哪些方式可以获取方舟编译器的相关信息?
A5:方舟编译器有微信公众号:开源方舟编译器。大家可以关注,及时获得相关信息。
Q6:方舟编译开源面向全球开发者吗?英文网站何时上线?
A6:方舟编译器是向全球开发者进行开源,因此,官方网站和代码托管平台均面向全球开发者开放。目前英文版网站正在紧张的开发及内测,计划将于 2019 年 Q4 上线。

Q7:方舟编译器源码托管计划是怎么的?
A7:孵化委员会期间,方舟编译器代码是托管在华为云上面。在未来走向开放治理以后,将由所挂靠机构选择的平台进行托管。如果挂靠的机构采取了 X 平台,我们就采用这个机构的代码托管模式进行托管。

当前代码托管的地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler

所有相关信息请以方舟编译器开源官方网站发布为准。

Q8:方舟编译器开源使用的是什么License?
A8:方舟编译器采用木兰 License。 木兰 License 由业界众多专家和公司集体共建,并非华为主导。木兰 License 具体的好处,详见专业点评:

开源中国
开源社
InfoQ

Q9: 如何确认下载包来源可靠?MD5校验码是多少?
A9:OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz 包的 MD5码是: e7dc8b8c242f2d26429e2ad71dae3112

OpenArkCompiler-0.2.tar.gz 包的MD5码是:1bf859a67c8b9a2d4080bdaf25ef6181

本文引用链接
https://www.52pojie.cn/thread-1017216-1-1.html
https://www.openarkcompiler.cn/home

你可能感兴趣的:(华为,方舟编译器,源代码,编译器)