wasm-micro-runtime/language-bindings/python
Wenyong Huang 0ee5ffce85
Refactor APIs and data structures as preliminary work for Memory64 (#3209)
# Change the data type representing linear memory address from u32 to u64

## APIs signature changes
- (Export)wasm_runtime_module_malloc
  - wasm_module_malloc
    - wasm_module_malloc_internal
  - aot_module_malloc
    - aot_module_malloc_internal
- wasm_runtime_module_realloc
  - wasm_module_realloc
    - wasm_module_realloc_internal
  - aot_module_realloc
    - aot_module_realloc_internal
- (Export)wasm_runtime_module_free
  - wasm_module_free
    - wasm_module_free_internal
  - aot_module_malloc
    - aot_module_free_internal
- (Export)wasm_runtime_module_dup_data
  - wasm_module_dup_data
  - aot_module_dup_data
- (Export)wasm_runtime_validate_app_addr
- (Export)wasm_runtime_validate_app_str_addr
- (Export)wasm_runtime_validate_native_addr
- (Export)wasm_runtime_addr_app_to_native
- (Export)wasm_runtime_addr_native_to_app
- (Export)wasm_runtime_get_app_addr_range
- aot_set_aux_stack
- aot_get_aux_stack
- wasm_set_aux_stack
- wasm_get_aux_stack
- aot_check_app_addr_and_convert, wasm_check_app_addr_and_convert
  and jit_check_app_addr_and_convert
- wasm_exec_env_set_aux_stack
- wasm_exec_env_get_aux_stack
- wasm_cluster_create_thread
- wasm_cluster_allocate_aux_stack
- wasm_cluster_free_aux_stack

## Data structure changes
- WASMModule and AOTModule
  - field aux_data_end, aux_heap_base and aux_stack_bottom
- WASMExecEnv
  - field aux_stack_boundary and aux_stack_bottom
- AOTCompData
  - field aux_data_end, aux_heap_base and aux_stack_bottom
- WASMMemoryInstance(AOTMemoryInstance)
  - field memory_data_size and change __padding to is_memory64
- WASMModuleInstMemConsumption
  - field total_size and memories_size
- WASMDebugExecutionMemory
  - field start_offset and current_pos
- WASMCluster
  - field stack_tops

## Components that are affected by the APIs and data structure changes
- libc-builtin
- libc-emcc
- libc-uvwasi
- libc-wasi
- Python and Go Language Embedding
- Interpreter Debug engine
- Multi-thread: lib-pthread, wasi-threads and thread manager
2024-03-12 11:38:50 +08:00
..
src/wamr Refactor APIs and data structures as preliminary work for Memory64 (#3209) 2024-03-12 11:38:50 +08:00
utils wamr-python: Enable debugging WASM and grant dir access (#2449) 2023-08-15 10:32:43 +08:00
wamr-api wamr-python: Enable debugging WASM and grant dir access (#2449) 2023-08-15 10:32:43 +08:00
wasm-c-api Allow overriding max memory on module instantiation (#3198) 2024-03-05 17:53:26 +08:00
.gitignore Implement Python language binding (#1192) (#1195) 2022-05-31 16:39:46 +08:00
LICENSE Implement Python language binding (#1192) (#1195) 2022-05-31 16:39:46 +08:00
MANIFEST.in Add WAMR API bindings in Python (#1959) 2023-02-16 15:21:28 +08:00
pyproject.toml Fix wamrapi python binding for darwin (#1978) 2023-02-21 18:35:15 +08:00
README.md The Python language-binding needs python>=3.9 (#2228) 2023-05-24 08:15:28 +08:00
setup.py The Python language-binding needs python>=3.9 (#2228) 2023-05-24 08:15:28 +08:00

wamr-python

The WAMR Python package contains a set of high-level bindings for WAMR API and WASM-C-API.

Installation

  • Notice: This python package need python >= 3.9.

To Install from local source tree in development mode run the following command,

python -m pip install -e .

In this mode the package appears to be installed but still is editable from the source tree.

Usage

From the same package you can use two set of APIs.

To use the WAMR API you can import the symbols as follows,

from wamr.wamrapi.wamr import Engine, Module, Instance, ExecEnv

In the order hand, to use the WASM-C-API,

import wamr.wasmcapi.ffi as ffi

For more information: