精品为您呈现,快乐和您分享!

移动端

收藏本站

OK下载站

当前位置: 首页 > 软件下载 > 编程开发

华为方舟编译器v0.2官方版

华为方舟编译器v0.2官方版

类型:编程开发 语言:简体

大小:8.8M 更新时间:2019-09-02

推荐指数:

应用简介


华为方舟编译器是一款支持多语言的编译工具。它由华为开发,实现了从Java程序到aarch64汇编指令的编译过程。华为方舟编译器的开发者可以基于开源代码+二进制来编译构建编译工具。 Chain,尝试编译Java程序。









华为方舟编译器是一款支持多语言的编译工具。它由华为开发,实现了从Java程序到aarch64汇编指令的编译过程。华为方舟编译器的开发者可以基于开源代码+二进制来编译构建编译工具。 Chain,尝试编译Java程序。



华为方舟编译器



基本介绍



方舟编译器概述



方舟编译器是一个统一的编程平台,旨在支持多种编程语言、多芯片平台的联合编译和运行。它包括编译器、工具链和运行时等关键组件。方舟编译器仍在不断发展,上述能力正在逐步实现并开源。



此次,方舟编译器开源了编译器框架的部分源代码,包括编译器中间表示(IR)和语言编译实现。它还与编译器的其他二进制组件配合使用,实现Java程序到aarch64汇编指令的编译过程。开发者可以基于开源代码+二进制编译构建编译工具链,尝试编译Java程序。社区参与者可以通过框架源码学习方舟编译器的编译器中间表达式(IR)和基本的中端编译框架,熟悉方舟编译器的架构思想,参与中端优化等贡献编译器的。



华为始终以开放的态度拥抱开源,全面参与源代码共享,与开发者共同实现开源世界的科技进步。华为在全球主流基金会和开源社区拥有十多个核心席位。作为Linux基金会的白金会员,华为持续贡献自己的技术能力,已累计为Linux内核贡献了6800+个补丁。同时,华为与40多家领先应用厂商合作,编译优化了各类热门应用,并将于近期推出。



此次发布方舟编译器框架源代码后,华为预计在2020年及以后实现方舟编译器工具链的完全开源。在官方开源社区中,开发者可以参与并贡献自己的力量,与华为共同推动基础软件的发展。



华为坚持每年将销售收入的10%以上投入研发。随着其软件实力不断增强,“GPU Turbo”、“Link Turbo”、“EROFS”等硬核技术也随之诞生。未来,华为将与开发者、合作伙伴开展更加深入、广泛的合作,坚持开放、合作、共赢的战略,连接全行业的能力,持续推动产业创新和开放生态。



软件特点



多语言联盟



在同一个应用中联合编译、联合优化不同语言的代码,消除语言之间的性能“差距”,降低开发者的优化成本。



轻量级运行时



通过编译器增强的语言实现和优化能力,应用程序运行时开销更小



软硬件协同



编译器和芯片实现软硬件协同优化,充分发挥硬件能效,提供更好的应用体验。



多平台支持



支持多种终端设备平台的编译和运行,根据设备特性提供便捷的开发和部署策略,提高开发效率



16f5d6c84253399a_600_0.jpeg



16f5d6c860ea49bc_600_0.jpeg



特征



1、开发阶段打包的APK直接可执行、跨语言平台



在方舟编译器中,编译好的APK在安装前会通过静态编译的方式转换为机器码。这其实就是AOT,不需要麻烦的虚拟机,提高了运行速度和效率。而且作为开发者,还可以根据不同的程序特性选择不同的编译优化方案,而不像Android官方采用统一虚拟机方案的方式。



2、方舟编译器运行时变得干净,内存刷新。



现在安卓手机的一大特点就是内存越来越大,6GB是老年人手机的配置。这除了程序体积较大之外,还与Android程序运行时产生大量垃圾有关。清理垃圾怎么办?那么程序就需要暂停,就会出现暂停的情况,也就是所谓的“卡住”。华为方舟编译器利用了程序多线程运行的特点。比如你现在使用的“中关村在线”APP,使用了两个线程A和B。在华为P30手机中,当线程A运行时,线程B在清理垃圾,然后当线程A在清理垃圾时,线程B在清理垃圾。 B正在清理垃圾。运行时,程序运行不中断,垃圾处理继续进行,实现连续性,节省系统资源。



3.方舟编译器,应用级编译优化



代码优化是编译器的核心功能,也是判断编译器好坏的最重要标准。



目前,由于Android应用程序采用虚拟机机制,因此很难针对不同的应用程序灵活地优化虚拟机。



Android ART的AoT和JIT动态编译运行在手机上,受到资源限制,只能使用简单的优化算法。



由于方舟编译器是在应用开发阶段进行编译的,因此可以允许不同的应用灵活采用不同的编译优化方案。而且,由于开发环境中的编译不受手机性能的限制,可以使用更先进的优化算法,从而最大化每个应用程序的性能。



指示



开发环境推荐



您需要安装64位版本的Ubuntu(推荐Ubuntu 16.04)



sudo apt-get -y 安装openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa -dev libxml2-utils xsltproc 解压缩lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins python-请求python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386



sudo apt-get -y 安装gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu



安装Clang编译器并完成配置(用于编译方舟编译器代码)



下载clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04



LLVM下载地址:http://releases.llvm.org/download.html#8.0.0



放在openarkcompiler/tools目录下,打开openarkcompiler/build/config/BUILDCONFIG.gn文件,将GN_C_COMPILER、GN_CXX_COMPILER和GN_AR_COMPILER这三个变量配置到Clang编译器的路径下,例如:



GN_C_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang'



GN_CXX_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++'



GN_AR_COMPILER='${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar'



其中${MAPLE_ROOT}为openarkcompiler的源码根目录。



安装Ninja、GN并完成配置



  下载Ninja(v1.9.0)及GN(Linux Version)



忍者下载地址:https://github.com/ninja-build/ninja/releases



GN下载地址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn



将GN和Ninja可执行程序放在openarkcompiler/tools目录下,打开openarkcompiler/Makefile文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如:



GN :=${MAPLE_ROOT}/工具/gn/gn



忍者:=${MAPLE_ROOT}/tools/ninja_1.9.0/ninja



常见问题



Q1:方舟编译器是一次性编码的吗?



回答:



第一个开源范围是编译器IR(中间表示)、RC(引用计数)和多语言设计思想等,用于与工业界和学术界交流。接下来,编译器的前端和后端将开源,以支持其他语言(例如JavaScript)的编译。目前,该开源代码中不包含对某些Java 语言功能和JVM 虚拟机功能的支持,包括:注释和lambda 表达式。公式、泛型等,还有很多不完善的地方,会在社区中迭代。如果您遇到任何问题,请在社区中提交问题。欢迎您继续在社区讨论设计和代码构建。



Q2:通过哪些渠道可以获得方舟编译器的框架源码?



回答:



孵化期间,开发者可以通过以下代码托管网站获取相关代码和文档,以参考和了解方舟编译器的架构和代码。



华为云托管地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler。



开源中文代码云托管地址:https://gitee.com/harmonyos/OpenArkCompiler



Q3:方舟编译器的开源路线图是什么?



回答:



方舟编译器自2019年8月开始开源,欢迎应用开发者、手机厂商、软件从业者共同构建开源社区和生态。开源计划大致安排如下:2019年8月,重点关注开源框架部分,随后将陆续开放开源编译器的前端和后端;支持Java程序编译、JavaScript语言应用程序编译等。



Q4:方舟编译器开源使用什么License?



回答:



方舟编译器采用木兰许可证。木兰License是由业内众多专家和公司共同打造,并非华为主导。花木兰牌照的具体好处请看专业点评:



开源中国:https://www.oschina.net/news/108840/mulanpsl-the-1st-opensource-license-of-china



开元社:https://mp.weixin.qq.com/s/1xqxxiNKhcgw4RRspAaW2A



InfoQ:https://www.infoq.cn/article/KrZAbAcJrxCU27vKj*JE



Q5:如何确认下载包来自可靠来源? md5校验码是什么?



回答:



OpenArkCompiler-0.2-ubuntu-16.04-x86_64.tar.gz包的MD5代码为:e7dc8b8c242f2d26429e2ad71dae3112



OpenArkCompiler-0.2.tar.gz包的MD5码为:1bf859a67c8b9a2d4080bdaf25ef6181