帆布袋下载站:纯净绿色软件游戏下载网站

电脑软件| 软件合集| 最近更新| 网站地图

当前首页:首页 > 电脑软件 > 编程开发 > 华为方舟编译器

华为方舟编译器

华为方舟编译器

类型:编程开发版本:v0.2官方版更新:2023-10-11 10:05:42大小:8.8M系统:WinAll语言:简体

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

Basic 简介

方舟编译器概述

方舟编译器是一个统一的编程平台,旨在支持各种编程语言和芯片平台的联合编译和运行,包括编译器、工具链、运行时等关键组件。方舟编译器还在不断进化,上述能力陆续实现并开源。

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

华为始终以开放的姿态拥抱开源,全面参与源代码共享,与开发者一起实现开源世界的科技进步。在全球主流基金会和开源社区中,华为拥有十余个核心席位。华为作为Linux基金会的白金会员,不断贡献自己的技术力量,为Linux内核积累了6800+补丁。同时,华为已与40多家头部应用厂商合作,对各类热门应用进行编译优化,并将于近期上线。

方舟编译器框架源代码发布后,/[k1/]有望在2020年及以后实现方舟/[k3/]工具链的完全开源。在官方开源社区,开发者可以和华为一起参与并贡献基础软件的开发。

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

软件特色

多语言协会

同一应用中不同语言代码的共编译、共优化,可以消除语言之间的性能差距,降低开发者的优化成本。

轻量级运行时

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

软硬件合作

编译器配合芯片优化软硬件,充分发挥硬件的能效,有更好的应用体验。

多平台支持

支持针对多样化终端设备平台的编译运行,根据设备特点提供便捷的开发部署策略,提高开发效率。

功能介绍

首先,在开发阶段打包的APK是直接可执行的和跨语言平台的。

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

第二,方舟编译器边清理边运行,内存刷新。

现在安卓手机的一大特点就是内存越来越大,6GB是老人机的配置。这不仅是因为程序大,还因为Android程序运行产生的垃圾。清理垃圾呢?你需要暂停节目,你就暂停,也就是所谓的“卡”。华为方舟编译器是多线程的特点。比如你现在用的“中关村在线”APP,用的是两个线程AB。在华为的P30手机中,线程A在运行时,B在清理垃圾,然后线程A在清理垃圾时,线程B在运行,程序不间断运行,垃圾处理不停,一致,节省系统资源。

第三,方舟编译器,应用级编译优化

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

目前由于Android应用使用虚拟机机制,很难针对不同的应用灵活优化虚拟机。

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

并且方舟编译器由于编译处于应用开发阶段,可以允许不同的应用灵活采用不同的编译优化方案,并且由于开发环境中的编译不受手机性能的限制,可以使用更先进的优化算法,使每个应用的性能达到最佳。

施用方式

开发环境建议

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

sudo apt-get-y install open JDK-8-JDK git-core GnuPG flex bison gperf build-essential zip curl zlib 1g-dev libc 6-dev-i386 lib 32 ncurses 5-dev X11 proto-c ore-dev libx 11-dev lib 32z-dev ccache libgl 1-mesa-dev libxml 2-utils xsltproc unzip 32z 1-dev QEMU g++-multi lib gcc-multi lib python 3-paramiko python-pa ramiko python-python

sudo apt-get -y安装gcc-5-aarch 64-Linux-GNU g++-5-aarch 64-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目录下,打开openark COMPILER/build/config/build config . GN文件,将GN_C_COMPILER、GN_CXX_COMPILER、GN_AR_COMPILER三个变量配置为Clang编译器所在的路径,例如:

GN _ C _ COMPILER = & quot$ { MAPLE _ ROOT }/tools/clang _ llvm-8 . 0 . 0-x86 _ 64-Linux-GNU-Ubuntu-16.04/bin/clang & quot;

GN _ CXX _ COMPILER = & quot$ { MAPLE _ ROOT }/tools/clang _ llvm-8 . 0 . 0-x86 _ 64-Linux-GNU-Ubuntu-16.04/bin/clang++ & quot;

GN _ AR _ COMPILER = & quot$ { MAPLE _ ROOT }/tools/clang _ llvm-8 . 0 . 0-x86 _ 64-Linux-GNU-Ubuntu-16.04/bin/llvm-ar & quot;

其中${ MAPLE _ ROOT }是openarkcompiler源代码的根目录。

安装Ninja,GN,完成配置。

下载忍者(v1.9.0)和GN(Linux版)

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

。下载地址:https://archive.softwareheritage.org/browse/content/sha1 _ git:2 DC 0d 5 b 26 caef 44 f 467 de 26 f 8 ad 8 b 878 be/raw/?文件名=gn

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

GN := ${MAPLE_ROOT}/tools/gn/gn

NINJA:= $ { MAPLE _ ROOT }/tools/NINJA _ 1 . 9 . 0/NINJA

常见问题

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

答:

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

Q2:我可以通过什么渠道获得方舟编译器的框架源代码?

答:

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

华为云托管地址:https://code . open source . Huawei cloud . com/harmony OS/openark compiler。

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

Q3:方舟编译器有哪些开源路标?

答:

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

Q4:方舟编译器开源用什么许可证?

答:

方舟编译器使用木兰授权。木兰授权是由业内众多专家和公司共同打造的,不是华为主导的。木兰授权的具体好处请参考Specialty 点评:

开源中国:https://www.oschina.net/news/108840/mulanpsl-the-1st-open资源-中国许可证。

开源社会: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代码为:e 7 DC 8 b 8 c 242 f2d 26429 e 2 ad 71 de 3112。

OpenArkCompiler-0.2.tar.gz包的MD5码是1bf 859 a 67 c 8 b 9 a2 d 4080 BDA F2 ef 6181。

标签: 编译工具