Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
ad0ef19
refactor: add explicit cast in freebsd_pow bit operation (#4960)
lum1n0us Jun 8, 2026
003e696
build(deps): Bump github/codeql-action from 4.36.0 to 4.36.2 (#4962)
dependabot[bot] Jun 9, 2026
26756a5
build(deps): Bump actions/checkout from 6.0.2 to 6.0.3 (#4963)
dependabot[bot] Jun 9, 2026
1f98fb0
Merge commit from fork
lum1n0us Jun 25, 2026
e571797
Merge commit from fork
shumbo Jun 25, 2026
e830d9f
check buffer before reading branch hint data byte (#4965)
netliomax25-code Jun 30, 2026
d019d65
build(deps): Bump github/codeql-action/upload-sarif (#4971)
dependabot[bot] Jun 30, 2026
e63206f
build(deps): Bump actions/cache from 5 to 6 (#4970)
dependabot[bot] Jun 30, 2026
5ee03ea
build(deps): Bump actions/checkout from 6.0.3 to 7.0.0 (#4967)
dependabot[bot] Jun 30, 2026
0e65961
docs: updates security runbook with additional guidance for security …
srberard Jul 3, 2026
9bc0cda
Fix the currently-failing CodeQL workflow and run it on pull requests…
matthargett Jul 5, 2026
4b735b5
build(deps): Bump github/codeql-action/upload-sarif (#4985)
dependabot[bot] Jul 8, 2026
e8846ac
build(deps): Bump github/codeql-action from 4.36.2 to 4.36.3 (#4986)
dependabot[bot] Jul 8, 2026
a23ddd9
ci: free disk space before the LLVM cache restore in the linux test j…
matthargett Jul 8, 2026
a701873
build(deps): Bump github/codeql-action/upload-sarif (#4993)
dependabot[bot] Jul 13, 2026
978ce3f
build(deps): Bump github/codeql-action from 4.36.3 to 4.37.0 (#4994)
dependabot[bot] Jul 13, 2026
0b9db98
windows: fix MinGW-w64 build of win_file.c (#4987)
hjiawei Jul 15, 2026
c6fbf20
addr2line: collapse modern/legacy resolvers into always-on interval-t…
TianlongLiang Jul 15, 2026
f092e95
ci: run coding-guidelines on ubuntu-24.04 with clang-format-21 + refo…
matthargett Jul 16, 2026
eb9cc24
samples(debug-tools): refresh existing sample for the addr2line refactor
TianlongLiang Jun 25, 2026
bda2e0a
samples(debug-tools-optimized): add production-debug workflow sample
TianlongLiang Jun 25, 2026
d002f81
addr2line: add pytest test suite
TianlongLiang Jun 25, 2026
392e7cc
ci: validate addr2line.py and the debug-tools samples
TianlongLiang Jul 15, 2026
2ce279c
feat(interpreter): legacy exception handling (throw-only) for fast-in…
matthargett May 17, 2026
30c8275
fast-interp: loader-side exception-handler metadata table
matthargett May 17, 2026
692bd29
fast-interp: runtime EH-frame stack + TRY push / END(try) pop
matthargett May 17, 2026
38558f5
fast-interp: WASM_OP_THROW catch-walk + return_func exception hook
matthargett May 18, 2026
8d0851c
fast-interp: WASM_OP_RETHROW catch-walk re-raise
matthargett May 18, 2026
631e355
fast-interp: WASM_OP_DELEGATE forward-to-outer dispatch
matthargett May 18, 2026
314687b
fast-interp: tag-with-params payload routing (same-function dispatch)
matthargett May 18, 2026
54529d5
fast-interp: tag-with-params loader bug-fix pass
matthargett May 18, 2026
6962696
fast-interp: result-typed try-region COPY-at-CATCH alignment
matthargett May 18, 2026
d5386f3
fast-interp: warn on br/br_if/br_table across try-region boundary
matthargett May 18, 2026
51a02c1
fast-interp: __builtin_expect cold-path hints on CALL_INDIRECT bounds…
matthargett May 18, 2026
0f0b686
test_wamr.sh: enable wasm spec EH suite for fast-interp
matthargett May 18, 2026
69243b6
fast-interp: unwind skipped EH entries on outer-catch dispatch
matthargett May 19, 2026
d74971f
fast-interp: trap on cross-function exception payload propagation
matthargett May 19, 2026
a8a0014
fast-interp: reject br/br_if/br_table to loop entry from inside try-r…
matthargett May 19, 2026
5c23b22
fixup: MSVC `__builtin_expect` shim for the cold-path hints
matthargett May 21, 2026
01dfad5
fast-interp legacy-EH: fix four loader/runtime correctness bugs
matthargett Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# using [clang-formt-12 options](https://releases.llvm.org/12.0.0/tools/clang/docs/ClangFormatStyleOptions.html)
# using [clang-format-21 options](https://releases.llvm.org/21.1.0/tools/clang/docs/ClangFormatStyleOptions.html)
RawStringFormats:
- Language: Cpp
Delimiters:
Expand Down
44 changes: 33 additions & 11 deletions .github/actions/install-wasi-sdk-wabt/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ inputs:
os:
description: "Operating system to install on (ubuntu, macos)"
required: true
# Default 29 because addr2line.py (samples/debug-tools*) requires
# llvm-symbolizer / llvm-addr2line, which only ship in wasi-sdk 29+.
# Callers can pin a different version when they have a specific need.
wasi_sdk_version:
description: "wasi-sdk major version to install (e.g. '25', '29', '33')"
required: false
default: "29"

runs:
using: "composite"
Expand All @@ -29,13 +36,17 @@ runs:
- name: Set up wasi-sdk and wabt on Ubuntu
if: ${{ startsWith(inputs.os, 'ubuntu') }}
shell: bash
env:
SDK_VER: ${{ inputs.wasi_sdk_version }}
run: |
SDK_DIR="wasi-sdk-${SDK_VER}.0-x86_64-linux"
echo "Downloading wasi-sdk for Ubuntu..."
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga \
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${SDK_VER}/${SDK_DIR}.tar.gz"

echo "Extracting wasi-sdk..."
sudo tar -xf wasi-sdk.tar.gz
sudo ln -sf wasi-sdk-25.0-x86_64-linux/ wasi-sdk
sudo ln -sf "${SDK_DIR}/" wasi-sdk

echo "Downloading wabt for Ubuntu..."
sudo wget -O wabt.tar.gz --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/1.0.37/wabt-1.0.37-ubuntu-20.04.tar.gz
Expand All @@ -47,19 +58,23 @@ runs:
/opt/wasi-sdk/bin/clang --version
/opt/wabt/bin/wasm-interp --version

echo "::notice::wasi-sdk-25 and wabt-1.0.37 installed on ubuntu"
echo "::notice::wasi-sdk-${SDK_VER} and wabt-1.0.37 installed on ubuntu"
working-directory: /opt

- name: Set up wasi-sdk and wabt on macOS on Intel
if: ${{ inputs.os == 'macos-15-intel' }}
shell: bash
env:
SDK_VER: ${{ inputs.wasi_sdk_version }}
run: |
SDK_DIR="wasi-sdk-${SDK_VER}.0-x86_64-macos"
echo "Downloading wasi-sdk for macOS on Intel..."
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-macos.tar.gz
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga \
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${SDK_VER}/${SDK_DIR}.tar.gz"

echo "Extracting wasi-sdk..."
sudo tar -xf wasi-sdk.tar.gz
sudo ln -sf wasi-sdk-25.0-x86_64-macos wasi-sdk
sudo ln -sf "${SDK_DIR}" wasi-sdk

echo "Downloading wabt for macOS on Intel..."
sudo wget -O wabt.tar.gz --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/1.0.36/wabt-1.0.36-macos-12.tar.gz
Expand All @@ -71,19 +86,23 @@ runs:
/opt/wasi-sdk/bin/clang --version
/opt/wabt/bin/wasm-interp --version

echo "::notice::wasi-sdk-25 and wabt-1.0.36 installed on ${{ inputs.os }}"
echo "::notice::wasi-sdk-${SDK_VER} and wabt-1.0.36 installed on ${{ inputs.os }}"
working-directory: /opt

- name: Set up wasi-sdk and wabt on macOS on ARM
if: ${{ inputs.os == 'macos-15' }}
shell: bash
env:
SDK_VER: ${{ inputs.wasi_sdk_version }}
run: |
SDK_DIR="wasi-sdk-${SDK_VER}.0-arm64-macos"
echo "Downloading wasi-sdk for macOS on ARM..."
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-arm64-macos.tar.gz
sudo wget -O wasi-sdk.tar.gz --progress=dot:giga \
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${SDK_VER}/${SDK_DIR}.tar.gz"

echo "Extracting wasi-sdk..."
sudo tar -xf wasi-sdk.tar.gz
sudo ln -sf wasi-sdk-25.0-arm64-macos wasi-sdk
sudo ln -sf "${SDK_DIR}" wasi-sdk

echo "Downloading wabt for macOS on ARM..."
sudo wget -O wabt.tar.gz --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/1.0.37/wabt-1.0.37-macos-14.tar.gz
Expand All @@ -95,20 +114,23 @@ runs:
/opt/wasi-sdk/bin/clang --version
/opt/wabt/bin/wasm-interp --version

echo "::notice::wasi-sdk-25 and wabt-1.0.37 installed on ${{ inputs.os }}"
echo "::notice::wasi-sdk-${SDK_VER} and wabt-1.0.37 installed on ${{ inputs.os }}"
working-directory: /opt

- name: Set up wasi-sdk and wabt on Windows
if: ${{ startsWith(inputs.os, 'windows') }}
shell: bash
env:
SDK_VER: ${{ inputs.wasi_sdk_version }}
run: |
choco install -y wget

mkdir -p /opt/wasi-sdk
mkdir -p /opt/wabt

echo "Downloading wasi-sdk for Windows..."
wget -O wasi-sdk.tar.gz --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-windows.tar.gz
wget -O wasi-sdk.tar.gz --progress=dot:giga \
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${SDK_VER}/wasi-sdk-${SDK_VER}.0-x86_64-windows.tar.gz"

echo "Extracting wasi-sdk..."
tar --strip-components=1 -xf wasi-sdk.tar.gz -C /opt/wasi-sdk
Expand All @@ -122,4 +144,4 @@ runs:
/opt/wasi-sdk/bin/clang --version
/opt/wabt/bin/wasm-interp --version

echo "::notice::wasi-sdk-25 and wabt-1.0.37 installed on Windows"
echo "::notice::wasi-sdk-${SDK_VER} and wabt-1.0.37 installed on Windows"
15 changes: 13 additions & 2 deletions .github/scripts/codeql_buildscript.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,20 @@ sudo wget --progress=dot:giga -O clang+llvm-x86_64-linux-gnu.tar.xz https://gith
popd

# libtinfo.so.5 for /opt/llvm-18.1.8/lib/libomptarget.rtl.amdgpu.so.18.1
# Install the libtinfo5 compat package at the same ncurses version as the
# runner's already-installed libtinfo6; fall back to the newest one in the
# pool. A hard-coded URL 404s once the ncurses point release is bumped, which
# then breaks the wamrc link against libomptarget (NCURSES_TINFO_5 symbols).
sudo apt -qq update
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
sudo apt install -y -qq ./libtinfo5_6.3-2ubuntu0.1_amd64.deb
nc_pool="http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses"
nc_ver="$(dpkg-query -W -f='${Version}' libtinfo6)"
libtinfo5_deb="libtinfo5_${nc_ver}_amd64.deb"
if ! wget -q "${nc_pool}/${libtinfo5_deb}"; then
libtinfo5_deb="$(wget -qO- "${nc_pool}/" \
| grep -oE 'libtinfo5_[0-9][^"]*_amd64\.deb' | sort -Vu | tail -1)"
wget -q "${nc_pool}/${libtinfo5_deb}"
fi
sudo apt install -y -qq "./${libtinfo5_deb}"

# Start the build process
WAMR_DIR=${PWD}
Expand Down
10 changes: 8 additions & 2 deletions .github/scripts/codeql_fail_on_error.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,15 @@ def codeql_sarif_contain_error(filename, dismissed_alerts):
s = json.load(f)

for run in s.get("runs", []):
rules_metadata = run["tool"]["driver"]["rules"]
# Rule metadata isn't always in one place: CodeQL keeps it on the tool
# driver, but rules contributed by a query-pack extension live on that
# extension instead, and the driver's list is empty when nothing fired.
# So read the driver rules, then fall back to gathering them from the
# extensions rather than assuming a fixed location.
rules_metadata = run["tool"]["driver"].get("rules") or []
if not rules_metadata:
rules_metadata = run["tool"]["extensions"][0]["rules"]
for ext in run["tool"].get("extensions", []):
rules_metadata += ext.get("rules", [])

for res in run.get("results", []):
if "ruleIndex" in res:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_docker_images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0

- name: Build and save Docker image(wasm-debug-server:${{ inputs.ver_num }}) to tar file
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_iwasm_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,11 @@ jobs:
contents: write # for uploading release artifacts

steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0

- name: get cached LLVM libraries
id: retrieve_llvm_libs
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: |
./core/deps/llvm/build/bin
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_llvm_libraries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:

steps:
- name: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0

- name: install dependencies for non macos
if: ${{ !startsWith(inputs.os, 'macos') }}
Expand Down Expand Up @@ -79,7 +79,7 @@ jobs:

- name: Cache LLVM libraries
id: retrieve_llvm_libs
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: |
./core/deps/llvm/build/bin
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_wamr_lldb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
contents: write # for uploading release artifacts

steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0

- name: download and install wasi-sdk
run: |
Expand All @@ -68,7 +68,7 @@ jobs:

- name: Cache build
id: lldb_build_cache
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: |
./core/deps/llvm-project/build/bin
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_wamr_sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
contents: write # for uploading release artifacts

steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0

- name: download wamr-app-framework
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_wamr_vscode_ext.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
contents: write # for uploading release artifacts

steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0

- name: Use Node.js 18.x
uses: actions/setup-node@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_wamr_wasi_extensions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
os: [ubuntu-22.04]
steps:
- name: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0

- name: install-wasi-sdk-wabt
uses: ./.github/actions/install-wasi-sdk-wabt
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build_wamrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ jobs:
contents: write # for uploading release artifacts

steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0

- name: get cached LLVM libraries
id: retrieve_llvm_libs
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: |
./core/deps/llvm/build/bin
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check_version_h.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0

- name: cmake execute to generate version.h
run: cmake -B build_version -S .
Expand Down
32 changes: 25 additions & 7 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,35 @@ on:
push:
branches:
- dev/**
# scan pull requests so findings surface on the PR instead of only post-merge
pull_request:
# midnight UTC on the latest commit on the main branch
schedule:
- cron: "0 0 * * *"
# allow to be triggered manually
workflow_dispatch:

# Serialize CodeQL runs per PR / branch. Only a pull_request cancels its own
# superseded run - once a PR head is replaced the old analysis is throwaway.
# Pushes to dev/** and the nightly cron are left to finish, so branch and
# scheduled scans are never dropped.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
analyze:
# only run this job if the repository is not a fork
# if want to run this job on a fork, please remove the if condition
if: github.repository == 'bytecodealliance/wasm-micro-runtime'
# Pull requests: only scan when the head branch lives in this same
# repository. A pull request from a fork runs with a read-only GITHUB_TOKEN
# (no `security-events: write`), so uploading results and reading
# code-scanning alerts is not permitted and the job would fail; skip it
# cleanly instead. Other events (push to dev/**, the nightly cron, manual
# runs) keep the original behavior of running only on the upstream repo.
if: >-
(github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository)
|| (github.event_name != 'pull_request' &&
github.repository == 'bytecodealliance/wasm-micro-runtime')
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
Expand All @@ -43,13 +61,13 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0
with:
submodules: recursive

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.36.0
uses: github/codeql-action/init@v4.37.0
with:
languages: ${{ matrix.language }}
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
Expand All @@ -61,7 +79,7 @@ jobs:
./.github/scripts/codeql_buildscript.sh || exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.36.0
uses: github/codeql-action/analyze@v4.37.0
with:
category: "/language:${{matrix.language}}"
upload: false
Expand Down Expand Up @@ -114,7 +132,7 @@ jobs:
output: ${{ steps.step1.outputs.sarif-output }}/cpp.sarif

- name: Upload CodeQL results to code scanning
uses: github/codeql-action/upload-sarif@v4.36.0
uses: github/codeql-action/upload-sarif@v4.37.0
with:
sarif_file: ${{ steps.step1.outputs.sarif-output }}
category: "/language:${{matrix.language}}"
Expand Down
20 changes: 18 additions & 2 deletions .github/workflows/coding_guidelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,29 @@ permissions:

jobs:
compliance_job:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6.0.2
uses: actions/checkout@v7.0.0
with:
fetch-depth: 0

- name: install clang-format-21
run: |
# clang-format 21 matches the LLVM shipped in Xcode 26/27, so
# contributors who build or auto-format on macOS/Xcode get the same
# result as CI and other LLVM-built platforms - no formatting
# surprises. It is a small (~50 MB) apt package from apt.llvm.org,
# not a full LLVM toolchain download.
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \
| sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc >/dev/null
. /etc/os-release
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" \
| sudo tee /etc/apt/sources.list.d/llvm.list >/dev/null
sudo apt-get update -qq
sudo apt-get install -y -qq clang-format-21
clang-format-21 --version

# github.event.pull_request.base.label = ${{github.repository}}/${{github.base_ref}}
- name: Run Coding Guidelines Checks
run: /usr/bin/env python3 ./ci/coding_guidelines_check.py --commits ${{ github.event.pull_request.base.sha }}..HEAD
Loading