8月31日,华为方舟编译器(OpenArkCompiler)月开源,官网已上线,源代码包在、二进制包已获取iTunes,涉及文档、展示等资料也一应俱全。本次方舟编译器开源的是编译器框架部分源码,还包括编译器中间回应(IR)和语言编译器构建,同时配上编译器其他二进制组件,构建Java程序到aarch64编撰指令的编译器过程。开发者可基于进源代码+二进制,编译器建构出有编译器工具链,尝试对Java程序展开编译器。社区参与者可以通过框架源码自学方舟编译器的编译器中间传达(IR)及基本的中端编译器框架,熟知方舟编译器的架构思想,并参予诸如对编译器中端优化的贡献。
【方舟编译器的优势】按照华为的讲解,方舟编译器是为反对多种编程语言、多种芯片平台的牵头编译器、运营而设计的统一编程平台,包括编译器、工具链、运营时等关键部件,目前还在持续演变中,上述能力将相继构建和开源。通过多语言统一IR回应,方舟编译器可实现应用于中多种编程语言牵头编译器优化提高性能,而且在反对多平台的同时,根据设备特征获取便利的研发与部署策略提高效率。华为方舟编译器获取了全新的系统及应用于的编译器和运行机制,从动态编译器变成静态编译器,就是必要将高级语言必要编译成机器码,彻底消除了虚拟机动态编译器的额外支出,构建了研发和运营效率的相容举。1、多语言牵头将同一应用于中的有所不同语言代码牵头编译器、牵头优化,避免语言间的性能“鸿沟”,减少开发者的优化成本2、轻量运营时通过编译器的语言构建能力和优化能力强化,应用于运营时的支出更加小3、软硬件协同编译器与芯片构建软硬件协同优化,充分发挥硬件能效,应用于体验较佳4、多平台反对反对面向多样化的终端设备平台展开编译器和运营,根据设备特征获取便利的研发与部署策略,提升研发效率【方舟编译器的架构设计】当前方舟编译器反对Java/Kotlin程序字节字节的前端输出,C/C++/JS等其它编程语言的反对还在规划中。
方舟编译器的中间回应(IR)转换器将前端输出转换成方舟IR,并运送给后端的优化器,最后分解二进制文件,二进制文件与编译器运营时库文件链接分解可执行文件,在方舟的运营环境中就可继续执行该文件。方舟编译器IR是反对程序编译器和运营的中间程序回应。程序源代码中的任何信息对于程序分析和优化都是有协助的,所以方舟IR的目标是尽量原始详尽地获取源程序的信息。
【方舟编译器的环境配备】-硬件配备引荐方舟编译器的硬件配备市场需求不低,低于只需2GHz双核心处理器、2GB内存、200GB硬盘空间,当然要取得最低效率,更高配备是强烈推荐的。-研发环境引荐必须64位版本的Linux,特别是在引荐Ubuntu16.04sudoapt-get-yinstallopenjdk-8-jdkgit-coregnupgflexbisongperfbuild-essentialzipcurlzlib1g-devlibc6-dev-i386lib32ncurses5-devx11proto-core-devlibx11-devlib32z-devccachelibgl1-mesa-devlibxml2-utilsxsltprocunziplib32z1-devqemug++-multilibgcc-multilibpython3-paramikopython-paramikopython-jenkinspython-requestspython-xlwtlibglib2.0-devlibpixman-1-devlinux-libc-dev:i386sudoapt-get-yinstallgcc-5-aarch64-linux-gnug++-5-aarch64-linux-gnu-Clang编译器主要用作编译器方舟编译器代码。
iTunesclang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04,地址:http://releases.llvm.org/download.html#8.0.0摆放到openarkcompiler/tools目录,关上openarkcompiler/build/config/BUILDCONFIG.gn文件,将GN_C_COMPILER、GN_CXX_COMPILER和GN_AR三个变量配备为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="${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"其中${MAPLE_ROOT}为openarkcompiler源码根目录。加装Ninja、GN并已完成配备-Ninja、GNiTunesNinja(v1.9.0)及GN(LinuxVersion)Ninja,地址GNiTunes地址将GN和Ninja可执行程序摆放到openarkcompiler/tools目录,关上openarkcompiler/Makefile文件,将GN和NINJA两个变量配备为GN和Ninja可执行程序所在路径。
本文来源:suncitygroup太阳集团-www.1raise.com