同时,华为还在码云(gitee)上建立了方舟编译器开源代码官方镜像仓库,如今标星已达3.6k。
方舟编译器开源范围
如今,方舟编译器首先在自家平台上开源了自定的编译器IR(Intermediate Representation)——MAPLE IR,RC(Reference Counting)和多语言设计思想等,用于与业界,学术界沟通交流。后续将陆续开源编译器前端,后端,支持其它语言(如Java)的编译。
后续华为也会按照计划在2020年开始开源Java编译器工具链,支持Java程序编译;到2021年开始开源Java编译器工具链,可用于JS程序的编译。
安卓卡顿的“终结者”
华为开发方舟编译器花了十年,为了解决安卓系统的“四大命门”,华为工程师们夜以继日,只为“再造安卓”。
方舟编译器官网上的一篇文章,生动地诉说了这一段历程。
文章地址:
https://www.openarkcompiler.cn/news/detail/news5
2009年,华为启动5G基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入。2013年,华为推出面向基站领域的自研编译器,并正式提出编译器框架构想。2014年,众多海内外专家加入华为,方舟项目正式启动。2016年,成立编译器与编程语言实验室。2019年,华为方舟编译器正式面世!2018年春节前一周,方舟编译器跑通安卓系统所有后台服务,并成功移植到手机。成功开机后,项目组成员甚至流下了激动的泪水!
大年初一清晨,总架构师发来了第一条方舟经编译器编译的程序发出来的拜年消息:
春节快乐,方舟大吉!
方舟编译器的优势在两方面,一是首次在Java领域将去掉了虚拟机,也是史上首次将Java/C/C 等混合代码一次编译成机器码直接在手机上运行,彻底告别Java的JNI额外开销,也彻底告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。
其实这几个文件在未编译之前,在OpenArkCompiler/src/bin目录下就有。读了下OpenArkCompiler目录下的Makefile,其中java2jarjbc2mplmplcg都是直接从src/bin目录之下copy到out/bin目录之下的。只有maple有点特殊,它应该是编译生成的,然后install的时候反向copy到了src/bin目录之下,所以编译完成之后查看状态(git status),会发现src/bin/maple发生了变化。
OpenArkCompiler/Makefile中关于install的代码:
.PHONY: install
install: mapleall
$(shell cp -rf $(MAPLE_ROOT)/src/bin/java2jar $(MAPLE_ROOT)/out/bin/)
$(shell cp -rf $(MAPLE_ROOT)/src/bin/jbc2mpl $(MAPLE_ROOT)/out/bin/)
$(shell cp -rf $(MAPLE_ROOT)/src/bin/mplcg $(MAPLE_ROOT)/out/bin/)
$(shell cp -rf $(MAPLE_ROOT)/out/bin/maple $(MAPLE_ROOT)/src/bin/)
另外附上作者方舟编译器学习笔记系列链接。
方舟编译器学习笔记1:方舟相关资料
https://zhuanlan.zhihu.com/p/80624361
方舟编译器学习笔记2:源码编译
https://zhuanlan.zhihu.com/p/80643681
方舟编译器学习笔记3:方舟可执行文件简介
https://zhuanlan.zhihu.com/p/80693868
方舟编译器学习笔记4:文档导读
https://zhuanlan.zhihu.com/p/80783831
方舟编译器学习笔记5:方舟开始接受代码合并请求
https://zhuanlan.zhihu.com/p/80905553
方舟编译器学习笔记6:方舟开源目录简介
https://zhuanlan.zhihu.com/p/81046562
花粉社群VIP加油站
猜你喜欢