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

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

    关注

    35

    文章

    6851

    浏览量

    157419
  • 华为
    +关注

    关注

    215

    文章

    34308

    浏览量

    251188
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49051
  • 方舟编译器
    +关注

    关注

    0

    文章

    60

    浏览量

    186
收藏 人收藏

    评论

    相关推荐

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    C7000优化C/C++<b class='flag-5'>编译器</b>

    Keil编译器优化方法

    我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。
    的头像 发表于 10-23 16:35 324次阅读
    Keil<b class='flag-5'>编译器</b>优化方法

    ida反编译出来代码能直接用吗

    IDA反编译出来的代码通常 不能直接使用 ,这主要基于以下几个方面的原因: 一、代码的不完整性 IDA反编译生成的代码可能缺少原始源
    的头像 发表于 09-02 10:55 514次阅读

    巧用编译器编译警告

    ,那么我们可以在代码中,通过“#error”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图:这样,当客户编译工程时,会出现er
    的头像 发表于 08-30 11:46 280次阅读
    巧用<b class='flag-5'>编译器</b>之<b class='flag-5'>编译</b>警告

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码
    的头像 发表于 07-17 18:28 1475次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 1692次阅读

    Meta发布基于Code Llama的LLM编译器

    近日,科技巨头Meta在其X平台上正式宣布推出了一款革命性的LLM编译器,这一模型家族基于Meta Code Llama构建,并融合了先进的代码优化和编译器功能。LLM编译器的推出,标
    的头像 发表于 06-29 17:54 1459次阅读

    SEGGER编译器优化和安全技术介绍 支持最新C和C++语言

    代码生成,SEGGER编译器生成非常小的代码,非常适合内存受限的环境,而不会牺牲执行速度。 2) 速度优化:在最高优化级别,SEGGER编译器生成尽可能快的
    的头像 发表于 06-04 15:31 1404次阅读
    SEGGER<b class='flag-5'>编译器</b>优化和安全技术介绍 支持最新C和C++语言

    C语言:嵌入式开发中的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。
    发表于 04-26 14:53 550次阅读
    C语言:嵌入式开发中的关键<b class='flag-5'>编译器</b>角色

    KEIL怎么禁止某个函数/某段代码编译器优化?

    有没有大佬知道,KEIL怎么禁止某个函数/某段代码编译器优化?
    发表于 04-10 08:17

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 861次阅读
    QT开发学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    求助,如何将C++代码从GNU移植到Tasking编译器

    需要解决的障碍。 我恳请你帮助我们解决这个问题。 问题 :当前代码是使用 GNU 编译器编译的,代码按定义运行。 但是,我们希望让它在 Aurix TC399 开发套件上运行。 在
    发表于 01-31 07:29

    ADuCM355硬件参考手册——Keli编译

    在 Arm Compiler 5 和 Arm Compiler for Embedded(以前称为 Arm Compiler 6)之间,底层技术发生了重大变化,从专有编译器 armcc 转变为基于开源 LLVM/Clang 的编译器
    的头像 发表于 01-12 09:35 1297次阅读
    ADuCM355硬件参考手册——Keli<b class='flag-5'>编译</b>版

    Triton编译器的原理和性能

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

    TVM编译器的整体架构和基本方法

    生成的开源编译器框架,虽然在我们自己的加速IP上无法直接拿过来用,但是其中的很多方法和思想还是很值得借鉴的。TVM最大的特点是基于图和算符结构来优化指令生成,最大化硬件执行效率。其中使用了很多方法来改善
    的头像 发表于 11-30 09:36 2298次阅读
    TVM<b class='flag-5'>编译器</b>的整体架构和基本方法