华为方舟编译器深入解读:已有45款第三方应用

国际新闻 浏览(954)

8月31日,华为ArkCompiler正式开通源,官方网站已在线,源代码包,二进制包已提供下载,相关文件,演示等信息也可提供。

这个Ark编译器开源是编译器框架源代码的一部分,包括编译器中间表示(IR)和语言编译实现,同时编写编译器的其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。

开发人员可以基于开源代码+二进制构建编译器工具链,并尝试编译Java程序。

社区参与者可以通过框架源代码学习Ark编译器的编译器中间表示(IR)和基本的中端编译框架,熟悉Ark编译器的架构思想,并参与编译器的优化等贡献。中端。

[方舟编译器的优点]

根据华为的介绍,Ark编译器是一个统一的编程平台,旨在支持多种编程语言和多个芯片平台的联合编译和操作。它包括关键组件,如编译器,工具链和运行时。它仍在不断发展。在上面,这些功能将被实现和开源。

通过多语言统一的IR表示,Ark编译器可以在应用程序中实现多种编程语言的联合编程优化优化性能,并提供方便的开发和部署策略,以在支持多个平台的同时根据设备特性提高效率。

华为Ark编译器提供了新的系统和应用程序编译和操作机制。从动态编译到静态编译,它直接将高级语言编译成机器代码,完全消除了虚拟机动态编译的开销,实现了开发。兼容运营效率。

1.多语言协会

在同一应用程序中组合并联合优化不同的语言代码,以消除语言之间的性能“差距”并降低开发人员优化成本

2,轻量化运行时间

使用编译器的语言实现和优化功能,应用程序运行时间更便宜

3.软件和硬件协调

编译器和芯片实现软硬件协同优化,充分发挥硬件能效,更好的应用体验

4.多平台支持

支持各种终端设备平台的编译和运行,提供基于设备特性的便捷开发和部署策略,提高开发效率

[方舟编译器的架构设计]

目前的Ark编译器支持Java/Kotlin程序字节码的前端输入,并且对其他编程语言(如C/C ++/JS)的支持仍在规划之中。

Ark编译器的中间表示(IR)转换器将前端输入转换为Ark IR并将其提供给后端优化器,后端优化器最终生成二进制文件,二进制文件与编译器运行时库文件链接以生成可执行文件Ark中的文件。该文件可以在运行时环境中执行。

Ark Compiler IR是一个支持程序编译和操作的中间程序表示。程序源代码中的任何信息都有助于程序分析和优化,因此Ark IR的目标是尽可能完整和详细地提供有关源程序的信息。

[Ark编译环境配置]

- 推荐的硬件配置

Ark编译器硬件配置要求不高,最低只有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编译器

主要用于编译Ark编译器代码。

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

将它放在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}是打开的arkcompiler源根目录。

安装Ninja,GN和完整配置

- Ninja,GN

下载忍者(v1.9.0)和GN(Linux版)忍者,地址:

GN下载地址:

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

[方舟编译器常见问题]

Q1:Ark编译器开源是否有官方网站?

A1:

在潜伏期间,官方网站是正式毕业后的官方网站即将确定。

Q2:Ark编译器是一次性的所有代码吗?

A2:

第一个开源范围是编译器IR(参考表示),RC(参考计数)和多语言设计思想等,用于与工业界和学术界沟通。后续开发的开源编译器前端,后端,支持编译其他语言(如JavaScript)。

此开源代码中不包含对某些当前Java语言功能和JVM虚拟机功能的支持,包括注释,lambda表达式,泛型等。

仍然有许多地方不完美,它们将在社区中进行迭代。如果您遇到问题,请在社区中提交问题。

问题3:通过哪些渠道,我可以获得Ark编译器的框架源代码?

A3:

在孵化期间,开发人员可以通过以下代码托管网站获取相关代码和文档,以便参考学习和理解Ark编译器的体系结构和代码。

华为云主机地址:

开源中国代码云托管地址:

Q4:Ark编译器的开源路标是什么?

A4:

Ark编译器于2019年8月开始开源,欢迎应用程序开发人员,手机制造商和软件从业者共同建立开源社区和生态。

开源计划基本上是以这种方式安排的:2019年8月的关键开源框架部分;后续的开源编译器前端和后端;支持Jav程序编译,JavaScript语言应用程序的编译等。

问题5:我还有哪些方法可以获得有关Ark编译器的信息?

A5:

Ark编译器有一个官方的微信公众号:开源方舟编译器

问题6:Ark是否为全球开发者编译开源?英文网站何时在线?

A6:

Ark编译器是世界各地开发人员的开源软件,因此官方网站和代码托管平台对全世界的开发人员开放。

目前,该网站的英文版正在紧张开发和内部测试,并计划于2019年第19季度上线。

Q7:什么是Ark编译器源托管计划?

A7:

在孵化委员会期间,Ark编译器代码托管在华为云上。

在未来开放治理之后,将关联由附属组织选择的平台。如果附属组织采用X平台,它将由该机构的代码托管模型托管。

当前代码托管地址:

所有相关信息均受Ark Compiler Open Source官方网站发布的约束。

问题8:Ark编译器开源使用的许可证是什么?

A8:

Ark编译器使用Mulan License,由许多行业专家和公司共同建造。它不是华为主导的。有关详细信息,请参阅专业评论:

开源中国:

开源社区:

InfoQ:

Q9:如何确认下载包的来源可靠?什么是MD5检查代码?

A9:

OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz二进制包的MD5代码为:e7dc8b8c242f2de2ad71dae3112

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

[Ark Compiler Partner]

根据官方网站的介绍,至少有45个第三方应用程序支持华为Ark编译器,这是一个非常大的用户应用程序,每个人都熟悉,但还没有看到微信。

具体清单如下:

http://www.whgcjx.com/bdsU/yB52A7