今年 4 月,华为在发布 P30 系列手机时推出了「方舟编译器」,它随着 EMUI 9.1 一同放出。华为表示它能够改善安卓应用编译效率,让 APP 从原先的边解释边执行转变为全程机器码高效运行程序。
根据官网信息,方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。方舟编译器还在持续演进中,陆续将上述能力实现和开源。
官方网站:https://www.openarkcompiler.cn
代码托管网站:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
华为官方表示,本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现 Java 程序到 aarch64 汇编指令的编译过程。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对 Java 程序进行编译。
方舟编译器的优势
方舟编译器能更高效地运行程序,而且如果程序本身对华为的 EMUI 和麒麟处理器进行了特别优化,显然可以获得更好性能。华为宣称,方舟编译器可让系统操作流畅度提升 24%,系统响应速度提升 44%,第三方应用重新编译后流畅度可提升 60%。这些提升,很多都是多语言统一 IR 表示及多平台支持等特性提供的。
方舟编译器除了提升手机 APP 性能之外,或许也是华为正在为自己的操作系统、开发工具和开发语言进行技术和用户积累计划的一部分。目前方舟编译器的主要优势有以下几个方面:
方舟编译器的开源
华为开源文档表示,当前方舟编译器支持 Java/Kotlin 程序字节码的前端输入,其它编程语言的支持(如 C/C++/JS 等)还在规划中。
方舟编译器的中间表示(IR)转换器将前端输入转换成方舟 IR,并输送给后端的优化器,最终生成二进制文件,二进制文件与编译器运行时库文件链接生成可执行文件,在方舟的运行环境中就可执行该文件。
目前方舟编译器的源代码已经都放出来了,但并没有在 GitHub 开源。如下所示为开源代码的界面,里面包含了众多代码和文档等文件。