• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 方舟运行时子系统<a name="ZH-CN_TOPIC_0000001138852894"></a>
2
3- [方舟运行时子系统<a name="ZH-CN_TOPIC_0000001138852894"></a>](#方舟运行时子系统)
4  - [简介<a name="section11660541593"></a>](#简介)
5  - [目录<a name="section161941989596"></a>](#目录)
6  - [使用指南<a name="section18393638195820"></a>](#使用指南)
7  - [相关仓<a name="section1371113476307"></a>](#相关仓)
8
9## 简介<a name="section11660541593"></a>
10
11方舟\(ARK\)是华为自研的统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片平台的编译与运行,并支撑OpenHarmony操作系统及其应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种设备上的需求。本次开源的ARK-JS提供的能力是在OpenHarmony标准系统\(standard system\)中编译和运行JavaScript语言\(本文后面简称JS\)。
12
13本次开源的ARK-JS分成两个部分,分别是JS编译工具链与JS运行时。JS工具链将JS源码编译成方舟字节码\(ARK Bytecode\),JS运行时负责执行生成的方舟字节码\(后续如无特殊说明,字节码特指方舟字节码\)。
14
15JS编译工具链架构:
16
17![](figures/zh-cn_image_ark_frontend.png)
18
19JS前端编译器,将JavaScript源码解析为AST\( Abstract Syntax Tree\)后,经过AST变换、字节码生成器、寄存器分配后由native emiter产生方舟字节码文件\(abc文件\)
20
21JS运行时(Runtime)架构:
22
23![](figures/zh-cn_image_ark_runtime.png)
24
25ARK-JS Runtime以方舟字节码文件作为输入并直接运行字节码文件,实现对应的JS语义逻辑。
26
27ARK-JS Runtime主要由四个部分组成:
28
29-   Core Runtime
30
31    Core Runtime主要由语言无关的基础运行库组成,包括承载字节码的ARK File组件、支持Debugger的Tooling组件、负责对应系统调用的ARK Base组件等。
32
33-   Execution Engine
34
35    执行引擎目前包含执行字节码的解释器、缓存隐藏类和内联缓存、以及剖析记录运行时类型的Profiler。
36
37-   ECMAScript Runtime
38
39    ECMAScript Runtime则包含了各种JS对象的分配器、垃圾回收器、以及用以支撑ECMAScript规范的内部运行库。
40
41-   AFFI \(ARK Foreign Function Interface\)
42
43    AFFI是ARK JS运行时的C++语言外部函数接口。
44
45
46## 目录<a name="section161941989596"></a>
47
48```
49/ark
50├── js_runtime       # JS运行时组件
51├── runtime_core     # 运行时公共组件
52└── ts2abc           # JS语言的前端工具
53```
54
55## 使用指南<a name="section18393638195820"></a>
56
57[方舟运行时使用指南](https://gitee.com/openharmony/ark_js_runtime/blob/master/docs/ARK-Runtime-Usage-Guide-zh.md)
58
59## 相关仓<a name="section1371113476307"></a>
60
61[ark\_runtime\_core](https://gitee.com/openharmony/ark_runtime_core)
62
63[ark\_js\_runtime](https://gitee.com/openharmony/ark_js_runtime)
64
65[ark\_ts2abc](https://gitee.com/openharmony/ark_ts2abc)
66