8月31日,华为方舟编译器(OpenArkCompiler)正式开源,官网已上线,源代码包、二进制包已供给下载,相关文档、演示等材料也一应俱全。
本次方舟编译器开源的是编译器结构部分源码,包含编译器中心表明(IR)和言语编译完成,一同调配编译器其他二进制组件,完成Java程序到aarch64汇编指令的编译进程。
开发者可依据开源代码+二进制,编译构建出编译器东西链,测验对Java程序进行编译。
社区参加者可以终究靠结构源码学习方舟编译器的编译器中心表达(IR)及根本的中端编译结构,了解方舟编译器的架构思维,并参加诸如对编译器中端优化的奉献。
依照华为的介绍,方舟编译器是为支撑多种编程言语、多种芯片渠道的联合编译、运转而规划的一致编程渠道,包含编译器、东西链、运转时等核心部件,现在还在继续演进中,上述才能将连续完成和开源。
经过多言语一致IR表明,方舟编译器可完成使用中多种编程言语联合编译优化进步功能,并且在支撑多渠道的一同,依据设备特征供给快捷的开发与布置战略进步功率。
华为方舟编译器供给了全新的体系及使用的编译和运转机制,从动态编译变为静态编译,便是直接将高档言语直接编译成机器码,彻底消除了虚拟机动态编译的额定开支,完成了开发和运转功率的兼容并重。
将同一使用中的不同言语代码联合编译、联合优化,消除言语间的功能“距离”,下降开发者的优化本钱
支撑面向多样化的终端设备渠道做编译和运转,依据设备特征供给快捷的开发与布置战略,进步开发功率
当时方舟编译器支撑Java/Kotlin程序字节码的前端输入,C/C++/JS等其它编程言语的支撑还在规划中。
方舟编译器的中心表明(IR)转换器将前端输入转换成方舟IR,并输送给后端的优化器,终究生成二进制文件,二进制文件与编译器运转时库文件链接生成可执行文件,在方舟的运转环境中就可执行该文件。
方舟编译器IR是支撑程序编译和运转的中心程序表明。程序源代码中的任何信息关于程序剖析和优化都是有协助的,所以方舟IR的方针是尽可能完好具体地供给源程序的信息。
方舟编译器的硬件装备需求不高,最低只需2GHz双核心处理器、2GB内存、200GB硬盘空间,当然要取得最高功率,更高装备是强烈推荐的。
当时部分Java言语特性和JVM虚拟机特性的支撑未包含在本次开源代码中,包含annotation、lambda表达式、泛型等。
现在仍有许多当地不完善,会在社区连续迭代,遇上问题请在社区提交issue。
孵化期间,开发的人能经过如下代码保管网址取得相关代码和文档,供参阅学习、了解方舟编译器的架构和代码。
方舟编译器从2019年8月开端开源,欢迎广阔的使用开发者、手机出产厂商、软件从业人员一同共建开源社区和生态。
开源方案大体上这样组织:2019年8月要点开源结构部分;后续将连续开源编译器前端、后端;支撑Jav 程序编译、JavaScript言语使用的编译等。