mirror of
https://github.com/openharmony/ark_js_runtime.git
synced 2026-07-18 17:04:38 -04:00
86cfe52253f5d7f6c3e665519bbf520d20fdad11
Signed-off-by: wanyanglan <wanyanglan1@huawei.com> Change-Id: Iac7851492f10c0ef1303c621febb65e5fdd22e41
ARK JS Runtime Module
Introduction
ARK JS Runtime is the runtime used by JavaScript (JS) applications on OpenHarmony. It consists of the JS object allocator, garbage collector (GC), a standard library compliant with ECMAScript specifications, ARK bytecode interpreter, inline caches that store hidden classes, and the ARK Foreign Function Interface (AFFI).
ARK JS runtime architecture
Directory Structure
/ark/js_runtime
├─ ecmascript # JS object definition
│ ├─ base # Base helper class
│ ├─ builtins # ECMAScript library
│ ├─ class_linker # Bytecode pre-processing module
│ ├─ compiler # JS compiler
│ ├─ hprof # Memory analysis utility class
│ ├─ ic # Inline cache module
│ ├─ interpreter # JS interpreter
│ ├─ jobs # Queue of jobs
│ ├─ js_vm # ARK command line tool
│ ├─ mem # Memory management module
│ ├─ napi # External native interface
│ ├─ regexp # Regular expression engine module
│ ├─ snapshot/mem # Snapshot module
│ ├─ tests # Unit test cases
│ ├─ thread # Thread pool
│ ├─ tooling # JS debugger
│ └─ vmstat # Runtime status utility classes
└─ test # Module test cases
Constraints
- Only the bytecode file generated by the ARK JS frontend can be run.
- Only support ES2015 standard and strict mode ("use strict").
- Don't support dynamically create functions via string (e.g., new Function("console.log(1))).
Build
./build.sh --product-name Hi3516DV300 --build-target ark_js_runtime
Available APIs
For details, see NAPI.
Usage Guidelines
For details about how to generate JS bytecodes, see Using the Toolchain.
To run bytecodes:
cd out/release
LD_LIBRARY_PATH=clang_x64/ark/ark:clang_x64/global/i18n:../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/ ./clang_x64/ark/ark/ark_js_vm helloworld.abc _GLOBAL::func_main_0
Repositories Involved
Description
方舟JS运行时(ARK JavaScript Runtime)是OpenHarmony上JS应用使用的运行时。包含JS对象的分配器以及垃圾回收器(GC)、符合ECMAScript规范的标准库、用于运行ARK前端组件生成的方舟字节码(ARK Bytecode,abc)的解释器、用于存储隐藏类的内联缓存、方舟JS运行时对外的函数接口(AFFI)等模块。
Languages
C++
98%
TypeScript
0.9%
JavaScript
0.6%
Python
0.2%
Shell
0.2%
