安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > 华为方舟编译器 v0.2 源码包
华为方舟编译器

华为方舟编译器

 v0.2 源码包
  • 软件大小:8.81 MB
  • 更新日期:2019-10-22 11:03
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:8.81 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  方舟编译器是一款综合管理编平台,该程序是由华为公司自行研发的业界首个多语言联合优化编译器,它主要是为了支持多种编辑语言,因为很多用户的使用语言习惯不一样,这就会导致在使用开发工具的时候出现很多不便之处,正常情况下肯定不可能同时在电脑中安装多个开发工具,而多语言支持不仅可以使得开发过程更加灵活,还可以将整个系统的实用性大大的提高;不仅如此,该程序还支持多种芯片平台联合编译、运行,在整个大系统中,整个数据包包含的工具非常丰富,必不可少的编译器、工具链以及运行时等关键部件都应有尽有,可以满足不同开发人员的要求;此外,该程序系统已经将编译器的代码优化搬到了开发者环境,此后便不再被手机端的硬件资源所限制,从而为代码优化提供了无限可能;强大又实用,需要的用户可以下载体验

华为方舟编译器

软件功能

  一、开发阶段打包的APK就直接是可执行,并且跨语言平台

  在方舟编译器里面,已经编译好的APK,会通过静态编译的方式先转换成机器码再安装,这其实是AOT,无需麻烦的虚拟机,提升运行速度和效率。并且作为开发者,还可以根据不同的程序特点,选择不同的编译优化方案,不像安卓官方的方式使用统一的虚拟机方案。

华为方舟编译器

  二、方舟编译器边运行变清理,内存清爽

  现在安卓手机的一大特色就是内存越来越大,6GB都是老人机的配置了。这除了程序大以外还有安卓的程序运行产生垃圾多有关系。那么清理垃圾呢?则需要暂停程序,也就会顿一下,即所谓的“卡”。华为方舟编译器则是利用程序多线程运行的特点。打个比方,您现在正在用的“中关村在线”这个APP用了AB两个线程,在华为的P30手机中,那么线程A运行的时候,B在清理垃圾,然后A线程清理垃圾的时候B线程在运行,程序运行不中断,垃圾处理不停,做到了又连贯、又节约系统资源。

华为方舟编译器

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

  代码优化是编译器最为核心的功能,也是评判一个编译器优劣最重要的标准。

  当前由于安卓应用使用了虚拟机机制,难以面向不同应用对虚拟机进行针对性的灵活优化。

  安卓ART的AoT和JIT动态编译因为是运行在手机上,受资源所限,因而只能使用简单的优化算法。

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

软件特色

  1、多语言联合:

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

  2、轻量运行时:

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

  3、软硬件协同:

  编译器与芯片实现软硬件协同优化,充分发挥硬件能效,应用体验更佳。

  4、多平台支持:

  支持面向多样化的终端设备平台进行编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率。

官方教程

  源码编译

  在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径 openarkcompiler/out/bin。

  source build/envsetup.sh

  make

华为方舟编译器

  命令说明:

  source build/envsetup.sh 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/src/bin设置到环境变量中

  make 编译OpenArkCompiler的Release版本

  make BUILD_TYPE=DEBUG 编译OpenArkCompiler的Debug版本

  Sample示例编译

  当前编译方舟编译器Sample样例需要使用到Java基础库,我们简要介绍Sample样例的编译过程

  Java基础库准备

  方舟编译器针对不同的操作系统编译Java程序,需要准备相应操作系统上的Java基础库,我们暂且命名java-core.jar

  生成libjava-core.mplt文件

  编译前,请先在openarkcompiler目录下创建libjava-core目录,拷贝如上准备的Java基础库jar包到此目录下,在openarkcompiler目录执行以下命令:

  source build/envsetup.sh;

  cd libjava-core;

  jbc2mpl -injar java-core.jar -out libjava-core;

华为方舟编译器

  执行完成后会在此目录下生成libjava-core.mplt文件。

  示例代码快速编译

  示例代码位于openarkcompiler/samples目录。

  以samples/helloworld/代码为例,在openarkcompiler/目录下执行以下命令:

  source build/envsetup.sh; make; cd samples/helloworld/; make

华为方舟编译器

  编程规范

  目的

  规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”, 如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。

  参考该规范之前,希望您具有相应的C++基础能力,而不是通过该文档来学习C++。

  了解C++的ISO标准;

  熟知C++的基本语言特性,包括C++ 03/11/14/17相关特性;

  了解C++的标准库;

  重点关注

  约定C++的编程风格,比如命名,排版等。

  C++的模块化设计,如何设计头文件,类,接口和函数。

  C++相关特性的优秀实践,比如常量,类型转换,资源管理,模板等。

  现代C++的优秀实践,包括C++11/14/17中可以提高代码可维护性,提高代码可靠性的相关约定。

华为方舟编译器

  约定

  规则:编程时必须遵守的约定(must)

  建议:编程时应该遵守的约定(should)

  本规范适用通用C++标准, 如果没有特定的标准版本,适用所有的版本(C++03/11/14/17)。

  例外

  无论是'规则'还是'建议',都必须理解该条目这么规定的原因,并努力遵守。 但是,有些规则和建议可能会有例外。

  在不违背总体原则,经过充分考虑,有充足的理由的前提下,可以适当违背规范中约定。 例外破坏了代码的一致性,请尽量避免。'规则'的例外应该是极少的。

  下列情况,应风格一致性原则优先:

  修改外部开源代码、第三方代码时,应该遵守开源代码、第三方代码已有规范,保持风格统一。

  某些特定领域,优先参考其行业规范。

华为方舟编译器

  命名

  通用命名

  常见命名风格有: 驼峰风格(CamelCase) 大小写字母混用,单词连在一起,不同单词间通过单词首字母大写来分开。 按连接后的首字母是否大写,又分: 大驼峰(UperCamelCase)和小驼峰(lowerCamelCase)

  内核风格(unix_like) 单词全小写,用下划线分割。 如:'test_result'

  匈牙利风格 在‘大驼峰’的基础上,加上前缀;前缀用于表达类型或用途。 如:'uiSavedCount', 'bTested'

  规则2.1.1 标识符命名使用驼峰风格

  不考虑匈牙利命名,在内核风格与驼峰风格之间,根据存量代码的情况,我们选择驼峰风格。

  类型命名风格

  类类型,结构体类型,枚举类型,联合体类型等类型定义大驼峰

  函数(包括全局函数,作用域函数,成员函数)大驼峰(接口部分可加前缀,如XXX_函数名)

  全局变量(包括全局和命名空间域下的变量,类静态变量),局部变量,函数参数,类、结构体和联合体中的成员变量小驼峰

  常量(const),枚举值k+大小写混合

  宏大写+下划线

  命名空间全小写

华为方舟编译器

  注意: 上表中常量是指全局作用域、namespace域、类的静态成员域下,以 const或constexpr 修饰的基本数据类型、枚举、字符串类型的变量。 上表中变量是指除常量定义以外的其他变量,均使用小驼峰风格。

  文件命名

  建议2.2.1 C++文件以.cpp结尾,头文件以.h结尾

  我们推荐使用.h作为头文件的后缀,这样头文件可以直接兼容C和C++。 我们推荐使用.cpp作为实现文件的后缀,这样可以直接区分C++代码,而不是C代码。

  目前业界还有一些其他的后缀的表示方法:

  头文件: .hh, .hpp, .hxx

  cpp文件:.cc, .cxx, .C

华为方舟编译器

  对于本文档,我们默认使用.h和.cpp作为后缀。

  建议2.2.2 C++文件名和类名保持一致

  C++的头文件和cpp文件名和类名保持一致,使用下划线小写风格。

  如下:

  database_connection.h

  database_connection.cpp

华为方舟编译器

  结构体,命名空间,枚举等定义的文件名类似。

  函数命名

  函数命名统一使用大驼峰风格,一般采用动词或者动宾结构。接口部分可加前缀,如XXX_函数名。

  class List {

  public:

  void AddElement(const Element& element);

  Element GetElement(const unsigned int index) const;

  bool IsEmpty() const;

  bool MCC_GetClass();

  };

  namespace utils {

  void DeleteUser();

  }

华为方舟编译器

  类型命名

  类型命名采用大驼峰命名风格。 所有类型命名——类、结构体、联合体、类型定义(typedef)、枚举——使用相同约定,例如:

  // classes, structs and unions

  class UrlTable { ...

  class UrlTableTester { ...

  struct UrlTableProperties { ...

  union Packet { ...

  // typedefs

  typedef std::map PropertiesMap;

  // enums

  enum UrlTableErrors { ...

华为方舟编译器

  对于命名空间的命名,建议全小写:

  // namespace

  namespace osutils {

  namespace fileutils {

  }

  }

  建议2.4.1 避免滥用 typedef或者#define 对基本类型起别名

  除有明确的必要性,否则不要用 typedef/#define 对基本数据类型进行重定义。 优先使用头文件中的基本类型:

  有符号类型无符号类型描述

  int8_tuint8_t宽度恰为8的有/无符号整数类型

  int16_tuint16_t宽度恰为16的有/无符号整数类型

  int32_tuint32_t宽度恰为32的有/无符号整数类型

  int64_tuint64_t宽度恰为64的有/无符号整数类型

  intptr_tuintptr_t足以保存指针的有/无符号整数类型

华为方舟编译器

  如果模块有自己的定义,请使用统一的typedef来定义类型:

  typedef signed char VOS_INT8;

  typedef unsigned char VOS_UINT8;

  #if __WORDSIZE == 64

  typedef unsigned long int VOS_UINTPTR;

  #else

  typedef unsigned int VOS_UINTPTR;

  #endif

华为方舟编译器

  如果模块为了封装某个类型的信息,方便后续的扩展,可以使用typedef来重新定义。

  typedef uint8_t DeviceID;

  // ...

  // 若干版本后扩展成 16-bit

  typedef uint16_t DeviceID;

华为方舟编译器

  有特殊作用的类型 typedef void *Handle; 注意:不要使用 #define 进行别名定义,并且在C++11以后推荐使用using来定义类型。

  除上述理由外,应避免给其本数值类型别名定义。因为类型别名可读性并不好,隐藏了基本数值类型信息,如位宽,是否带符号。 滥用举例:

  typedef uint16_t MyCounter;

  // ...

  int Foo(...) {

  MyCounter c;

  // ...

  while (c >= 0) {

  printf("counter = %d\n", c);

  // ...

  }

  // ...

  }

华为方舟编译器

  对'MyCounter'是否可能小于0,打印时用'%d'还是'%u'都不是很直观,极容易引入上述类似缺陷。

  变量命名

  通用变量命名采用小驼峰,包括全局变量,函数形参,局部变量,成员变量。

  std::string tableName; // Good: 推荐此风格

  std::string tablename; // Bad: 禁止此风格

  std::string path; // Good: 只有一个单词时,小驼峰为全小写

华为方舟编译器

  规则2.5.1 类的成员变量命名使用小驼峰。

  class Foo {

  private:

  std::string fileName; // 不添加任何作用域前缀或者后缀

  };

华为方舟编译器

  当构造函数参数和成员变量重名时,可通过this->来引用成员变量。

  class MyClass {

  public:

  MyClass(int myVar) : myVar(myVar) { // OK,初始化列表允许同名入参初始化同名成员

  if (NeedNewVar()) {

  this->myVar = GetValue(); // 注意不要漏掉this->,否则就成了给入参赋值

  }

  }

  private:

  int myVar;

  };

华为方舟编译器

  宏、常量、枚举命名

  宏采用全大写,下划线连接的格式。常量、枚举值使用k+大小写混合。 函数局部 const 常量和类的普通const成员变量,使用小驼峰命名风格。

  #define MAX(a, b) (((a) < (b)) ? (b) : (a)) // 仅对宏命名举例,并不推荐用宏实现此类功能

  enum TintColor { // 注意,枚举类型名用大驼峰,其下面的取值是k+大小写混合

  kRed,

  kDarkRed,

  kGreen,

  kLightGreen

  };

  int Func(...) {

  const unsigned int bufferSize = 100; // 函数局部常量

  char *p = new char[bufferSize];

  ...

  }

  namespace utils {

  const unsigned int kFileSize = 200; // 全局常量

  }

华为方舟编译器

  常见问题

  Q1:方舟编译器开源有官方网站吗?

  A1:

  孵化期间,官方网站为:https://www.openarkcompiler.cn;正式毕业后的官网待定。

  Q2:方舟编译器是一次性全部代码开源吗?

  A2:

华为方舟编译器

  首次开源范围是编译器 IR( Intermediate Representation)、RC(Reference Counting)和多语言设计思想等,用于与业界、学术界沟通交流。后续将陆续开源编译器前端、后端,支持其它语言(如 JavaScript)的编译等,当前部分Java语言特性和JVM虚拟机特性的支持未包括在本次开源代码中,包括:annotation、lambda表达式、泛型等。目前仍有很多地方不完善,会在社区陆续迭代,遇到问题请在社区提交 issue,欢迎在社区继续讨论设计和代码共建。。

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

  A3:

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

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

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

  Q4:方舟编译器开源路标是怎样的?

  A4:

  方舟编译器从 2019 年 8 月开始开源,欢迎广大的应用开发者、手机厂商、软件从业人员一起共建开源社区和生态。 开源计划大体上这样安排:2019 年 8 月重点开源框架部分;后续将陆续开源编译器前端、后端;支持 Java 程序编译、JavaScript 语言应用的编译等。

  Q6:方舟编译开源面向全球开发者吗?英文网站何时上线?

  A6:

  方舟编译器是向全球开发者进行开源,因此,官方网站和代码托管平台均面向全球开发者开放。目前英文版网站正在紧张的开发及内测,计划将于 2019 年 Q4 上线。

  Q7:方舟编译器源码托管计划是怎么的?

  A7:

  孵化委员会期间,方舟编译器代码是托管在华为云上面。在未来走向开放治理以后,将由所挂靠机构选择的平台进行托管。如果挂靠的机构采取了 X 平台,我们就采用这个机构的代码托管模式进行托管。

  当前代码托管的地址:https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler

  所有相关信息请以方舟编译器开源官方网站发布为准。

  Q8:方舟编译器开源使用的是什么License?

  A8:

  方舟编译器采用木兰 License。 木兰 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

  Q9: 如何确认下载包来源可靠?MD5校验码是多少?

  A9:

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

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

人气软件