Commit Graph
64 Commits
Author SHA1 Message Date
liang.heandGitHub f0632edc37 Clone the input binary during wasm_module_validate (#2483) 2023-08-21 19:43:28 +08:00
liang.heandGitHub ecd4fccc96 Upgrade XNNPACK workload (#2394)
- Sync source code to b9d4073a6913891ce9cbd8965c8d506075d2a45a, which is
  referred by tensorflow
- Upgrade emscripten to 3.1.44
- CMake outputs are .wasm files and .aot files
2023-08-01 19:13:00 +08:00
liang.heandGitHub 48429da29f Fix compilation errors of workload xnnpack and meshoptimizer (#2081) 2023-03-30 21:15:21 +08:00
liang.heandGitHub d0fb2716b6 Fix several issues in CI binary releasing (#2064) 2023-03-26 12:19:45 +08:00
liang.heandGitHub 915b4d2a89 Fix few wasm-c-api python binding issues (#2029)
How to python language binding test cases:
```
$ cd <wamr_dir>/language-bindings/python
$ python -m pip install -e .
$ cd wasm-c-api
$ python -m unittest tests/test_basic.py
$ python -m unittest tests/test_advanced.py
```
2023-03-15 12:34:34 +08:00
liang.heandGitHub 91eafa1ead Make a workaround for EGO when fstat returns NOT_SUPPORT (#1970)
The problem was found by a `Golang + WAMR (as CGO)` wrapped by EGO
in SGX Enclave.

`fstat()` in EGO returns dummy values:
- EGO uses a `mount` configuration to define the mount points that apply
  the host file system presented to the Encalve.
- EGO has a different programming model: the entire application runs inside
  the enclave. Manual ECALLs/OCALLs by application code are neither
  required nor possible.

Add platform ego and add macro control for the return value checking of
`fd_determine_type_rights` in libc-wasi to resolve the issue.
2023-02-21 11:11:27 +08:00
liang.heandGitHub 3698f2279b Improve wasm-c-api instantiation-time linking (#1902)
Add APIs to help prepare the imports for the wasm-c-api `wasm_instance_new`:
- wasm_importtype_is_linked
- wasm_runtime_is_import_func_linked
- wasm_runtime_is_import_global_linked
- wasm_extern_new_empty

For wasm-c-api, developer may use `wasm_module_imports` to get the import
types info, check whether an import func/global is linked with the above API,
and ignore the linking of an import func/global with `wasm_extern_new_empty`.

Sample `wasm-c-api-import` is added and document is updated.
2023-02-13 15:06:04 +08:00
liang.heandGitHub 7401718311 Report error in instantiation when meeting unlinked import globals (#1859) 2023-01-06 15:24:11 +08:00
liang.heandGitHub bf2be805f9 Add more checks about the imports of wasm_instance_new (#1843)
Check whether the `imports` argument is NULL in wasm_instance_new and check
the import count of each kind.

Fix issue reported by https://github.com/bytecodealliance/wasm-micro-runtime/issues/1833
2023-01-03 17:16:49 +08:00
liang.heandGitHub 676c3c7b04 Fix failure about preopen of reactor modules (#1816)
Support modes:
- run a commander module only
- run a reactor module only
- run a commander module and a/multiple reactor modules together
  commander propagates WASIArguments to reactors
2022-12-27 12:59:17 +08:00
liang.heandWenyong Huang b826a84cd6 Use boringssl instead of openssl to implement wasm cache loading (#1804) 2022-12-20 14:37:07 +08:00
liang.heandWenyong Huang 97a255ea83 Move the release note template content to the end of file (#1795)
Fix the issue that the release notes cannot be successfully created when
releasing a new version.
2022-12-20 14:37:07 +08:00
liang.heandGitHub 294a625fe5 Use boringssl instead of openssl to implement wasm cache loading (#1804) 2022-12-13 14:23:37 +08:00
liang.heandGitHub 14492757f8 Move the release note template content to the end of file (#1795)
Fix the issue that the release notes cannot be successfully created when
releasing a new version.
2022-12-08 20:09:49 +08:00
liang.heandGitHub f6d67c1cda Enable wasm cache loading in wasm-c-api (#1759)
Use sha256 to hash binary file content. If the incoming wasm binary is
cached before, wasm_module_new() simply returns the existed one.

Use -DWAMR_BUILD_WASM_CACHE=0/1 to control the feature.
OpenSSL 1.1.1 is required if the feature is enabled.
2022-12-05 12:25:26 +08:00
liang.heandGitHub 84a23d43ec wasm-c-api: Fix init/destroy thread env multiple times issue (#1766)
Record the store number of current thread with struct thread_local_stores
or tls thread_local_stores_num to fix the issue:
- Only call wasm_runtime_init_thread_env() in the first wasm_store_new of
  current thread
- Only call wasm_runtime_destroy_thread_env() in the last wasm_store_delete
  of current thread

And remove the unused store list in the engine.
2022-12-05 11:16:14 +08:00
liang.heandGitHub fc8f70cfa4 Fix issues detected by Coverity (#1776)
- wasm_func_call always return trap if failed
- in Debug, always run LEAK_TEST in samples/wasm-c-api
2022-12-01 22:03:09 +08:00
liang.heandGitHub 216b2cb540 Fix a typo in workflow (#1760) 2022-11-30 14:00:30 +08:00
liang.heandGitHub eaedceca2f Add bh_print_proc_mem() to dump memory info of current process (#1734)
Only support Posix platforms currently, read memory consumption info from
file "/proc/self/status".
2022-11-25 08:33:44 +08:00
liang.heandGitHub 3daa512925 Remove unused export index check in wasm-c-api (#1720) 2022-11-20 18:47:02 +08:00
liang.heandGitHub 021130f4a3 Add more compilation groups of fast jit into CI (#1717) 2022-11-17 16:46:25 +08:00
liang.heandGitHub c718e76dea Use wabt binary instead of building from source in spec test (#1700)
Directly download wabt binary and use it in spec test instead of
building it from source to fasten the spec test.
2022-11-14 15:16:22 +08:00
liang.heandGitHub 30ee992762 Add wasm_module_obtain() to clone wasm_module_t (#1660)
Also add support for wasm_shared_module_t, and add lock for
wasm_module_t related operations.

And add wasm-c-api sample threads, update sample clone.
2022-11-09 12:50:58 +08:00
liang.heandGitHub f1f6f4a125 Remove unused codes in AOT compiler (#1668)
Remove the setup of JIT LLVMOrcIRTransformLayerSetTransform and
LLVMOrcObjectTransformLayerSetTransform which is commented.
2022-11-02 08:32:16 +08:00
liang.heandGitHub a1f7832625 Remove an improper assumption when creating wasm_trap (#1657)
Allow to have multiple stores in an engine and multiple instances
in a store. Letting a wasm_function_t pass its wasm_store_t to make
it more efficient.
2022-11-01 11:56:28 +08:00
liang.heandGitHub dba9e52f2f Change wasm-c-api default log level (#1658)
Change wasm-c-api default log level to output less logs by default:
- For debug mode, change log level from 5 to 4
- For release mode, change log level from 3 to 2
2022-10-31 14:02:00 +08:00
liang.heandGitHub b5eea934cf Maintain semantic version info in core/version.h (#1630)
Remove version info from config_common.cmake, ref to #1617
2022-10-24 12:46:03 +08:00
liang.heandGitHub 1c5034bdfa Fix a bug of the return value of memory_instantiate (#1616)
Since `memory` is not NULL, memory_instantiate will return non-null
value when failed.
2022-10-19 07:23:03 +08:00
liang.heandGitHub 1effda4cb5 Fix isssues detected by coverity (#1529)
Add return value checks
Append string terminator
2022-09-29 13:28:18 +08:00
liang.heandGitHub 29dee732e9 Fix typo in simd_conversions.c (#1428)
Change "==" to "=" when setting trunc_type[] array elements.
2022-08-29 18:01:19 +08:00
liang.heandGitHub 717e8a48e2 Enable the semantic version mechanism for WAMR (#1374)
Use the semantic versioning (https://semver.org) to replace the current date
versioning system, which is more general and is requested by some developers,
e.g. issue #1357.

There are three parts in the new version string:
- major. Any incompatible modification on ABIs and APIs will lead to an increment
  in the value of major, which mainly includes: AOT calling conventions, AOT file
  format, wasm_export.h, wasm_c_api.h, and so on.
- minor. It represents new features, including MVP/POST-MVP features, libraries,
  WAMR private ones, and so one.
- patch. It represents patches.

The new version will start from 1.0.0. Update the help info and version showing for
iwasm and wamrc.
2022-08-18 19:01:05 +08:00
liang.heandGitHub aa7d447ee5 Update Ubuntu CI platforms to 20.04 and 22.04 (#1385)
From Gtihub:
The ubuntu-18.04 environment is deprecated, consider switching to
ubuntu-20.04 (ubuntu-latest), or ubuntu-22.04 instead.
https://github.com/actions/runner-images/issues/6002
2022-08-16 10:02:02 +08:00
liang.heandGitHub 0020b3ae68 Add a dev docker container for WAMR repo (#1260)
- in vscode, open the workspace in container with *Remote-Containers*
- in codespaces, it will create a container
2022-08-04 17:00:38 +08:00
liang.heandGitHub ab752cd5c3 Apply latest env variables in github host runner to fix CI (#1334)
Currently we are using `ANDROID_HOME` and `ANDROID_NDK_LATEST_HOME`.
All variables should follow definitions in https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md#environment-variables-3
2022-07-27 14:11:51 +08:00
liang.heandGitHub 1ee0d90d81 Add import subtyping validation (#1308)
According to import subtyping validation:
  https://webassembly.github.io/spec/core/valid/types.html#import-subtyping
wasm-c-api needs to check types when linking.
2022-07-20 18:31:19 +08:00
liang.heandGitHub 0f6e5a55a4 Fix sub module's aux stack info not synchronized to main module issue (#1279)
Sub module's auxiliary stack boundary and bottom may be different from
main module's counterpart, so when calling sub module, its aux stack info
should be gotten and set to exec_env firstly, or aux stack overflow and out
of bounds memory access exception may be thrown when calling sub
module's function.
Fix the issue reported in PR #1278.
2022-07-11 19:42:29 +08:00
liang.heandGitHub f975a987bf Separate MacOS workflows from the big one (#1236)
Separate MacOS workflows from the big one so as to avoid too much tasks
And optimize the total duration by reducing getting LLVM libraries times
2022-06-17 17:44:20 +08:00
liang.heandGitHub 565c1c04db Fix bh_vector extend_vector not locked issue (#1187)
Fix issue that func `extend_vector` isn't locked in vector insert and append.
2022-05-24 09:10:43 +08:00
liang.heandGitHub ceaf7dc660 Fix invalid calculation of total size of bytes to send and recv (#1162)
The total size of bytes to send and recv should be set to 0 before calculation,
but not including the size of iovec_app_t structure.
2022-05-10 10:43:34 +08:00
liang.heandGitHub 3ba2d7e7de Fix socket-api send/recv issue and c-api sample callback_chain issue (#1158)
Re-implement socket api send/recv in an atomic-like way, fix the return value
check in posix.c.
And fix wasm-c-api sample callback_chain calling malloc issue.
2022-05-09 16:52:43 +08:00
liang.heandGitHub ed512c6867 Fix issues detected by Coverity (#1154)
wasm_c_api.c: add more checks, fix LOG_WARNING invalid specifier
aot_emit_aot_file: fix strncpy max size length to copy
posix.c: fix potential socket not close issue
wasm-c-api samples: add return value checks for fseek/ftell
cJSON.c: remove dead code
2022-05-07 18:53:02 +08:00
liang.heandGitHub d7097fbce8 Add more checks for wasm-c-api interfaces (#1121)
Protect c-api from unlinked runtime objects
Fix a potential memory leak
Remove unused `imports` in `wasm_instance_t`
2022-04-27 13:28:27 +08:00
liang.heandGitHub 78e099b6ab Add more input checks for some wasm-c-api functions (#1090)
Protect wasm_valtype_new and wasm_tabletype_new from invalid inputs
2022-04-18 19:55:31 +08:00
liang.heandGitHub 559a0502f1 Enable socket-api recvmsg() and sendmsg() (#1042)
Implement socket-api `recvmsg()` and `sendmsg()` for wasm app,
add sample and update document.
2022-03-30 15:57:40 +08:00
liang.heandGitHub 86b79cfb93 Enable lock for Vector to protect wasm-c-api read/write/extend operations (#1010) 2022-03-23 11:42:57 +08:00
liang.heandGitHub 310b9ca0d8 Fix classic interpreter handling BLOCK/IF/LOOP issue (#1051)
`PUSH_CSP()` should set label's begin frame_sp as the bottom of current label's stack
but not the top of it
2022-03-20 18:07:33 +08:00
liang.heandGitHub 9eb3ed6b15 Update documents about building wasm app with wasi-sdk (#955)
Checked with grammarly
2022-01-13 16:43:05 +08:00
liang.heandGitHub 6917137ba5 Fix a typo in ci/Dockerfile (#953) 2022-01-13 14:49:29 +08:00
liang.heandGitHub 36b8f8fca2 Use clang+llvm released binaries instead of "apt install" in Dockerfile (#952) 2022-01-13 12:15:59 +08:00
liang.heandGitHub ff997c287a Update document of multi-module (#930) 2022-01-05 14:32:48 +08:00
liang.heandGitHub 20867c9227 Fix XNNPACK workload build error (#922) 2021-12-29 22:08:40 +08:00
liang.heandGitHub 50b6474f54 Add WASI ABI compatibility check for multi-module (#913)
Refer to https://github.com/WebAssembly/WASI/blob/main/design/application-abi.md
to check the WASI ABI compatibility:
- Command (main module) may export _start function with signature "()"
- Reactor (sub module) may export _initialize function with signature "()"
- _start and _initialize can not be exported at the same time
- Reactor cannot export _start function
- Command and Reactor must export memory

And
- Rename module->is_wasi_module to module->import_wasi_api
- Refactor wasm_loader_find_export()
- Remove MULTI_MODULE related codes from mini_loader
- Update multi-module samples
- Fix a "use-after-free" issue. Since we reuse the memory instance of sub module,
   just to protect it from freeing an imported memory instance
2021-12-29 11:04:36 +08:00
liang.heandGitHub f2d87ec02e code guideline: Fix bug of mischeck file name with '_' (#901)
Fix bug that code guideline reports error when there is '_' in new file's name.
And add unit test cases, which can be run with `pyhton3 -m unitest <filename>`.
2021-12-16 16:50:15 +08:00
liang.heandGitHub e70867c64f Update spec test cases to latest version (#889)
Update spec test cases to commit 2460ad02b51fb5ed5824f44de287a8638b19a5f8,
and modify wamr test suite script as the SIMD cases have been added into spec
main repo by default, no need to clone SIMD repo again when testing SIMD.
2021-12-15 14:39:54 +08:00
liang.heandGitHub 1dccf39d16 Enable ref types and bulk memory by default for wamrc (#838)
Enable ref types feature and bulk memory feature by default for wamrc
and provide "--disable-ref-types", "--disable-bulk-memory"  to disable
them.
And remove the ref_type_flag option in wasm_loader.c which is used to
control whether to enable ref types or not when ENABLE_REF_TYPES
macro is enabled in wamrc. As the wasm binary format with ref types
is compatible with the binary format before, we can remove the option.
Also update the spec test scripts.
2021-11-18 17:42:49 +08:00
liang.heandGitHub 5b62fdd061 [skip ci] reorder options of test_wamr.sh (#824) 2021-11-10 09:41:42 +08:00
liang.heandGitHub 69c004efb4 Enable SGX spec test for AOT mode and add SIMD option (#821) 2021-11-08 17:53:17 +08:00
liang.heandGitHub 487072a78e Speed up the spec case test by parallelism (#819)
Port spec-test-script/all.sh to spec-test-script/all.py and enable to run
spec cases with multiple threads parallelly:
- It reduces spec_test.yml from ~14min to ~9min and reduces
  compilation_on_sgx.yml from ~18min to ~12min
- run `./test_wamr.sh` will keep the same experience likes before by default
- run `./test_wamr.sh -P` will enable parallelism mode
- in parallelism mode, all.py will be in a less-output mode. It only outputs
  the last words of failed cases and will not output logs for those passed
2021-11-08 12:39:02 +08:00
liang.heandGitHub c591610111 Add CI tasks on SGX platform (#817)
Add CI tasks on SGX platform:
  build iwasm with some feature combinations
  build and run some samples
  test spec cases with interpreter mode and AOT mode
2021-11-05 19:07:54 +08:00
liang.heandGitHub 3d5a0bff0f Enhance workflows by caching llvm directories directly (#805)
Enhance workflows by caching llvm directories directly instead of
caching the llvm-xxx.tar.gz packages, so as to reduce the time
consumption of unpacking the cached LLVM packages.
2021-10-27 17:26:17 +08:00
liang.heandGitHub 1a987ae59b Refine wamr-sdk build scripts (#801)
Avoid hardcoding the path of wasi-sdk in wamr_toolchain.cmake,
allow passing -w [wasi-sdk path] to build_sdk.sh,
allow passing OUT_DIR to app-sdk and runtime-sdk,
and optimize message information.
2021-10-26 14:20:29 +08:00
liang.heandGitHub 225f5d0a64 Enable to trigger code guideline checks when PR is created (#790)
Enable to trigger code guideline checks for C/C++ source codes when PR is created
2021-10-19 17:42:54 +08:00
liang.heandGitHub b46b663c16 Enhance spec test workflow to support x86_32 target (#787)
Enable test spec cases on x86_32 target when PR is created.
And Format shell script with [shellfmt](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format).
2021-10-15 17:05:07 +08:00
liang.heandGitHub 250aba6874 Sync up with wabt latest modification (#296) (#786)
- Remove "--enable-reference-types" and "--enable-bulk-memory" for wat2wasm
to support finished proposals.

- Ignore invalid module in the thread spec repo:
``` wast
;; my_elem.wast
(module
  (table $t 10 funcref)
  (func $f)
  (elem $t (i32.const 0) 0)
  (elem $t (i32.const 0) $f $f)
  (elem $t (offset (i32.const 0)) $f $f)
)
```

run with reference interpreter under spec/interpreter:
``` shell
$ ./wasm ../../../my_elem.wast
../../../my_elem.wast:5.9-5.11: syntax error: duplicate elem segment $t
```

- use a specific commit instead of the latest commit on the thread spec repo
2021-10-14 15:48:45 +08:00