0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

方舟编译器开源核心代码的揭示

电子工程师 来源:郭婷 作者:网络整理 2019-09-04 10:05 次阅读

于无声处起惊雷!华为官方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都能与方舟编译器适配,用户、应用厂商和开发者各方都能感到“稳了”,这事儿才真的算是“稳了”。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 手机
    +关注

    关注

    34

    文章

    6683

    浏览量

    154936
  • 华为
    +关注

    关注

    215

    文章

    33600

    浏览量

    247108
  • 编译器
    +关注

    关注

    1

    文章

    1575

    浏览量

    48606
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    156
收藏 人收藏

    评论

    相关推荐

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言和编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 1044次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 404次阅读
    <b class='flag-5'>编译器</b>的优化选项

    OpenHarmony 的js引擎用的是方舟编译器

    OpenHarmony 的js引擎用的是方舟编译器吗?方舟编译器不是用来编译吗?
    发表于 10-09 09:32

    Keil修改ARM编译器及配置方法

    Keil MDK自 V5.36 版本之后,默认就不带 Arm Compiler V5版本编译器。如果需要使用 V5 版本编译器,就需要自己下载并安装。
    发表于 09-19 10:41 2160次阅读
    Keil修改ARM<b class='flag-5'>编译器</b>及配置方法

    C语言编译器代码优化及volatile详解 - 第14节 #硬声创作季

    函数代码c语言编译器
    充八万
    发布于 :2023年09月01日 13:32:35

    ARM编译器优化版本1.0

    ARM编译器armcc可以优化您的代码以实现小代码和高性能。 本教程介绍了编译器执行的主要优化技术,并解释了如何控制编译器优化。 本教程假定
    发表于 08-28 07:11

    RealView编译工具4.0版编译器参考指南

    。 要在严格模式下编译,请使用命令行选项--Strong。 GNU模式在GNU模式下,相关源代码语言的所有GNU编译器扩展都是可用的。 例如,在GNU模式下: ·当源语言为C90、C99或非严格C++
    发表于 08-18 06:13

    RealView用于BREW编译器和库的编译工具指南

    C标准C++实现定义。 ARM C++编译器还可以编译标准C++的子集,即eMbedded C++(EC++)。 EC++是标准C++的一个子集,它为嵌入式系统提供了高效的代码。 EC++对ISO标准的修订正在发展中。
    发表于 08-12 07:38

    ARM编译器5.06版ARMCC用户指南

    。 源代码提供一个或多个包含C或C++源代码的文本文件的文件名。 默认情况下,编译器在当前目录中查找源文件并创建输出文件。 如果源文件是程序集文件,即扩展名为.s的文件,则编译器会激活
    发表于 08-12 07:15

    Arm编译器6.6版armclang参考指南

    Arm®编译器armclang参考指南提供了Arm编译器armclaang的用户信息。armclang是一个优化的C和C++编译器,它将标准C和标准C++源代码
    发表于 08-11 07:35

    如何为Arm编译C和c++代码

    编写C或C++应用程序时,需要使用编译器工具链将其编译为机器代码。然后,您可以在基于Arm的处理上运行此编译的可执行
    发表于 08-02 17:28

    为什么IAR编译器开源ISA:RISC-V业务至关重要?

    为什么IAR编译器开源ISA:RISC-V业务至关重要? 演讲ppt分享
    发表于 07-14 17:15 2次下载

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制器开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C编译器更适合8051内核。 SDCC是命令行固件开发工具,含预处理器、编译器
    的头像 发表于 06-16 15:19 3641次阅读

    峰会回顾第6期 | 毕昇编译器与OpenHarmony RISC-V生态的进展

    设计经验,负责探索先进软硬件协同设计技术、工具以及方法。   文章内 容来 源 第一届开放原子开源基金会OpenHarmony技术峰会——开发者工具分论坛   视频回顾   正 文 内 容   由C、C++、Java等高级语言编码的人类可读源代码需要通过
    的头像 发表于 05-05 15:46 1125次阅读
    峰会回顾第6期 | 毕昇<b class='flag-5'>编译器</b>与OpenHarmony RISC-V生态的进展

    R32C/100系列C编译器包V.1.01 C编译器用户手册

    R32C/100系列C编译器包V.1.01 C编译器用户手册
    发表于 04-28 19:54 1次下载
    R32C/100系列C<b class='flag-5'>编译器</b>包V.1.01 C<b class='flag-5'>编译器</b>用户手册