Commit Graph

2190 Commits

Author SHA1 Message Date
2e60f37202 build(deps): bump ossf/scorecard-action from 2.3.1 to 2.4.0
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.1 to 2.4.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](0864cf1902...62b2cac7ed)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 10:45:37 +00:00
2baac8d9e0 build(deps): bump actions/upload-artifact from 3.1.0 to 4.4.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3.1.0...v4.4.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 10:45:34 +00:00
bd8c7a3a64 build(deps): bump github/codeql-action from 2.2.4 to 3.26.9
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.2.4 to 3.26.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v2.2.4...v3.26.9)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 10:45:28 +00:00
0e05b0a451 Add CODEOWNERS (#3822) 2024-09-29 12:54:00 +08:00
9ba36e284c Implement shared heap for AOT (#3815) 2024-09-29 12:50:59 +08:00
438b81bd04 Fix missing symbols when using aot mode on riscv platforms (#3812)
Add symbol __atomic_compare_exchange_4 and __atomic_store_4.
2024-09-28 21:55:09 +08:00
5ce6f90bd6 Add scoreboard CI for supply-chain security (#3819) 2024-09-27 15:52:00 +08:00
86926aa9d2 Fix unused param warning when GC is enabled (#3814) 2024-09-25 16:59:52 +08:00
e87f7a920d Fix Windows compile error when uvwasi is enabled (#3810)
No need to compile win_file.c when uvwasi is enabled.
2024-09-25 16:43:00 +08:00
c4aa1deda5 Add shared heap sample (#3806) 2024-09-20 16:13:20 +08:00
1fd422ae6e Merge branch main into dev/shared_heap 2024-09-20 14:34:00 +08:00
4dacef2d60 shared heap: Fix some issues and add basic unit test case (#3801)
Fix some issues and add basic unit test case for shared heap feature.

Signed-off-by: wenlingyun1 <wenlingyun1@xiaomi.com>
2024-09-20 14:24:38 +08:00
21330990a8 Add no_resolve to LoadArgs and wasm_runtime_resolve_symbols (#3790)
Add no_resolve to LoadArgs and wasm_runtime_resolve_symbols so one can
delay resolving of symbols.

This is useful for inspecting the module between loading and instantiating.
2024-09-20 08:54:09 +08:00
5e20cf383e Refactor shared heap feature for interpreter mode (#3794)
To add test cases and samples.
2024-09-18 14:53:41 +08:00
51a71092bf Support dynamic aot debug (#3788)
Enable dynamic aot debug feature which debugs the aot file
and is able to set the break point and do single step. Refer to
the README for the detailed steps.

Signed-off-by: zhangliangyu3 <zhangliangyu3@xiaomi.com>
2024-09-18 11:02:10 +08:00
e9cc8731da Restore cmake hidden compile symbol visibility (#3796)
This was originally fixed in #3655, but regressed in #3762 which removed
the `-fvisibility=hidden` flag from the CMakeLists.txt file.

This also removes extraneous ending whitespace from the file.
2024-09-18 10:24:30 +08:00
79e695e1a3 Fix a compile warning in aot_emit_function.c (#3793)
This just fixes an unused variable warning when WASM_ENABLE_AOT_STACK_FRAME is != 0.
2024-09-18 09:37:57 +08:00
d64a3ab6ec Fix aot multi export memory support (#3791) 2024-09-14 10:53:01 +08:00
92852f3719 Implement a first version of shared heap feature (#3789)
ps. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3546
2024-09-14 10:51:42 +08:00
926f662231 Add memory instance support apis (#3786)
Now that WAMR supports multiple memory instances, this PR adds some APIs
to access them in a standard way.

This involves moving some existing utility functions out from the
`WASM_ENABLE_MULTI_MODULE` blocks they were nested in, but multi-memory
and multi-module seem independent as far as I can tell so I assume that's okay.

APIs added:
```C
wasm_runtime_lookup_memory
wasm_runtime_get_default_memory
wasm_runtime_get_memory
wasm_memory_get_cur_page_count
wasm_memory_get_max_page_count
wasm_memory_get_bytes_per_page
wasm_memory_get_shared
wasm_memory_get_base_address
wasm_memory_enlarge
```
2024-09-14 10:31:13 +08:00
27b69176c1 Merge pull request #3792 from bytecodealliance/main
Merge branch main into dev/shared_heap
2024-09-13 12:44:42 +08:00
9aadbfee29 Ignore temporary file from aider (#3787)
Aider is AI pair programming in your terminal: https://aider.chat
2024-09-13 09:43:44 +08:00
9c2083a27f Implement option for skipping function index in the callstack (#3785)
Also add a script that converts instruction pointers to function indexes (or function names).

https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-11 16:08:37 +08:00
b882017674 Fix compiler warnings (#3784)
The definition of os_get_invalid_handle in platform_internal.h did not
match the declaration in platform_api_extension.h.
2024-09-11 08:59:16 +08:00
1a61cb75e1 Appease GCC -Wformat (#3783)
I'm not sure we want to use C99 %tu here.
While C99 %zu is more widely used in WAMR, %tu is rare (if any)
and I'm not sure if it's ubiquitously implemented in platforms
we support.
2024-09-10 14:53:11 +08:00
cd47438af9 spec_test_on_nuttx.yml: Disable riscv32_ilp32f for now (#3777)
It seems failing too frequently.

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3776
2024-09-10 10:58:22 +08:00
c276aca202 Fix compile error when multi-module and tags are enabled (#3781) 2024-09-10 09:55:15 +08:00
f453d9d5ce Appease GCC strict prototypes warning (#3775) 2024-09-10 09:42:23 +08:00
cbc2078898 AOT call stack optimizations (#3773)
- Implement TINY / STANDARD frame modes - tiny mode is only able to keep track on the IP
  and func idx, STANDARD mode provides more capabilities (parameters, stack pointer etc.).
- Implement FRAME_PER_FUNCTION / FRAME_PER_CALL modes - frame per function adds
  code at the beginning and at the end of each function for allocating / deallocating stack frame,
  whereas in per-call mode the frame is allocated before each call. The exception is call to
  the imported function, where frame-per-function mode also allocates the stack before the
  `call` instruction (as it can't instrument the imported function).

At the moment TINY + FRAME_PER_FUNCTION is automatically enabled in case GC and perf
profiling are disabled and `values` call stack feature is not requested. In all the other cases
STANDARD + FRAME_PER_CALL is used.

STANDARD + FRAME_PER_FUNCTION and TINY + FRAME_PER_CALL are currently not
implemented but possible, and might be enabled in the future.

ps. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-10 09:05:23 +08:00
0599351262 wasi-nn: Add a new target for llama.cpp as a wasi-nn backend (#3709)
Minimum support:
- [x] accept (WasmEdge) customized model parameters. metadata.
- [x] Target [wasmedge-ggml examples](https://github.com/second-state/WasmEdge-WASINN-examples/tree/master/wasmedge-ggml)
  - [x] basic
  - [x] chatml
  - [x] gemma
  - [x] llama
  - [x] qwen

---

In the future, to support if required:
- [ ] Target [wasmedge-ggml examples](https://github.com/second-state/WasmEdge-WASINN-examples/tree/master/wasmedge-ggml)
  - [ ] command-r. (>70G memory requirement)
  - [ ] embedding. (embedding mode)
  - [ ] grammar. (use the grammar option to constrain the model to generate the JSON output)
  - [ ] llama-stream. (new APIS `compute_single`, `get_output_single`, `fini_single`)
  - [ ] llava. (image representation)
  - [ ] llava-base64-stream. (image representation)
  - [ ] multimodel. (image representation)
- [ ] Target [llamaedge](https://github.com/LlamaEdge/LlamaEdge)
2024-09-10 08:45:18 +08:00
cb71ca5822 CI: Disable parallel test in spectest for NuttX (#3780) 2024-09-09 21:58:07 +08:00
b38a2e88a2 Fix building iwasm_shared and iwasm_static libs on win32 (#3762)
Fixes to enable building iwasm_shared and iwasm_static libraries on win32.
2024-09-06 11:01:54 +08:00
6f97822c18 Add wamrc parameter to configure stack frame features (#3763)
Those parameters can be used to reduce the size of the AOT code.

There's going to be more changes related to AOT code size reduction,
this is just the initial step.

p.s. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-05 21:44:06 +08:00
b4380fb3b1 refactoring: Re-use commit IP functionality between exception handling and other cases (#3768) 2024-09-05 16:18:47 +08:00
65521b188d Remove unnecessary code duplication in aot runtime (#3767) 2024-09-05 11:10:18 +08:00
fed0fe953c compilation_on_nuttx.yml: Update checkout action to suppress warnings (#3765) 2024-09-04 12:08:25 +08:00
5cc94e59ec Improve posix mmap retry logic (#3714)
- Only retry on EAGAIN, ENOMEM or EINTR.
- On EINTR, don't count it against the retry budget, just keep retrying.
  EINTR can happen in bursts.
- Log the errno on failure, and don't conditionalize that logging on
  BH_ENABLE_TRACE_MMAP. In other parts of the code, error logging is not
  conditional on that define, while turning on that tracing define makes
  things overly verbose.
2024-09-03 11:03:24 +08:00
0b62cc8921 Update ref to the multi-memory tests (#3764)
The specific commit has been deleted, I am pointing to the same commit in the main branch though.
2024-09-03 10:39:03 +08:00
eab409a4df aot loader: Call os_mmap with MMAP_MAP_32BIT only when target is x86-64 or riscv64 (#3755)
Mac on aarch64 uses posix_memmap.c os_mmap which doesn't do anything with
the flag MMAP_MAP_32BIT for that build so this condition ends up asserting unless
the mapping ends up in the first 4 gigs worth of addressable space.

Thsi PR changes to call os_mmap with MMAP_MAP_32BIT flag only when the target
is x86-64 or riscv64, and the macro __APPLE__ isn't enabled. The behavior is similar
to what the posix os_mmap does.
2024-08-29 15:25:17 +08:00
d1141f6f30 aot compiler: Allow to control stack boundary check when boundary check is enabled (#3754)
In the AOT compiler, allow the user to control stack boundary check when the boundary
check is enabled (e.g. `wamrc --bounds-checks=1`). Now the code logic is:

1. When `--stack-bounds-checks` is not set, it will be the same value as `--bounds-checks`.
2. When `--stack-bounds-checks` is set, it will be the option value no matter what the
    status of `--bounds-checks` is.
2024-08-29 11:08:39 +08:00
20949bdc82 Merge pull request #3757 from bytecodealliance/dev/merge_aot_data_text
Merge branch dev/merge_aot_data_text into main to keep the commit history.
2024-08-29 09:03:50 +08:00
a8d539d84d Merge branch 'main' into dev/merge_aot_data_text 2024-08-29 08:49:33 +08:00
cb3a69f778 CI: Freeze version of bloaty for NuttX compilation (#3756)
Fix the compilation error of this CI:
https://github.com/bytecodealliance/wasm-micro-runtime/actions/runs/10575515238

```
/__w/wasm-micro-runtime/wasm-micro-runtime/bloaty/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc:139:32: error: no matching function for call to 'max(long int, int)'
  139 |   size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
      |                        ~~~~~~~~^~~~~~~~~~~~~~~~~
```
2024-08-28 16:05:07 +08:00
e8c2952bf9 Fix arm64 issues on mac (#3688)
Make wamrc normalize "arm64" to "aarch64v8". Previously the only way to
make the "arm64" target was to not specify a target on 64 bit arm-based
mac builds. Now arm64 and aarch64v8 are treated as the same.

Make aot_loader accept "aarch64v8" on arm-based apple (as well as
accepting legacy "arm64" based aot targets).

This also removes __APPLE__ and __MACH__ from the block that defaults
size_level to 1 since it doesn't seem to be supported for aarch64:
`LLVM ERROR: Only small, tiny and large code models are allowed on AArch64`
2024-08-23 09:49:06 +08:00
b00904b092 Add a comment on AOT_SECTION_TYPE_SIGNATURE (#3746)
cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3744
2024-08-22 12:35:25 +08:00
5164acab46 Merge pull request #3737 from bytecodealliance/main
Merge branch main into dev/shared_heap
2024-08-21 13:51:52 +08:00
67dce48201 Enable merged os_mmap for aot data sections and aot text (#3743)
Enable merged os_mmap for aot data sections first, and try enabling merged
os_mmap for them and aot text except on platform nuttx and esp-idf.

This fixes the issue that aarch64 AOT module fails to load on android:
https://github.com/bytecodealliance/wasm-micro-runtime/issues/2274

And also refine os_mmap related code.
2024-08-21 12:55:34 +08:00
1329e1d3e1 Add support for multi-memory proposal in classic interpreter (#3742)
Implement multi-memory for classic-interpreter. Support core spec (and bulk memory) opcodes now,
and will support atomic opcodes, and add multi-memory export APIs in the future. 

PS: Multi-memory spec test patched a lot for linking test to adapt for multi-module implementation.
2024-08-21 12:22:23 +08:00
9423fee046 Merge pull request #3739 from bytecodealliance/main
Merge branch main into dev/merge_aot_data_text
2024-08-21 09:51:22 +08:00
f4383a9e62 Use node 18.x to build vscode extension (#3735)
Fix the issue of releasing wamr-ide vscode extension:
https://github.com/bytecodealliance/wasm-micro-runtime/actions/runs/10467675321/job/28987014745
2024-08-20 17:03:28 +08:00