vlambda博客
学习文章列表

话不多说、代码拿来:方舟编译器开源的“核爆”威力


撰文 | 懂懂   编辑 | 秦言

来源:懂懂笔记


于无声处起惊雷!华为官方8月31日正式将方舟编译器对外开源。


8月31日,华为方舟编译器开源网站上线,开发者可以通过华为云与开源中国代码托管网址获得相关代码和文档,以便参考学习、了解方舟编译器的架构和代码。可以说,对于全球终端用户、开发者以及应用厂商而言,“方舟”开源都有着非凡的意义。


方舟编译器的作用是什么?从华为终端CEO余承东的表述来理解,方舟编译器能改善应用运行效率,从原先的边解释边执行转变为全程机器码高效运行程序。


那么开源的意义又是什么?在懂懂看来,此举既是诚邀广大开发者共同“携手”,也是向应用厂商发出提升手机用户体验的要求,目的很简单——共同打造共赢的生态系统。如果没有开发者和应用厂商的协力,没有整个行业参与者对其持续地重构和优化,一个生态系统很难打造出来,也很难形成庞大的用户群体,更难以形成一个从手机到万物互联全面渗透和覆盖的生态系统。

话不多说、代码拿来:方舟编译器开源的“核爆”威力
No.1
十年磨一剑 方舟开源谋定后动

2009年华为成立编译组,方舟编译器雏形诞生,至今其研发已经走过了十年历程,堪称十年磨一剑。


从华为公布的相关信息来看,方舟编译器并不仅仅是从高级语言到机器码进行了“万能翻译”,而是成为一个编译运行系统。这个编译系统不仅实现了词法分析、语法分析、代码生成等功能,更在IR设计和算法优化方面进行了深入地尝试。


方舟编译器首先解决了Java程序编译的两个难题:JNI调用的开销巨大,动态特性导致全程序优化难以实施。通过将不同语言通过统一IR表示、统一优化算法,将不同语言间的“翻译”开销尽可能减少,手机安装App应用后可更快地运行程序,同时以轻量化的运行时降低传统虚拟机的开销,实现效率的提升。


其次,方舟编译器针对Java代码效率提升,尝试了在开发者环境中进行高度编译优化的方法,相当于是用空间换性能,让编译器不再被手机的硬件和系统能力制约,同时也通过编译优化能力增强为代码优化提供了更多的可能性。


最后,方舟编译器在Java上实现了基于引用计数的内存管理方法,结合自身机制的优化+开发者的联动,有望实现应用在运行过程中内存随用随收,没有了虚拟机“集中回收”这个动作,减少了运行时给应用带来的卡顿。


如今,很多人已经离不开手机上的各种应用,而更加顺畅的体验,自然意味着新的行业发展机遇,更是新的商业规则的建立。


我们可以从8月31日启动开源这一举措可以看出,方舟编译器所谋不凡。


众所周知,软件的开源,目的就是让开发者和第三方厂商一同参与进来,这样源码才会在不断地重构和优化中激活、升华。


方舟编译器的特点正在被业界所了解,而通过开源社区,开发者和厂商将进一步推动相关技术和应用的进步,华为更可以从开源社区的重要玩家逐渐走向开源的领跑者。


从方舟编译器开源后的相关举措,可以看出“重要玩家”背后满满的诚意。


首先,本次方舟编译器开源直接开放了编译器最核心的代码,揭开了其技术核心特征。对编译器爱好者来说,可以一探华为方舟背后的设计思路。


其次,此次开放的框架代码搭配了编译器等其他二进制组件,实现Java程序到aarch64汇编指令的编译过程。因此开发者可以基于开源代码+二进制,编译构建出编译器工具链。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,进而参与到对编译器中端优化的工作中。另外,开发者还可以通过代码托管平台参与社区贡献,并在此平台上反馈相关问题和需求。


这些举措看似平淡无奇,但是仔细观察,可以发现诸多开源举措的背后,也彰显出了华为对于自身技术的自信态度,更可以看到华为打造手机生态圈、吸引全球技术人员和企业参与的使命感。


这种自信,既来自与华为对手机行业的前瞻性思考,也来自其对未来IoT尤其是智能生活领域的筹谋。之所以这么说,是因为方舟编译器此次开源,不能孤立地视为是一个手机编译系统的开源,其背后还有围绕华为EMUI不断迭代升级所推动的极致用户体验,以及全场景智慧生活的战略。

话不多说、代码拿来:方舟编译器开源的“核爆”威力
No.2
无生态不开源 Show me the code


从EMUI升级到5.0时,华为就将手机卡顿这一安卓系统的行业性难题作为重要课题。在EMUI5.0发布时,华为承诺手机系统“18个月持久流畅”;在EMUI8.2版又推出了“很吓人的技术”——GPU Turbo,主要作用是提升手机性能的同时降低了功耗;在EMUI9.0时华为推出了Link Turbo全网络聚合技术,聚焦单一网络下网速的大幅提升;到了今年年初升级到EMUI9.1时,两大革命性创新——EROFS超级文件系统和方舟编译器才正式“曝光”,而华为发力安卓系统底层性能优化能力的实力也为外界所认知;直至8月初EMUI10发布,EMUI的使命已经成为“开启全场景智慧生活的钥匙”。


显然,这些随着EMUI不断迭代而出现的黑科技,是华为多年来持续不断投入巨资研发(每年超过营收10%)的结果。同时,华为并没有独享其乐,而是希望通过开放、合作和共赢,打造一个开放式创新的生态氛围。


软件生态建设的难度,无疑比OS本身的研发更大。此前倪光南院士就公开表示,操作系统这类软件的市场竞争不能依靠性价比,而是要依靠生态体系。因为有生态,才能有应用,才能形成良性循环。而开源,无疑正式建立健康、可持续发展的生态体系的基础。


从此次方舟编译器的开源,可以看出华为从开源领域的积极参与者变为主动引领者的决心,只有以更加积极的姿态引领行业,才能为用户带来更好的体验,打造共赢的生态。


不少网友在关注方舟编译器的同时,也在关注鸿蒙系统的进展。


在国际环境变幻莫测的局势下,这种关注自然在情理之中。无论是网友热议的方舟编译器,还是未来的鸿蒙系统,都有可能在开源方式的驱动下从不同维度打造出一个更具有竞争力的生态体系。


当然,目前方舟编译器的开源还只是万里长征的一小步,而外界已经有声音在“方舟”初露锋芒时,就猜测其会先让安卓“加速",之后则是为鸿蒙打下“地基”。在这里我们不做过多揣度,但是不妨横向分析一下其他手机企业在自主系统方面的得失。


过去近十年里,在安卓逐步壮大的同时,业界也在尝试打造新系统。除了业界熟知的微软WP,也有一些略为不起眼的例子。2012,诺基亚在MeeGo的基础上开始研发旗鱼系统,期望将塞班和旗鱼作为挑战安卓的抓手,但是仅不到一年半的时间,诺基亚就停了系统更新。


同样在这一年年初,Tizen系统最初版本发布时,作为发起者的三星电子、英特尔以及两大Linux开源社区无不对其给予了厚望。但是如今外界已经看不到搭载Tizen的三星手机产品,只能在三星智能电视上窥见其真容。


而在国内市场,阿里也曾在2014年以5.9亿美元投资魅族手机,旗下阿里云OS成为后者魅蓝系列的搭载系统。但是到了2017年后,随着魅族市场份额的下滑,合作也无疾而终。


对于这些手机行业知名品牌的相关案例,外界有着无数的分析和评论。但在懂懂看来,没有能够形成强大的软件生态系统,是失利的主要原因。


没有广大的应用软件开发商、开发者和跨界合作伙伴共同融入到生态体系中,自然也就得不到用户的认可,而缺少用户,自然也就无法引起各方的持续投入。




至少从目前来看,华为在开源一事上的决心和信心都彰显无遗。华为目前在全球具有重大国际影响力的开源社区中,拥有十多个董事席位,以及200多个TSC、PTL、Core Committer席位。同时,作为Linux基金会白金成员,华为对Linux kernel累计贡献6800+补丁,在5.1 Release版本中排名超过谷歌、IBM等国际厂商,是TOP 5中唯一的亚洲厂商。


对于“方舟”,做远比说要更为重要。正如用Linux之父托瓦兹的那句名言:Talk is cheap,Show me the code!在智能手机市场,在IoT时代,只有开放代码,开放资源,开放利益,才能建立真正意义上的共赢生态。


【结束语】


对于普通用户而言,方舟是什么并不重要,只要经过编译的App下载后用着流畅,就是真的舒适。而对于开发者和应用软件企业来说,能够软件开发一键打包,全部自动适配,开发人员省时省力才是硬道理。虽然就本次开源的部分看方舟编译器还有许多不够成熟完备之处,但以华为的技术实力,相信未来一定会逐渐完善起来。


未来,如果主流的App都能与方舟编译器适配,用户、应用厂商和开发者各方都能感到“稳了”,这事儿才真的算是“稳了”。
















     推 荐 阅 读