华为方舟编译器正式支持C语言,将继续完全开源

2019年8月底,华为方舟编译器(openarkcompiler)正式开源,迈出了跨越性的一步。
一年多来,方舟编程体系陆续实现了编译器、引擎、调试器的开源,其中编译器的重点功能主要集中在java应用程序静态编译上。
华为强调,方舟项目的目标是构建一个基于mapleir的跨语言编程环境,实现跨语言的全局分析及优化。
比如在现有java编程环境下面,开发者经常需要同时编写java、c语言程序,通过jni相互调用,而这两种语言之间目前是不直接互通的。
方舟编程体系的终极愿景之一,就是要通过一致的ir来表述不同语言,并跨越语言进行全局优化。
现在,方舟编译器加入了对c语言程序的支持,当然继续开源,也是实现java和c混合编译的基础。
未来,方舟引擎不仅要对来自java语言的ir代码进行jit编译,也会支持对c、c++语言的ir代码进行jit编译。
代码链接地址:
1、https://gitee.com/openarkcompiler-incubator/mapleall
2、https://gitee.com/openarkcompiler-incubator/maple_engine
本次开源内容主要限于o0的能力范围,针对c的o2以上的优化留待未来进一步开源。
目前,方舟编译器已经支持c语言的绝大部分常用特性,暂不支持的特性有complex类型、packedstruct、long double、alloca out-of-scope free。
当前支持aarch64后端,并支持绝大部分gcc_torture用例,比如配合一款第三方合作的c前端(开源时间待定),可以正确运行spec2017的所有c语言整型用例。
下一步,方舟社区计划在maple编译器上做更多的拓宽和深耕工作。
广度上,一方面会尝试支持新的语言,进一步验证maple基础平台的语言无关性,另一方面会增加对新后端如risc-v的支持。
深度上,社区会尽快开源o2分析与优化phase,性能对标llvm/gcc,同时利用统一的maple表示,布局跨语言全局优化。
正式开源以来,方舟社区开源代码从50k增长到170k,累计6.9k star,并孵化5个相关子项目。
方舟编译器作为方舟编程体系的重要一环,目前展现的还只是是静态编译,未来随着方舟引擎的完备,可以看到方舟编译器在各种aot或者jit编译时的运用,以及众多依赖于编译分析的软件分析和优化工具。
责编ajx

Visa 对外展示数字支付方案,融入了生物识别
专业课程很难办?Mini型多功能移动实验室来助战
人工智能已进入第四代赛道,“人工直觉”成主要方向
荷兰商业街引入普渡科技配送迎宾机器人 开辟全新营销和服务模式
巴黎车展开幕 我们值得期待的新车大盘点
华为方舟编译器正式支持C语言,将继续完全开源
为什么IMU中温度传感器输出存在偏差?
Google I/O 2019:为你的问题提供更好的答案
高能激光输出,传能光纤这根“丝”不可少
电压跟随器是什么放大电路 电压跟随器应用电路
基于python的ngxtop的安装、监控nginx与用法解析
连网装置爆增 衍生云端管理商机
五年后小米手机就会消失,你信吗?
内置片内采样保持电路的模数转换器AD9653
如何快速开发嵌入式系统交互界面
RS232接口与USB接口/RS485接口的转换
如何使NCV7356与水箱电容器配合应用
一文带你了解什么是物联网IOT
浅谈ADC0832芯片电路原理图
手机信号不好的原因有哪些,有什么解决办法