乾明 边策 发自 凹非寺
华为方舟编译器终于正式开源,源代码放出,兑现了在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 插入功能。
开发者也可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。
如何获取方舟编译器?
方舟编译器可以从方舟编译器开源官网上获取,也可以从华为开源代码托管平台上获取,网址为:
https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler
它与GitHub平台一样,都是基于Git。
在使用华为的开源托管代码前,需要注册华为云用户,华为表示后续会支持更多的第三方登录平台。
为了把本地电脑上的Git与远程的华为开源代码托管平台代码仓库连接到一起,需要先进行授权。授权方式有HTTPS或者SSH两种协议可选。
因为同样使用Git版本控制系统,其余操作与GitHub上托管和下载项目代码的几乎完全一致。
下载好代码后,华为推荐的开发环境是Ubuntu 16.04 x86_64 版本,此外还需要安装clang、llvm 8.0.0、openjdk等运行环境。
另外方舟编译器对电脑的硬件配置也有一定的要求,华为给出的推荐配置为:
下载好源代码后,在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径为openarkcompiler/out/bin。
目前,只是针对方舟编译器的框架进行开源。
其后续具体开源计划如下:
2019年第四季度:上线英文版开源网站。
2020 年:开放 Java 编译器工具链,支持 Java 程序编译。
2021 年:开放对 Java 语言的支持能力,可用于 JS 应用的编译。
华为表示,在孵化委员会期间,方舟编译器代码是托管在华为云上面。
在未来走向开放治理以后,将由所挂靠机构选择的平台进行托管。如果挂靠的机构采取了X平台,就采用这个机构的代码托管模式进行托管。
华为打造开源平台
意料之中,华为没有选择在GitHub上开源。至于为什么,也不难理解。
GitHub毕竟是一家“美国公司”。此前因为美国禁令,对位于伊朗等国家和地区的GitHub用户“断供”。
华为现在给出的替代方案,有“两层”。
首先,针对方舟编译器打造了一个开源网站,用于发布围绕方舟编译器的介绍、指南等信息。
其次,自己打造一个开源平台,名为华为开源代码托管平台,托管代码。
https://code.opensource.huaweicloud.com/home
与GitHub不同的是。华为开源代码托管平台并不允许普通开发者托管自己的代码,主要是官方(华为)发布开源代码。
也就是说,这一平台不会支持普通用户以自助的方式创建自己的开源代码仓库。
但是,在华为给出的example中,已经有不少人呼吁,要创建自己的仓库。
从功能上来看,目前上线的平台只是一个早期的版本,但已经有了Fork、克隆、PR、问题(issues)、标星(关注)等功能。
而其他一系列功能,如CI/CD、Wiki、发布与包管理、静态页面生成等等,还需要迭代才能上线。
对于这种情况,有人表示,太简陋了。不过,也有人表示非常理解:
虽然简陋了点,但中国人自己的开源交流平台的产品原型,就此诞生了!
根据华为之前透露的消息,这应该只是华为开源动作的一小部分,但也是华为开源的一大步。
2019华为开发者大会期间,华为消费者BG软件部总裁王成录透露,一两个月后,中国的开源基金会将正式运营起来。
届时,国内的开源基金会也将借鉴国外的运作模式,根据大家在社区的贡献来确定大家的排名。
在这段时间内,华为也先后宣布要开源更多技术,比如面向未来的操作系统鸿蒙OS,以及全场景AI推理框架MindSpore。
这些开源动作,将会以何种面貌问世,仍旧有不少悬念。
但可以预见的是,来自中国本土的开源力量,已经在呈现新面貌,迈出新步伐,甚至创造新宇宙。