方舟编译器的前世今生 您所在的位置:网站首页 国产编译器的发展趋势是什么 方舟编译器的前世今生

方舟编译器的前世今生

2024-07-14 15:58| 来源: 网络整理| 查看: 265

随后,华为召开了一个华为EMUI软件沟通会,其中一项重要的议程就是介绍方舟编译器。在方舟编译器的议程中,对于方舟编译器的开源过程也第一次系统地进行了介绍。其将方舟编译器的开源分为3个步骤: 第1步,在P30发布会上宣布方舟编译器开源; 第2步,在2019年8月的华为开发者大会上对方舟编译器的框架代码开源,让开发者可以研究参考; 第3步,在2019年11月的绿盟开发者大会上,对完整的方舟编译器代码开源,使得开发者可以编译使用。正是这个开源时间表,为后续方舟的开源带来了很多的争议。

2019年8月

2019年8月,华为开发者大会正常召开,但是华为并没有开源方舟编译器。直到8月31日,华为才对方舟编译器的IR框架及部分代码进行了开源。这时候,根据之前规划的时间表,已经略有延迟了。但是,因为这次开源的代码只包含了IR框架及部分相关代码,所以前端、后端都是以可执行文件的形式给出的,并且编译出来的文件无法执行(缺乏运行所需的runtime)。这个状况被广大网友广为诟病,甚至创造了一个新词“按揭开源”来描述方舟编译器。

2019年9月

2019年9月7日,华为在北京研究所举办了方舟编译器首场技术沙龙,现场对方舟编译器的情况进行了介绍,并邀请清华大学、中科院计算所和北京理工大学等方面的老师一起对方舟编译器进行了讨论。华为方面的相关人员在现场提问环节,对方舟编译器最终完全开源的时间节点确定在了2020年。这个时候,相当于华为其实已经对最终开源的时间节点进行了调整。由于4月份的开源时间表有大量的媒体报道,并配有现场的PPT照片,所以广为人知。而技术沙龙上涉及这个话题的相关报道,关注的人并没有那么多,所以很多人并不知道这次调整。对于后续绿盟开发者大会还保持很高的期待。

2019年9月8日,由HelloGCC/HelloLLVM、中科院软件所智能软件研究中心程序语言与编译技术实验室和华为官方一起举办的方舟编译器技术沙龙在上海举行。HelloGCC/HelloLLVM负责人吴伟做了开场介绍,从开源社区的角度谈方舟编译器开源的影响,笔者随后做了方舟编译器开源状况简介的报告。方舟编译器开源社区经理刘果及方舟编译器架构师等人员就大家关心的方舟编译器相关问题进行了解答。

2019年10月

2019年10月23日,中科院软件所智能软件研究中心程序语言与编译技术实验室发布了Toy runtime,改变了方舟编译器一直没有可用runtime,并且无法运行例子程序的状况。Toy runtime只发布了V0.1版本,如图1所示。Toy runtime目前只能支持Hello World的例子程序的运行,但是这对于方舟编译器社区的建设具有特殊的意义。

2019年11月

2019年11月19日,绿盟开发者大会在北京召开。方舟编译器在该大会上只有一个相关主题,即由笔者作为开源社区的代表,以中科院软件所智能软件研究中心程序语言与编译技术实验室的身份,做了名为《拥抱方舟开源编译器: Maple IR 分析及Toy runtime介绍》的分享。方舟编译器在绿盟开发者大会上,并未进行进一步的开源。这和4月份所提出的时间表已经不符合了,但是符合9月份技术沙龙所宣称的在2020年完全开源。

▍图1 Toy runtime V0.1版本

(图源: https://github.com/isrc-cas/pacific/releases)

方舟编译器开源之后,一直保持了一主一备的开源站点。主站点先是建立在华为云上,备份站点是在码云(gitee.com)上。后来,二者进行了切换,码云做为主站点,华为云作为备份站点。在这个不断的调整中,方舟编译器开源的代码不断地重构也开始了,每个工作日都有新的重构代码被公开,但是一直缺乏必要的commit信息和版本号。直到2019年11月22日,方舟编译器开源库上出现了V0.3和V0.3-alpha的版本,如图2所示。

▍图2 方舟编译器V0.3和V0.3-alpha

这两个版本的tag打在了同一个节点上。但是,这两个版本号并没有存在太长时间,不久之后就被删除了。随后,在12月份的时候,正式发布了V0.2.1版本,如图3所示。

▍图3 方舟编译器V0.2.1

(图源: https://gitee.com/harmonyos/OpenArkCompiler/releases/v0.2.1)

2020年1月3日,方舟编译器技术沙龙在杭州举行。在报告分享环节,华为国内研发团队的赵俊民、汤伟等人介绍了他们的工作,Futurewei的叶寒栋、蒋奕、张雁介绍了他们在方舟编译器不同分支所做的工作,吴伟和笔者做了方舟编译器开源社区相关的发展。在技术沙龙的讨论环节,对于后续方舟编译器的开源计划进行了讨论和交流。关于后续的开源计划,经过官方的总结,最终在方舟编译器主站进行了公布,如图4所示。

▍图4 方舟编译器开源计划

(图源: https://gitee.com/harmonyos/OpenArkCompiler)

截至目前,方舟编译器开源部分的代码还在不断地重构和更新,也不断地有新的代码被放出来,目前的主要问题是commit信息太简单,对跟踪和阅读新增代码造成了一定的困扰。

02

方舟编译器的前景

方舟编译器作为国内首个开源的工业编译器,它和业界成熟的编译器还存在着一定的差距,这需要随着时间的发展不断地补齐自身的短板,扩大其相关的生态建设。方舟编译器在其设计之初,就不仅仅是一个编译器,还是一个完整的生态。根据叶寒栋、蒋奕、张雁等人在方舟技术沙龙杭州站上的分享信息来看,方舟编译器的设计包含了程序语言、编译器、Bytecode和VM 等,是要构建一个不依赖于目标平台的程序系统。叶寒栋披露的整个程序系统的架构如图5所示。

▍图5 Maple Programming System

(图源:叶寒栋Maple ProgrammingSystem )

图5的整个系统可以视为一个完整的生态,生态的建设和发展需要时间,也需要更多的参与方乃至最终的用户参与其中。这些因素最终都会决定方舟编译器发展的走向。图5中用了Maple命名整个系统,其实Maple就是方舟的早期命名,后来用Maple来命名IR。

方舟编译器在华为的整个终端生态建设中也是重要的一环。方舟编译器虽然被定义为多语言多平台的编译器,但是目前的主要应用场景还是可以为App提供新的编译和运行方式,这将为华为建设自己的App生态提供重要的支撑。同时,这也为华为后续发展自己的手机系统提供了入口和支撑。

03

参考书籍

《华为方舟编译器之美——基于开源代码的架构分析与实现》

ISBN:978-7-302-56262 -7

史宁宁 编著

定价:69元

扫码 京东优惠购书

04

精彩文章回顾

大数据时代银行如何玩转数据挖掘

Office实训:在Word中用索引文件自动标记关键词和制作索引|附素材+视频

微信小程序实训:基于云数据库的许愿墙|附源码+视频

Python模拟浏览器实训:自动登陆邮箱|附视频

Python爬虫实训:实现图书信息采集|附源码+视频

Spark基本统计--基于DataFrame的API|附视频

Spark算法实例:词频统计

大数据集群的部署实例|附视频

用Excel制作工资条实例|附素材+视频

真题解析│2017年蓝桥杯软件类省赛传统“送分题”

Java 15新增类Record的工作实例|附代码

Dart应用Bloc设计模式实例|附代码

从火种到能源,华为做AI的逻辑链

华为 AI,建造中的全景图

逻辑回归的MATLAB实践|附代码

Python爬虫实例:采集微博博文|附视频

MySQL利用E-R模型的数据库概念设计|附视频

大数据时代银行如何玩转数据挖掘

Office实训:在Word中用索引文件自动标记关键词和制作索引|附素材+视频

微信小程序实训:基于云数据库的许愿墙|附源码+视频

Python模拟浏览器实训:自动登陆邮箱|附视频

Python爬虫实训:实现图书信息采集|附源码+视频

Spark基本统计--基于DataFrame的API|附视频

Spark算法实例:词频统计

大数据集群的部署实例|附视频

用Excel制作工资条实例|附素材+视频

真题解析│2017年蓝桥杯软件类省赛传统“送分题”

Java 15新增类Record的工作实例|附代码

Dart应用Bloc设计模式实例|附代码

从火种到能源,华为做AI的逻辑链

华为 AI,建造中的全景图

逻辑回归的MATLAB实践|附代码

Python爬虫实例:采集微博博文|附视频

MySQL利用E-R模型的数据库概念设计|附视频 返回搜狐,查看更多



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有