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

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

3天内不再提示

华为方舟编译器开源官网正式上线,代码没有放在GitHub

DPVg_AI_era 来源:lq 2019-09-13 16:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

昨日,华为方舟编译器开源官网正式上线,代码没有放在GitHub,而是放到了开源中国的码云上。此次方舟编译器的开源打响了鸿蒙OS开源的第一枪,未来将有更多开源陆续放出。

Show you the code! 8月31日,华为方舟编译器开源官网正式上线,余承东也在微博上公布了相关消息。

方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。

方舟编译器整体框架

值得关注的是,此次方舟代码没有放在GitHub,而是放到华为自建的开源平台,以及开源中国的码云上,目前已收获876颗星。

官方网站: https://www.openarkcompiler.cn 代码托管网站: https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler 码云镜像仓库地址: https://gitee.com/harmonyos/OpenArkCompiler

鸿蒙OS开源第一枪,更多开源陆续放出

此次方舟编译器的开源打响了鸿蒙OS开源的第一枪,首次开源范围是编译器 IR( Intermediate Representation)、RC(Reference Counting)和多语言设计思想等,用于与业界、学术界沟通交流。

后续将陆续开源编译器前端、后端,支持其它语言(如 JavaScript)的编译等,当前部分Java语言特性和JVM虚拟机特性的支持未包括在本次开源代码中,包括:annotation、lambda表达式、泛型等。

华为消费者 BG 软件部总裁王成录表示方舟编译器代码会陆续开源 根据之前华为在开发者大会上公布的信息,作为鸿蒙OS的重要工具,方舟编译器从2019年8月开始,将分步骤持续进行开源。

具体的开源计划如下: 2020年:开始对Java编译器工具链开源,支持Java程序编译。 2021年:开始对JavaScript编译器工具链开源,可用于JS程序的编译。

方舟编译器开源路标(绿色部分是本期开源内容,蓝色部分待开源)

演示样例

华为提供了HelloWorld、Exception 异常处理、RC 引用计数、Tread多线程等多个演示样例:

样例:HelloWorld 方舟编译器的4大优势:

1、多语言联合将同一应用中的不同语言代码联合编译、联合优化,消除语言间的性能“鸿沟”,降低开发者的优化成本

2、软硬件协同编译器与芯片实现软硬件协同优化,充分发挥硬件能效,应用体验更佳

3、轻量运行时通过编译器的语言实现能力和优化能力增强,应用运行时的开销更小

4、多平台支持支持面向多样化的终端设备平台进行编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率 方舟编译开源面向全球开发者

方舟编译器面向全球开发者进行开源,因此,官方网站和代码托管平台均面向全球开发者开放。目前英文版网站正在开发及内测,计划将于 2019 年 Q4 上线。

45 家合作伙伴 此外,从官网给出的介绍看,目前已有至少45款第三方应用支持华为方舟编译器,都是大家耳熟能详的超大用户量APP。

如何评价方舟编译器?不如去读代码

既然华为已经Show you the code,代码是检验成色的唯一标准,开发者也可以通过代码托管平台参与社区贡献。 开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达(IR)及基本的中端编译框架,熟悉方舟编译器的架构思想,并参与诸如对编译器中端优化的贡献。 根据说明,目前方舟编译器的代码托管在华为云,在未来走向开放治理以后,将按照所挂靠机构的模式来托管。开发者可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。 下面是知乎用户周刚的评论,新智元经授权转载:

的确是通过中间语言 (IR) 来实现的,被 IR 接管的部分不管是不是静态语言,都变成了一种前端描述语言;因为是部分实现 (只可能做到部分),那其他语言的 runtime 必须得保留,从逻辑上讲在 Android 上 JVM 还得继续存在,好像和之前华为开发者大会说的完全静态化不太一样;语言层面的静态化并不是一个新鲜概念,但基本上都是针对单一语言而言,多语言的静态化对我来说的确是第一次看到 (想了下这种做法其实是华为目前最好的选择了),考虑到语言的衍生面,这种做法从工作量来讲的确非常非常硬核,并且这种硬核更多的应该还是 runtime 部分的工作量:相当于做了一个 runtime 中间层来负责 API 转发 (这部分不开源);

开发者大会被吹上天际的 GC 机制的确是我当时预测的 Reference Counting 机制;

vTable 的实现有点意思,我一直挺喜欢 js 的原型链设计,方舟的实现相当于一种固定长度 (24 个) 的原型链设计,这种做法很务实;

最后吐槽一下:

文档的排版,用例和组合方式为什么看起来象实习生做的;

C/C++ 的编程规范虽然很务实,但既然要开源拿出来见人,能不能也好好组织一下前后逻辑;

为什么 3 分钟开源就由 Public 转成了 Private;

十年方舟,再造安卓

关于方舟编译器的前世今生,可以参考新智元之前推荐的“菊厂搞机”的一篇文章《十年磨一剑!万字长文剖析华为方舟编译器的前世今生》: 可能很多人不知道,华为为方舟编译器准备了十年。 2009年,华为启动5G基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入。 2013年,华为推出面向基站领域的自研编译器HCC,并正式提出编译器框架构想。 2014年,众多海内外专家加入华为,方舟项目正式启动。 2016年,成立编译器与编程语言实验室。 2019年,华为方舟编译器正式面世!

这十年,每一次攻关都蕴含着华为软件工程师们的倾力投入,每一个进展都值得铭记。 2017年5月,方舟编译器上第一个Java程序“Hello World”跑通。 2017年8月的一个凌晨,在华为的一个实验室里,项目组已经连续数日24小时不间断攻关,却始终看不到success的返回信息。绝望之下,工程师把所有通信数据打印出来,逐个字节排查,最终发现有一处字节的顺序不一致。纠正后,华为方舟跑通了第一个安卓后台服务DiskStatus,这标志着对安卓的换心手术进入了实操阶段。 2018年春节前一周,方舟编译器跑通安卓系统所有后台服务,并成功移植到手机。当晚,所有人聚集在实验室的机房中,等待首个开机画面加载成功的神圣时刻。秒针滴答,如同过了一个世纪那么久,屏幕终于点亮。 欢呼,拥抱,一蹦三尺高,项目组成员们到底没忍住,留下了激动的泪水。 接下来,项目组在除夕前夜启动了方舟编译手机的Beta测试。大年初一清晨,总架构师发来了第一条经编译器编译的运行程序发出来的拜年消息:

春节快乐,方舟大吉!

当P30发布会上“方舟”甫一出现,就在中国软件行业“炸”了锅。无数软件从业者从一开始的质疑,到弄清方舟真相后的惊叹……这些都是对华为软件工程师们十年如一日、一点一滴“啃硬骨头”的致敬! 实际上,方舟已经不是传统意义上从高级语言到机器码的“万能翻译”,更是一个编译运行系统。一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。如果说目前最新的安卓系统是和谐号动车,那么经方舟编译的安卓系统便是高铁,是“复兴号”。 华为手机直接通过方舟编译器替换了Android system-server的所有后台服务,这一项就已经足够让华为EMUI比其他安卓系统更快一步。根据华为官方测试,方舟编译器提升手机系统操作流畅度高达24%,系统响应性能提升44%。入手P30系列的用户,应该已经体验到了。

另一方面,方舟编译器用空间换性能,直接将编译器的代码优化搬到了开发者环境,不再被手机端的硬件资源所限制,为代码优化提供了无限可能。 此外,经测试,新浪微博极速版APP经方舟编译后,操作流畅度提升高达60%。 解决安卓的四大命门,出于安卓,胜于安卓,超越iOS,并且全面兼容安卓,这就是华为方舟编译器的使命!安卓卡顿再见!方舟的一个使命,就是解决安卓虚拟机GC内存回收带来的“Stop World”。 目前安卓手机内存资源不够用的时候,GC直接叫停所有应用,所以偶尔会遭遇莫名卡顿。 方舟编译器采用了引用计数法(RC,Reference Counting)来进行内存的实时回收,并且配合使用了专门的消除环算法(消除对象互相引用带来的无法回收问题),来避免GC集中式回收带来的系统卡顿。相比GC,方舟的内存回收是实时的而非集中式的,且不需要暂停应用进程,这样便大大消除了卡顿。

如果把内存回收比作成打扫房间,那么GC的策略是专门有一个卫生员,看房间里垃圾太多了,就把所有人请出去,打扫完了再让大家回来。而方舟的RC则是每个人收拾自己的垃圾,用完就清理,保持清洁的同时不影响人的正常活动。 软件有一个大家很熟悉的死循环,就是电脑被一个无限循环的运行程序把计算机资源占光。

这种“死循环”在软件中叫“环引用”。为了从机制避免手机内存被环引用“吃掉”,方舟编译器引入annotation的“告警”标示,对基础类的环进行标注。当然,Java程序员也可以对业务代码中的环进行标注。经过丰富的实践验证,方舟这种机制可减少大部分程序中环的出现。 另外一方面,方舟编译器在运行状态下引入了高效的环回收机制,允许有选择的智能回收某个APP的内存占用,这对传统的环回收算法是一个非常棒的改进。Stop World,安卓卡顿,再见!

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

    关注

    218

    文章

    36284

    浏览量

    262997
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

    52074
  • GitHub
    +关注

    关注

    3

    文章

    489

    浏览量

    18796
  • 方舟编译器
    +关注

    关注

    0

    文章

    63

    浏览量

    833

原文标题:鸿蒙OS终于现身!华为方舟编译器开源,代码没放GitHub

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    模力方舟上线DeepSeek-V4系列大模型

    围绕这一方向,DeepSeek 在今天上推出了DeepSeek-V4,现已在模力方舟正式上线
    的头像 发表于 04-30 10:35 472次阅读
    模力<b class='flag-5'>方舟</b><b class='flag-5'>上线</b>DeepSeek-V4系列大模型

    模力方舟现已正式开源官方Skills仓库Moark Skills

    模力方舟现已正式开源官方 Skills 仓库 Moark Skills,首批上线图像生成、OCR、文档内容提取和文本合规审查四个技能模块。开发者和用户只需将技能文件导入 OpenClaw,Agent 即可通过自然语言直接调用这些
    的头像 发表于 03-03 16:47 1579次阅读
    模力<b class='flag-5'>方舟</b>现已正式<b class='flag-5'>开源</b>官方Skills仓库Moark Skills

    月之暗面全新开源旗舰模型Kimi K2.5上线模力方舟

    模力方舟平台现已上线来自月之暗面(Moonshot AI)发布的全新开源旗舰模型Kimi K2.5。
    的头像 发表于 01-29 10:20 1375次阅读
    月之暗面全新<b class='flag-5'>开源</b>旗舰模型Kimi K2.5<b class='flag-5'>上线</b>模力<b class='flag-5'>方舟</b>

    航智传感专用供电电源选购指南|上线,欢迎选购

    航智传感专用供电电源产品现已在同步上线,可与航智电流传感、电压传感配套选型。如需选型建
    的头像 发表于 01-04 11:57 812次阅读
    航智传感<b class='flag-5'>器</b>专用供电电源选购指南|<b class='flag-5'>官</b><b class='flag-5'>网</b>已<b class='flag-5'>上线</b>,欢迎选购

    单片机开发功能安全中编译器

    的问题是,防御性编码和外部数据访问等实践并不属于编译器认可的领域。例如,C和C ++都没有为内存损坏留出任何余地,因此,除非在没有这种损坏的情况下可以访问旨在防止内存损坏的代码,否则在
    发表于 12-01 06:44

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言与编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本次分论坛聚焦
    的头像 发表于 11-20 17:24 1282次阅读
    <b class='flag-5'>开源</b>鸿蒙技术大会2025丨<b class='flag-5'>编译器</b>与编程语言分论坛:语言驱动系统创新,<b class='flag-5'>编译</b>赋能生态繁荣

    飞凌嵌入式ElfBoard-Vim编辑之GCC编译器的安装

    GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器,最初是作为GNU操作系统的编译器编写的。GCC是一个编译器套件,包含很多软件包,支持多种语言编译
    发表于 10-15 08:44

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译呢?

    GCC编译器,怎么才能实现c文件中未被调用的函数,不会被编译?有什么编译选项可以设置吗? 移植代码,有些函数没被调用的函数想留在代码里,但不
    发表于 09-28 12:25

    请问如何在keil μVision 5上进行ARM编译器代码优化?

    如何在keil μVision 5上进行ARM编译器代码优化?
    发表于 08-20 07:37

    进迭时空同构融合RISC-V AI CPU的Triton算子编译器实践

    Triton是由OpenAI开发的一个开源编程语言和编译器,旨在简化高性能GPU内核的编写。它提供了类似Python的语法,并通过高级抽象降低了GPU编程的复杂性,同时保持了高性能。目前
    的头像 发表于 07-15 09:04 2352次阅读
    进迭时空同构融合RISC-V AI CPU的Triton算子<b class='flag-5'>编译器</b>实践

    边缘设备AI部署:编译器如何实现轻量化与高性能?

    电子发烧友综合报道 AI编译器是专门为人工智能(AI)和机器学习(ML)模型设计的编译器,其核心目标是将高级的AI模型描述(如计算图、神经网络结构)转换为特定硬件平台(如CPU、GPU、FPGA
    的头像 发表于 07-06 05:49 7055次阅读

    编译器功能安全验证的关键要素

    在汽车、工业、医疗等安全关键型应用中,确保功能安全合规性需要严格的工具链验证。开发安全关键型软件的企业必须遵守ISO 26262、IEC 61508、ISO 62304等国际标准对编译器工具链进行全面的验证。
    的头像 发表于 07-05 13:37 1764次阅读

    微软开源GitHub Copilot Chat,AI编程迎来新突破

    30分,微软首席执行Satya Nadella向大家展示了VS Code的最新AI开源编辑GitHub Copilot Chat。 GitHub
    的头像 发表于 07-02 09:34 1506次阅读
    微软<b class='flag-5'>开源</b><b class='flag-5'>GitHub</b> Copilot Chat,AI编程迎来新突破

    华为正式开源盘古7B稠密和72B混合专家模型

    关键举措,推动大模型技术的研究与创新发展,加速推进人工智能在千行百业的应用与价值创造。 盘古Pro MoE 72B模型权重、基础推理代码,已正式上线开源平台。 基于昇腾的超大规模MoE模型推理
    的头像 发表于 06-30 11:19 1504次阅读

    兆松科技ZCC编译器全面支持芯来科技NA系列处理

    近日,兆松科技(武汉)有限公司(以下简称“兆松科技”)宣布正式发布高性能RISC-V编译器ZCC 4.0.0版本。
    的头像 发表于 06-11 09:56 2091次阅读