华为|华为方舟编译器正式支持C语言:完全开源
2019年8月底 , 华为方舟编译器(OpenArkCompiler)正式开源 , 迈出了跨越性的一步 。
一年多来 , 方舟编程体系陆续实现了编译器、引擎、调试器的开源 , 其中编译器的重点功能主要集中在Java应用程序静态编译上 。
华为强调 , 方舟项目的目标是构建一个基于MapleIR的跨语言编程环境 , 实现跨语言的全局分析及优化 。
比如在现有Java编程环境下面 , 开发者经常需要同时编写Java、C语言程序 , 通过JNI相互调用 , 而这两种语言之间目前是不直接互通的 。
方舟编程体系的终极愿景之一 , 就是要通过一致的IR来表述不同语言 , 并跨越语言进行全局优化 。
现在 , 方舟编译器加入了对C语言程序的支持 , 当然继续开源 , 也是实现Java和C混合编译的基础 。
【华为|华为方舟编译器正式支持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编译时的运用 , 以及众多依赖于编译分析的软件分析和优化工具 。
文章图片
推荐阅读
- 顾方舟|全国悲痛!巨星陨落,他是14亿国人都该致谢的救星!
- 诺亚方舟|“诺亚方舟”找到了?专家称将3D扫描证实,科学家:这是自然奇观
- 华为|马斯克只高兴了8分钟:SN10号历史性成功着陆,却突然原地爆炸
- 方舟:创世|土卫二冰海洋下有生命?《方舟:创世》的宇宙生物或将成真
- 中药|科创未来|这个“国字号”实验室 藏着中药的“诺亚方舟”
- 方舟:生存进化|如果太阳燃烧完了,人类该如何生存?《方舟生存进化》为你解答
- 方舟:生存进化|琥珀中发现的大量羽毛,也许是《方舟生存进化》中这种生物在作祟
- 方舟:生存进化|恐龙3亿年都没做到的事,被《方舟生存进化》玩家用一个月完成了
- 俄罗斯|俄罗斯或将发射载有动物的“方舟”项目卫星用于科研工作
- 方舟子|方舟子:象棋是印度发明,因为中国从来就没有过大象,河南人笑了
