华为终于放出方舟编译器源代码!

乾明 边策 发自 凹非寺
华为方舟编译器终于正式开源,源代码放出,兑现了在8月开源的承诺 。
代码不在GitHub,而是在自家开源平台上 。这也意味着,华为开源平台也同时问世 。
根据官方信息,这次方舟编译器开源信息内容主要有:

编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现JAVA程序到aarch64汇编指令的编译过程 。
开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译 。
社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献 。
华为终于放出方舟编译器源代码!

文章插图
开源地址:
https://www.openarkcompiler.cn/home
这是华为兑现开源承诺的第一步,也备受开发者们期待 。
有网友认为,方舟编译器的开源,将提升Android的流畅性,缩小与IOS系统的差距 。
对于华为来说,也是自证实力的体现 。
此前华为曾大力宣传方舟编译器对手机性能的提升,有人质疑华为的技术能否达到此前声称的水平,以及质疑国内公司的自主创新能力 。
将代码开源,无疑会打消这些开发者的疑虑 。
方舟编译器终开源
早在8月29日晚,华为就放出预告,在8月31日开源方舟编译器,很多用户一大早就开始等待了,大家感受下氛围:
华为终于放出方舟编译器源代码!

文章插图

华为终于放出方舟编译器源代码!

文章插图

华为终于放出方舟编译器源代码!

文章插图
但是直到下午3点左右,开源方舟编译器官方才能够访问 。到了傍晚,华为才正式放出代码,但从代码的时间线来看,“赶工”痕迹明显 。
不过很多网友对华为此举表示理解,一位名为“Gh0u1L5”知乎网友的评论获得了广泛的认同:
华为终于放出方舟编译器源代码!

文章插图
代码放出之后,有匿名开发者第一时间下载试用方舟编译器后发表评论,得到2.5K赞同:
华为终于放出方舟编译器源代码!

文章插图
知乎链接:
https://www.zhihu.com/question/343431810
从华为的代码平台来看,开源方舟编译器只是搭建鸿蒙生态系统的第一步,华为今后将在自家平台上陆续发布更多鸿蒙OS细节 。
方舟编译器开源了什么?
方舟编译器,是华为历时十多年研发出的编译器,是一种静态的编译方式,于今年4月份正式对外公布 。
现有的安卓系统,运行一个应用程序首先启动虚拟机,然后读入应用代码逐条解释执行,无法做到100%做到摆脱虚拟机,这也是当前安卓阵营面临的问题 。
华为方舟编译器的静态编译方式可将语言里的动态特性直接翻译成机器码,手机安装应用程序后可全速运行程序,彻底干掉了虚拟机,极大提升了系统运行效率 。
华为官方表示,方舟编译器对手机App运行速度提升极大 。
使用EMUI 9.1的华为手机,对系统主要服务System Server进行静态编译化后,系统流畅度提升了24%,系统响应性能提升了44% 。
华为以第三方微博极速版为例,经过方舟编译器静态化编译后,流畅度提升高达60% 。
在2019华为开发者大会期间,余承东也透露了方舟编译器的新动向,未来能支持多语言统一编译,C、C++、Java、JS、Kotlin等都能支持,甚至可以混合编译 。
华为终于放出方舟编译器源代码!

文章插图
这次方舟编译器开放的框架代码,包括中间语言 IR 框架和编译器中端基础实现,同时搭配编译器其他二进制组件,实现 Java 基础源码到 ARM64 汇编的编译过程 。
华为表示,开发者可基于开源代码+二进制,编译构建出编译器工具链,支持对特定 Java SampleCode 的编译 。
社区参与者可以通过框架源码学习方舟编译器的中间语言结构(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与到诸如编译器中端优化 PHASE 的贡献里 。
华为终于放出方舟编译器源代码!

文章插图
具体来说,方舟编译器框架代码可完成 java 静态编译,包括类层次关系分析、虚方法表和接口表的生成、native 函数的处理等,以及基于引用计数的内存管理方式,提供朴素的 RC 插入功能 。


推荐阅读