diff --git a/compilation-support-image/Dockerfile b/compilation-support-image/Dockerfile
deleted file mode 100644
index 9f0911810..000000000
--- a/compilation-support-image/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM rust:1.74
-
-WORKDIR /usr/code
-
-# Install wasm support for Rust
-RUN rustup target add wasm32-unknown-unknown
-
-# Install wasi-sdk
-RUN wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz && \
- mkdir -p /opt/wasi-sdk && \
- tar xvf wasi-sdk-20.0-linux.tar.gz && \
- cp -r wasi-sdk-20.0/* /opt/wasi-sdk
-
-# Install wabt tools
-RUN wget https://github.com/WebAssembly/wabt/releases/download/1.0.34/wabt-1.0.34-ubuntu.tar.gz && \
- mkdir -p /opt/wabt && \
- tar xvf wabt-1.0.34-ubuntu.tar.gz && \
- cp -r wabt-1.0.34/* /opt/wabt
-
-# Install Javy
-RUN wget https://github.com/bytecodealliance/javy/releases/download/v1.4.0/javy-x86_64-linux-v1.4.0.gz && \
- mkdir -p /opt/javy && \
- gunzip javy-x86_64-linux-v1.4.0.gz && \
- mv javy-x86_64-linux-v1.4.0 /opt/javy/javy && \
- chmod a+x /opt/javy/javy
-
-ENV WASI_SDK_PATH=/opt/wasi-sdk
-
-COPY . .
diff --git a/compilation-support-image/compile-c.sh b/compilation-support-image/compile-c.sh
deleted file mode 100755
index 9ce2951cb..000000000
--- a/compilation-support-image/compile-c.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-while IFS= read -r line || [ -n "$line" ]
-do
- echo "$line" >> tmp.c
-done < "/dev/stdin"
-
-WASI_SDK_PATH=/opt/wasi-sdk
-
-/opt/wasi-sdk/bin/clang -O0 -g -o tmp.wasm tmp.c -nostartfiles -Wl,--no-entry -Wl,--export=run > /dev/null 2> /dev/null
-
-cat tmp.wasm
diff --git a/compilation-support-image/compile-js.sh b/compilation-support-image/compile-js.sh
deleted file mode 100755
index dbe7bac3e..000000000
--- a/compilation-support-image/compile-js.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-while IFS= read -r line || [ -n "$line" ]
-do
- echo "$line" >> tmp.js
-done < "/dev/stdin"
-
-/opt/javy/javy compile tmp.js -o tmp.wasm > /dev/null 2> /dev/null
-
-cat tmp.wasm
diff --git a/compilation-support-image/compile-rust-wasi.sh b/compilation-support-image/compile-rust-wasi.sh
deleted file mode 100755
index 31776ba33..000000000
--- a/compilation-support-image/compile-rust-wasi.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-while IFS= read -r line || [ -n "$line" ]
-do
- echo "$line" >> tmp.rs
-done < "/dev/stdin"
-
-rustc tmp.rs --target=wasm32-wasi -C opt-level=0 -C debuginfo=0 -o tmp.wasm > /dev/null 2> /dev/null
-
-cat tmp.wasm
diff --git a/compilation-support-image/compile-rust.sh b/compilation-support-image/compile-rust.sh
deleted file mode 100755
index f2b99e110..000000000
--- a/compilation-support-image/compile-rust.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-while IFS= read -r line || [ -n "$line" ]
-do
- echo "$line" >> tmp.rs
-done < "/dev/stdin"
-
-rustc tmp.rs --target=wasm32-unknown-unknown --crate-type=cdylib -C opt-level=0 -C debuginfo=0 -o tmp.wasm > /dev/null 2> /dev/null
-
-cat tmp.wasm
diff --git a/compilation-support-image/compile-wat.sh b/compilation-support-image/compile-wat.sh
deleted file mode 100755
index f7ee8cd9c..000000000
--- a/compilation-support-image/compile-wat.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-while IFS= read -r line || [ -n "$line" ]
-do
- echo "$line" >> tmp.wat
-done < "/dev/stdin"
-
-/opt/wabt/bin/wat2wasm tmp.wat -o tmp.wasm > /dev/null 2> /dev/null
-
-cat tmp.wasm
diff --git a/pom.xml b/pom.xml
index 04e8f0f85..a3190ff98 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
wasm
runtime
wasi
+ wasm-corpus
diff --git a/runtime/pom.xml b/runtime/pom.xml
index 6ee305eff..2a09adb3f 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -29,6 +29,12 @@
+
+
+ ${project.basedir}/../wasm-corpus/src/test/resources
+
+
+
com.dylibso.chicory
diff --git a/runtime/src/test/resources/compiled/count_vowels.rs.wasm b/runtime/src/test/resources/compiled/count_vowels.rs.wasm
deleted file mode 100644
index 689539cf0..000000000
Binary files a/runtime/src/test/resources/compiled/count_vowels.rs.wasm and /dev/null differ
diff --git a/wasi/pom.xml b/wasi/pom.xml
index c566e9319..0a1a66ef7 100644
--- a/wasi/pom.xml
+++ b/wasi/pom.xml
@@ -28,4 +28,11 @@
+
+
+
+ ${project.basedir}/../wasm-corpus/src/test/resources
+
+
+
diff --git a/wasi/src/test/java/com/dylibso/chicory/wasi/WasiPreview1Test.java b/wasi/src/test/java/com/dylibso/chicory/wasi/WasiPreview1Test.java
index 5f5fcb513..8ce388def 100644
--- a/wasi/src/test/java/com/dylibso/chicory/wasi/WasiPreview1Test.java
+++ b/wasi/src/test/java/com/dylibso/chicory/wasi/WasiPreview1Test.java
@@ -7,7 +7,6 @@
import com.dylibso.chicory.runtime.HostImports;
import com.dylibso.chicory.runtime.Module;
import java.io.ByteArrayInputStream;
-import java.io.File;
import org.junit.jupiter.api.Test;
public class WasiPreview1Test {
@@ -20,8 +19,7 @@ public void shouldRunWasiModule() {
var wasi =
new WasiPreview1(this.logger, WasiOptions.builder().withStdout(fakeStdout).build());
var imports = new HostImports(wasi.toHostFunctions());
- var module =
- Module.builder(new File("src/test/resources/compiled/hello-wasi.wat.wasm")).build();
+ var module = Module.builder("compiled/hello-wasi.wat.wasm").build();
module.instantiate(imports);
assertEquals(fakeStdout.output().strip(), "hello world");
}
@@ -33,8 +31,7 @@ public void shouldRunWasiRustModule() {
var stdout = new MockPrintStream();
var wasi = new WasiPreview1(this.logger, WasiOptions.builder().withStdout(stdout).build());
var imports = new HostImports(wasi.toHostFunctions());
- var module =
- Module.builder(new File("src/test/resources/compiled/hello-wasi.rs.wasm")).build();
+ var module = Module.builder("compiled/hello-wasi.rs.wasm").build();
module.instantiate(imports); // run _start and prints Hello, World!
assertEquals(expected, stdout.output().strip());
}
@@ -46,8 +43,7 @@ public void shouldRunWasiGreetRustModule() {
var wasiOpts = WasiOptions.builder().withStdout(System.out).withStdin(fakeStdin).build();
var wasi = new WasiPreview1(this.logger, wasiOpts);
var imports = new HostImports(wasi.toHostFunctions());
- var module =
- Module.builder(new File("src/test/resources/compiled/greet-wasi.rs.wasm")).build();
+ var module = Module.builder("compiled/greet-wasi.rs.wasm").build();
module.instantiate(imports);
}
@@ -60,7 +56,7 @@ public void shouldRunWasiDemoJavyModule() {
var wasiOpts = WasiOptions.builder().withStdout(fakeStdout).withStdin(fakeStdin).build();
var wasi = new WasiPreview1(this.logger, wasiOpts);
var imports = new HostImports(wasi.toHostFunctions());
- var module = Module.builder("compiled/javy-demo.js.wasm").build();
+ var module = Module.builder("compiled/javy-demo.js.javy.wasm").build();
module.instantiate(imports);
assertEquals(fakeStdout.output(), "{\"foo\":3,\"newBar\":\"baz!\"}");
diff --git a/wasi/src/test/resources/compiled/greet-wasi.rs.wasm b/wasi/src/test/resources/compiled/greet-wasi.rs.wasm
deleted file mode 100755
index f5f0c8e7c..000000000
Binary files a/wasi/src/test/resources/compiled/greet-wasi.rs.wasm and /dev/null differ
diff --git a/wasi/src/test/resources/compiled/hello-wasi.rs.wasm b/wasi/src/test/resources/compiled/hello-wasi.rs.wasm
deleted file mode 100755
index 020cbf031..000000000
Binary files a/wasi/src/test/resources/compiled/hello-wasi.rs.wasm and /dev/null differ
diff --git a/wasm-corpus/Dockerfile b/wasm-corpus/Dockerfile
new file mode 100644
index 000000000..ee6308400
--- /dev/null
+++ b/wasm-corpus/Dockerfile
@@ -0,0 +1,45 @@
+FROM ubuntu:jammy
+
+# Set the environment variable to avoid prompts
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && \
+ apt-get install -y curl build-essential gcc make pkg-config libssl-dev && \
+ apt-get clean && \
+ rm -rf /var/lib/apt/lists/*
+
+# Install rust
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+ENV PATH="/root/.cargo/bin:${PATH}"
+RUN rustc --version && cargo --version
+RUN rustup target add wasm32-unknown-unknown
+RUN rustup target add wasm32-wasi
+
+WORKDIR /tmp
+
+# Install wasi-sdk
+RUN curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz && \
+ mkdir -p /opt/wasi-sdk && \
+ tar xvf wasi-sdk-20.0-linux.tar.gz && \
+ cp -r wasi-sdk-20.0/* /opt/wasi-sdk
+
+ENV WASI_SDK_PATH=/opt/wasi-sdk
+
+# Install wabt tools
+RUN curl -L -O https://github.com/WebAssembly/wabt/releases/download/1.0.34/wabt-1.0.34-ubuntu.tar.gz && \
+ mkdir -p /opt/wabt && \
+ tar xvf wabt-1.0.34-ubuntu.tar.gz && \
+ cp -r wabt-1.0.34/* /opt/wabt
+
+# Install Javy
+RUN curl -L -O https://github.com/bytecodealliance/javy/releases/download/v1.4.0/javy-x86_64-linux-v1.4.0.gz && \
+ mkdir -p /opt/javy && \
+ gunzip javy-x86_64-linux-v1.4.0.gz && \
+ mv javy-x86_64-linux-v1.4.0 /usr/bin/javy && \
+ chmod a+x /usr/bin/javy
+
+ENV PATH="/opt/wabt/bin:${PATH}"
+
+WORKDIR /usr/code
+
+ENTRYPOINT ["./compile.sh"]
\ No newline at end of file
diff --git a/wasm-corpus/README.md b/wasm-corpus/README.md
new file mode 100644
index 000000000..4c47e721c
--- /dev/null
+++ b/wasm-corpus/README.md
@@ -0,0 +1,34 @@
+# Wasm Corpus
+
+
+This is a central place for all of our guest source code. It can be included in other maven projects as a test
+resources bundle.
+
+If you want to add or edit guest modules for tests, you'll need to compile here. Add the program to the subfolder
+for the appropriate source language. Example: src/test/resources/rust.
+
+You can use docker to compile everything. The run.sh script can orchestrate this for you:
+
+```bash
+cd wasm-corpus
+
+# rebuild (or build image for first time)
+./run.sh rebuild
+
+# compile all the submodules
+./run.sh
+
+# compile just one folder
+./run.sh rust
+```
+
+
+If you want to run on your host machine you can run the `compile.sh` subscript yourself.
+It has the same arguments (assumes you have WASI_SDK_PATH set for compiling c:
+
+```bash
+cd wasm-corpus/src/test/resources
+
+# example
+./compile.sh rust
+```
diff --git a/wasm-corpus/pom.xml b/wasm-corpus/pom.xml
new file mode 100644
index 000000000..f18b34b18
--- /dev/null
+++ b/wasm-corpus/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+ com.dylibso.chicory
+ chicory
+ 999-SNAPSHOT
+
+ wasm-corpus
+ Chicory - WASM Corpus
+ A Corpus of guest modules for testing
+
diff --git a/wasm-corpus/run.sh b/wasm-corpus/run.sh
new file mode 100755
index 000000000..ad1a8dca5
--- /dev/null
+++ b/wasm-corpus/run.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# run with `rebuild` to build the image
+# run with no args to compile everything
+
+if [[ "$1" = "rebuild" ]]; then
+ docker build . --platform linux/amd64 -t chicory/wasm-corpus
+else
+ # Optionally takes the args `lang` (ex: wat, rust) and `file` (ex: br.wat)
+ # both default to all
+ docker run --platform linux/amd64 -v ./src/test/resources:/usr/code --rm chicory/wasm-corpus $1 $2
+fi
diff --git a/runtime/src/test/resources/sources/basic.c b/wasm-corpus/src/test/resources/c/basic.c
similarity index 100%
rename from runtime/src/test/resources/sources/basic.c
rename to wasm-corpus/src/test/resources/c/basic.c
diff --git a/runtime/src/test/resources/sources/memory.c b/wasm-corpus/src/test/resources/c/memory.c
similarity index 100%
rename from runtime/src/test/resources/sources/memory.c
rename to wasm-corpus/src/test/resources/c/memory.c
diff --git a/wasm-corpus/src/test/resources/compile.sh b/wasm-corpus/src/test/resources/compile.sh
new file mode 100755
index 000000000..5497d0274
--- /dev/null
+++ b/wasm-corpus/src/test/resources/compile.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+set -e
+
+compileWat() {
+ filename=$(basename "$1")
+ (set -x; wat2wasm $1 -o "./compiled/$filename.wasm")
+}
+
+compileRust() {
+ filename=$(basename "$1")
+ # we can use the wasi targets for any file that end in -wasi.rs
+ if [[ "$filename" =~ wasi.rs$ ]]; then
+ target="wasm32-wasi"
+ crate_type="bin"
+ else
+ target="wasm32-unknown-unknown"
+ crate_type="cdylib"
+ fi
+ (set -x; rustc $1 --target=$target --crate-type=$crate_type -o "./compiled/$filename.wasm")
+}
+
+ENV_WASI_SDK_PATH="${WASK_SDK_PATH:-/opt/wasi-sdk}"
+compileC() {
+ filename=$(basename "$1")
+ (set -x; ${ENV_WASI_SDK_PATH}/bin/clang -g -o "./compiled/$filename.wasm" $1 -nostartfiles -Wl,--no-entry -Wl,--export=run)
+}
+
+compileJavy() {
+ filename=$(basename "$1")
+ (set -x; javy compile $1 -o "./compiled/$filename.javy.wasm")
+}
+
+compile() {
+ lang=$1
+ case "$lang" in
+ wat)
+ compileWat $2
+ ;;
+ rust)
+ compileRust $2
+ ;;
+ c)
+ compileC $2
+ ;;
+ javy)
+ compileJavy $2
+ ;;
+ *)
+ echo "Don't know how to compile language $lang"
+ exit 1
+ ;;
+ esac
+}
+
+lang="${1:-all}"
+path="${2:-all}"
+
+if [[ "$lang" == "all" ]]; then
+ langs=("wat" "rust" "c" "javy")
+else
+ langs=("$lang")
+fi
+
+for lang in "${langs[@]}"; do
+ echo "Compiling all modules in ./$lang/*"
+ for file in ./$lang/*; do
+ compile $lang $file
+ done
+done
diff --git a/runtime/src/test/resources/compiled/basic.c.wasm b/wasm-corpus/src/test/resources/compiled/basic.c.wasm
old mode 100644
new mode 100755
similarity index 70%
rename from runtime/src/test/resources/compiled/basic.c.wasm
rename to wasm-corpus/src/test/resources/compiled/basic.c.wasm
index 9f6a424cb..32afccd7d
Binary files a/runtime/src/test/resources/compiled/basic.c.wasm and b/wasm-corpus/src/test/resources/compiled/basic.c.wasm differ
diff --git a/wasm/src/test/resources/compiled/br.wat.wasm b/wasm-corpus/src/test/resources/compiled/br.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/br.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/br.wat.wasm
diff --git a/wasm/src/test/resources/compiled/br_if.wat.wasm b/wasm-corpus/src/test/resources/compiled/br_if.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/br_if.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/br_if.wat.wasm
diff --git a/runtime/src/test/resources/compiled/br_table.wat.wasm b/wasm-corpus/src/test/resources/compiled/br_table.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/br_table.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/br_table.wat.wasm
diff --git a/runtime/src/test/resources/compiled/branching.wat.wasm b/wasm-corpus/src/test/resources/compiled/branching.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/branching.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/branching.wat.wasm
diff --git a/wasm-corpus/src/test/resources/compiled/count_vowels.rs.wasm b/wasm-corpus/src/test/resources/compiled/count_vowels.rs.wasm
new file mode 100755
index 000000000..837226f7a
Binary files /dev/null and b/wasm-corpus/src/test/resources/compiled/count_vowels.rs.wasm differ
diff --git a/wasm/src/test/resources/compiled/define-locals.wat.wasm b/wasm-corpus/src/test/resources/compiled/define-locals.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/define-locals.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/define-locals.wat.wasm
diff --git a/wasm-corpus/src/test/resources/compiled/extism-runtime.wasm b/wasm-corpus/src/test/resources/compiled/extism-runtime.wasm
new file mode 100755
index 000000000..07ce60393
Binary files /dev/null and b/wasm-corpus/src/test/resources/compiled/extism-runtime.wasm differ
diff --git a/wasm/src/test/resources/compiled/float.wat.wasm b/wasm-corpus/src/test/resources/compiled/float.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/float.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/float.wat.wasm
diff --git a/runtime/src/test/resources/compiled/globals.wat.wasm b/wasm-corpus/src/test/resources/compiled/globals.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/globals.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/globals.wat.wasm
diff --git a/wasm-corpus/src/test/resources/compiled/greet-wasi.rs.wasm b/wasm-corpus/src/test/resources/compiled/greet-wasi.rs.wasm
new file mode 100755
index 000000000..60c0fee24
Binary files /dev/null and b/wasm-corpus/src/test/resources/compiled/greet-wasi.rs.wasm differ
diff --git a/wasm-corpus/src/test/resources/compiled/hello-wasi.rs.wasm b/wasm-corpus/src/test/resources/compiled/hello-wasi.rs.wasm
new file mode 100755
index 000000000..399e4bb74
Binary files /dev/null and b/wasm-corpus/src/test/resources/compiled/hello-wasi.rs.wasm differ
diff --git a/wasi/src/test/resources/compiled/hello-wasi.wat.wasm b/wasm-corpus/src/test/resources/compiled/hello-wasi.wat.wasm
similarity index 100%
rename from wasi/src/test/resources/compiled/hello-wasi.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/hello-wasi.wat.wasm
diff --git a/runtime/src/test/resources/compiled/host-function.wat.wasm b/wasm-corpus/src/test/resources/compiled/host-function.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/host-function.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/host-function.wat.wasm
diff --git a/wasm/src/test/resources/compiled/i32.wat.wasm b/wasm-corpus/src/test/resources/compiled/i32.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/i32.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/i32.wat.wasm
diff --git a/wasm/src/test/resources/compiled/int_expr.wat.wasm b/wasm-corpus/src/test/resources/compiled/int_expr.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/int_expr.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/int_expr.wat.wasm
diff --git a/wasm/src/test/resources/compiled/iterfact-64.wat.wasm b/wasm-corpus/src/test/resources/compiled/iterfact-64.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/iterfact-64.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/iterfact-64.wat.wasm
diff --git a/runtime/src/test/resources/compiled/iterfact.wat.wasm b/wasm-corpus/src/test/resources/compiled/iterfact.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/iterfact.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/iterfact.wat.wasm
diff --git a/wasi/src/test/resources/compiled/javy-demo.js.wasm b/wasm-corpus/src/test/resources/compiled/javy-demo.js.javy.wasm
similarity index 99%
rename from wasi/src/test/resources/compiled/javy-demo.js.wasm
rename to wasm-corpus/src/test/resources/compiled/javy-demo.js.javy.wasm
index ac9c04f9c..9591dba2a 100644
Binary files a/wasi/src/test/resources/compiled/javy-demo.js.wasm and b/wasm-corpus/src/test/resources/compiled/javy-demo.js.javy.wasm differ
diff --git a/runtime/src/test/resources/compiled/kitchensink.wat.wasm b/wasm-corpus/src/test/resources/compiled/kitchensink.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/kitchensink.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/kitchensink.wat.wasm
diff --git a/wasm/src/test/resources/compiled/memories.wat.wasm b/wasm-corpus/src/test/resources/compiled/memories.wat.wasm
similarity index 100%
rename from wasm/src/test/resources/compiled/memories.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/memories.wat.wasm
diff --git a/runtime/src/test/resources/compiled/memory.c.wasm b/wasm-corpus/src/test/resources/compiled/memory.c.wasm
old mode 100644
new mode 100755
similarity index 94%
rename from runtime/src/test/resources/compiled/memory.c.wasm
rename to wasm-corpus/src/test/resources/compiled/memory.c.wasm
index ae03de9b4..222e0bd2e
Binary files a/runtime/src/test/resources/compiled/memory.c.wasm and b/wasm-corpus/src/test/resources/compiled/memory.c.wasm differ
diff --git a/runtime/src/test/resources/compiled/memory.wat.wasm b/wasm-corpus/src/test/resources/compiled/memory.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/memory.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/memory.wat.wasm
diff --git a/runtime/src/test/resources/compiled/start.wat.wasm b/wasm-corpus/src/test/resources/compiled/start.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/start.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/start.wat.wasm
diff --git a/runtime/src/test/resources/compiled/trap.wat.wasm b/wasm-corpus/src/test/resources/compiled/trap.wat.wasm
similarity index 100%
rename from runtime/src/test/resources/compiled/trap.wat.wasm
rename to wasm-corpus/src/test/resources/compiled/trap.wat.wasm
diff --git a/wasi/src/test/resources/sources/javy-demo.js b/wasm-corpus/src/test/resources/javy/javy-demo.js
similarity index 99%
rename from wasi/src/test/resources/sources/javy-demo.js
rename to wasm-corpus/src/test/resources/javy/javy-demo.js
index a4b3193ad..591bd5420 100644
--- a/wasi/src/test/resources/sources/javy-demo.js
+++ b/wasm-corpus/src/test/resources/javy/javy-demo.js
@@ -48,4 +48,4 @@ function writeOutput(output) {
// Stdout file descriptor
const fd = 1;
Javy.IO.writeSync(fd, buffer);
-}
+}
\ No newline at end of file
diff --git a/runtime/src/test/resources/sources/count_vowels.rs b/wasm-corpus/src/test/resources/rust/count_vowels.rs
similarity index 100%
rename from runtime/src/test/resources/sources/count_vowels.rs
rename to wasm-corpus/src/test/resources/rust/count_vowels.rs
diff --git a/wasi/src/test/resources/sources/greet-wasi.rs b/wasm-corpus/src/test/resources/rust/greet-wasi.rs
similarity index 100%
rename from wasi/src/test/resources/sources/greet-wasi.rs
rename to wasm-corpus/src/test/resources/rust/greet-wasi.rs
diff --git a/wasi/src/test/resources/sources/hello-wasi.rs b/wasm-corpus/src/test/resources/rust/hello-wasi.rs
similarity index 100%
rename from wasi/src/test/resources/sources/hello-wasi.rs
rename to wasm-corpus/src/test/resources/rust/hello-wasi.rs
diff --git a/wasm/src/test/resources/sources/br.wat b/wasm-corpus/src/test/resources/wat/br.wat
similarity index 100%
rename from wasm/src/test/resources/sources/br.wat
rename to wasm-corpus/src/test/resources/wat/br.wat
diff --git a/wasm/src/test/resources/sources/br_if.wat b/wasm-corpus/src/test/resources/wat/br_if.wat
similarity index 100%
rename from wasm/src/test/resources/sources/br_if.wat
rename to wasm-corpus/src/test/resources/wat/br_if.wat
diff --git a/runtime/src/test/resources/sources/br_table.wat b/wasm-corpus/src/test/resources/wat/br_table.wat
similarity index 100%
rename from runtime/src/test/resources/sources/br_table.wat
rename to wasm-corpus/src/test/resources/wat/br_table.wat
diff --git a/runtime/src/test/resources/sources/branching.wat b/wasm-corpus/src/test/resources/wat/branching.wat
similarity index 100%
rename from runtime/src/test/resources/sources/branching.wat
rename to wasm-corpus/src/test/resources/wat/branching.wat
diff --git a/wasm/src/test/resources/sources/define-locals.wat b/wasm-corpus/src/test/resources/wat/define-locals.wat
similarity index 100%
rename from wasm/src/test/resources/sources/define-locals.wat
rename to wasm-corpus/src/test/resources/wat/define-locals.wat
diff --git a/wasm/src/test/resources/sources/float.wat b/wasm-corpus/src/test/resources/wat/float.wat
similarity index 100%
rename from wasm/src/test/resources/sources/float.wat
rename to wasm-corpus/src/test/resources/wat/float.wat
diff --git a/runtime/src/test/resources/sources/globals.wat b/wasm-corpus/src/test/resources/wat/globals.wat
similarity index 100%
rename from runtime/src/test/resources/sources/globals.wat
rename to wasm-corpus/src/test/resources/wat/globals.wat
diff --git a/wasi/src/test/resources/sources/hello-wasi.wat b/wasm-corpus/src/test/resources/wat/hello-wasi.wat
similarity index 100%
rename from wasi/src/test/resources/sources/hello-wasi.wat
rename to wasm-corpus/src/test/resources/wat/hello-wasi.wat
diff --git a/runtime/src/test/resources/sources/host-function.wat b/wasm-corpus/src/test/resources/wat/host-function.wat
similarity index 100%
rename from runtime/src/test/resources/sources/host-function.wat
rename to wasm-corpus/src/test/resources/wat/host-function.wat
diff --git a/wasm/src/test/resources/sources/i32.wat b/wasm-corpus/src/test/resources/wat/i32.wat
similarity index 100%
rename from wasm/src/test/resources/sources/i32.wat
rename to wasm-corpus/src/test/resources/wat/i32.wat
diff --git a/wasm/src/test/resources/sources/int_expr.wat b/wasm-corpus/src/test/resources/wat/int_expr.wat
similarity index 100%
rename from wasm/src/test/resources/sources/int_expr.wat
rename to wasm-corpus/src/test/resources/wat/int_expr.wat
diff --git a/wasm/src/test/resources/sources/iterfact-64.wat b/wasm-corpus/src/test/resources/wat/iterfact-64.wat
similarity index 100%
rename from wasm/src/test/resources/sources/iterfact-64.wat
rename to wasm-corpus/src/test/resources/wat/iterfact-64.wat
diff --git a/runtime/src/test/resources/sources/iterfact.wat b/wasm-corpus/src/test/resources/wat/iterfact.wat
similarity index 100%
rename from runtime/src/test/resources/sources/iterfact.wat
rename to wasm-corpus/src/test/resources/wat/iterfact.wat
diff --git a/runtime/src/test/resources/sources/kitchensink.wat b/wasm-corpus/src/test/resources/wat/kitchensink.wat
similarity index 100%
rename from runtime/src/test/resources/sources/kitchensink.wat
rename to wasm-corpus/src/test/resources/wat/kitchensink.wat
diff --git a/wasm/src/test/resources/sources/memories.wat b/wasm-corpus/src/test/resources/wat/memories.wat
similarity index 100%
rename from wasm/src/test/resources/sources/memories.wat
rename to wasm-corpus/src/test/resources/wat/memories.wat
diff --git a/runtime/src/test/resources/sources/memory.wat b/wasm-corpus/src/test/resources/wat/memory.wat
similarity index 100%
rename from runtime/src/test/resources/sources/memory.wat
rename to wasm-corpus/src/test/resources/wat/memory.wat
diff --git a/runtime/src/test/resources/sources/start.wat b/wasm-corpus/src/test/resources/wat/start.wat
similarity index 100%
rename from runtime/src/test/resources/sources/start.wat
rename to wasm-corpus/src/test/resources/wat/start.wat
diff --git a/runtime/src/test/resources/sources/trap.wat b/wasm-corpus/src/test/resources/wat/trap.wat
similarity index 100%
rename from runtime/src/test/resources/sources/trap.wat
rename to wasm-corpus/src/test/resources/wat/trap.wat
diff --git a/wasm/pom.xml b/wasm/pom.xml
index 41959e17a..727a12b72 100644
--- a/wasm/pom.xml
+++ b/wasm/pom.xml
@@ -25,6 +25,11 @@
+
+
+ ${project.basedir}/../wasm-corpus/src/test/resources
+
+
com.dylibso.chicory
diff --git a/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java b/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
index 8d9b0f59d..43632da02 100644
--- a/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
+++ b/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
@@ -124,18 +124,13 @@ public void shouldParseIterfact() throws IOException {
@Test
public void shouldParseAllFiles() {
- File compiledDir = new File("src/test/resources/compiled/");
- File wasmDir = new File("src/test/resources/wasm/");
+ File compiledDir = new File("../wasm-corpus/src/test/resources/compiled/");
List files = new ArrayList<>();
files.addAll(
Arrays.asList(
compiledDir.listFiles(
(ignored, name) -> name.toLowerCase().endsWith(".wasm"))));
- files.addAll(
- Arrays.asList(
- wasmDir.listFiles(
- (ignored, name) -> name.toLowerCase().endsWith(".wasm"))));
if (files.isEmpty()) {
throw new RuntimeException("Could not find files");
@@ -157,7 +152,7 @@ public void shouldSupportCustomListener() throws IOException {
var logger = new SystemLogger();
var parser = new Parser(logger);
- try (InputStream is = getClass().getResourceAsStream("/wasm/code.wasm")) {
+ try (InputStream is = getClass().getResourceAsStream("/compiled/count_vowels.rs.wasm")) {
parser.includeSection(SectionId.CUSTOM);
parser.parse(
is,
@@ -173,16 +168,6 @@ public void shouldSupportCustomListener() throws IOException {
}
}
- // @Test
- // public void shouldParseAst() {
- // var parser = new Parser("src/test/resources/wasm/code.wasm");
- // var module = parser.parseModule();
- // var codeSection = module.getCodeSection();
- // var fbody = codeSection.getFunctionBodies()[0];
- // var ast = fbody.getAst();
- // ast.print();
- // }
-
@Test
public void shouldParseFloats() throws IOException {
var logger = new SystemLogger();
diff --git a/wasm/src/test/resources/compiled/br_table.wat.wasm b/wasm/src/test/resources/compiled/br_table.wat.wasm
deleted file mode 100644
index 8e72686fd..000000000
Binary files a/wasm/src/test/resources/compiled/br_table.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/branching.wat.wasm b/wasm/src/test/resources/compiled/branching.wat.wasm
deleted file mode 100644
index 6bcdb337b..000000000
Binary files a/wasm/src/test/resources/compiled/branching.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/count_vowels.rs.wasm b/wasm/src/test/resources/compiled/count_vowels.rs.wasm
deleted file mode 100644
index 110f7eed1..000000000
Binary files a/wasm/src/test/resources/compiled/count_vowels.rs.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/globals.wat.wasm b/wasm/src/test/resources/compiled/globals.wat.wasm
deleted file mode 100644
index a96566924..000000000
Binary files a/wasm/src/test/resources/compiled/globals.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/hello-wasi.wat.wasm b/wasm/src/test/resources/compiled/hello-wasi.wat.wasm
deleted file mode 100644
index 49ab9031f..000000000
Binary files a/wasm/src/test/resources/compiled/hello-wasi.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/host-function.wat.wasm b/wasm/src/test/resources/compiled/host-function.wat.wasm
deleted file mode 100644
index d9e8a75ac..000000000
Binary files a/wasm/src/test/resources/compiled/host-function.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/iterfact.wat.wasm b/wasm/src/test/resources/compiled/iterfact.wat.wasm
deleted file mode 100644
index c94bad26b..000000000
Binary files a/wasm/src/test/resources/compiled/iterfact.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/kitchensink.wat.wasm b/wasm/src/test/resources/compiled/kitchensink.wat.wasm
deleted file mode 100644
index 814ed4220..000000000
Binary files a/wasm/src/test/resources/compiled/kitchensink.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/memory.wat.wasm b/wasm/src/test/resources/compiled/memory.wat.wasm
deleted file mode 100644
index 1533e9df0..000000000
Binary files a/wasm/src/test/resources/compiled/memory.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/start.wat.wasm b/wasm/src/test/resources/compiled/start.wat.wasm
deleted file mode 100644
index add32ee46..000000000
Binary files a/wasm/src/test/resources/compiled/start.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/compiled/trap.wat.wasm b/wasm/src/test/resources/compiled/trap.wat.wasm
deleted file mode 100644
index 67b9d808b..000000000
Binary files a/wasm/src/test/resources/compiled/trap.wat.wasm and /dev/null differ
diff --git a/wasm/src/test/resources/sources/br_table.wat b/wasm/src/test/resources/sources/br_table.wat
deleted file mode 100644
index 7854206fe..000000000
--- a/wasm/src/test/resources/sources/br_table.wat
+++ /dev/null
@@ -1,25 +0,0 @@
-(module
-
-(func (export "switch_like") (param $p i32) (result i32)
- (block
- (block
- (block
- (block (local.get $p)
- (br_table
- 2 ;; p == 0 => (br 2)
- 1 ;; p == 1 => (br 1)
- 0 ;; p == 2 => (br 0)
- 3)) ;; else => (br 3)
- ;; Target for (br 0)
- (i32.const 100)
- (return))
- ;; Target for (br 1)
- (i32.const 101)
- (return))
- ;; Target for (br 2)
- (i32.const 102)
- (return))
- ;; Target for (br 3)
- (i32.const 103)
- (return))
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/branching.wat b/wasm/src/test/resources/sources/branching.wat
deleted file mode 100644
index d70bd05dc..000000000
--- a/wasm/src/test/resources/sources/branching.wat
+++ /dev/null
@@ -1,37 +0,0 @@
-(module
-;; $foo roughly follows this logic:
-;;
-;; if (x == 0)
-;; return 42;
-;; else if (x == 1)
-;; return 99;
-;; else
-;; return 7;
-(func $foo (param i32) (result i32)
- (local i32)
- (block
- (block
- (block
- ;; x == 0
- local.get 0
- i32.eqz
- br_if 0
-
- ;; x == 1
- local.get 0
- i32.const 1
- i32.eq
- br_if 1
-
- ;; the `else` case
- i32.const 7
- local.set 1
- br 2)
- i32.const 42
- local.set 1
- br 1)
- i32.const 99
- local.set 1)
- local.get 1)
-(export "foo" (func $foo))
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/count_vowels.rs b/wasm/src/test/resources/sources/count_vowels.rs
deleted file mode 100644
index 8c9fd3747..000000000
--- a/wasm/src/test/resources/sources/count_vowels.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-const VOWELS: &[char] = &['a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U'];
-
-#[no_mangle]
-pub extern fn count_vowels() -> i32 {
- let s = String::from("Hello World!");
- let mut count: i32 = 0;
- for ch in s.chars() {
- if VOWELS.contains(&ch) {
- count += 1;
- }
- }
- count
-}
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/globals.wat b/wasm/src/test/resources/sources/globals.wat
deleted file mode 100644
index bdcab8cfd..000000000
--- a/wasm/src/test/resources/sources/globals.wat
+++ /dev/null
@@ -1,13 +0,0 @@
-(module
-;; TODO - we don't suppor this yet, only i32.const and i64.const
-;;(global $from_env (import "env" "from_env") i32)
-(global $from_wasm i32 (i32.const 10))
-
-(func $doit (param i32) (result i32)
- local.get 0
- global.get $from_wasm
- i32.add
-)
-
-(export "doit" (func $doit))
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/hello-wasi.wat b/wasm/src/test/resources/sources/hello-wasi.wat
deleted file mode 100644
index b3e6a89b8..000000000
--- a/wasm/src/test/resources/sources/hello-wasi.wat
+++ /dev/null
@@ -1,28 +0,0 @@
-(module
- ;; https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-tutorial.md#web-assembly-text-example
- ;; Import the required fd_write WASI function which will write the given io vectors to stdout
- ;; The function signature for fd_write is:
- ;; (File Descriptor, *iovs, iovs_len, nwritten) -> Returns number of bytes written
- (import "wasi_snapshot_preview1" "fd_write" (func $fd_write (param i32 i32 i32 i32) (result i32)))
-
- (memory 1)
- (export "memory" (memory 0))
-
- ;; Write 'hello world\n' to memory at an offset of 8 bytes
- ;; Note the trailing newline which is required for the text to appear
- (data (i32.const 8) "hello world\n")
-
- (func $main (export "_start")
- ;; Creating a new io vector within linear memory
- (i32.store (i32.const 0) (i32.const 8)) ;; iov.iov_base - This is a pointer to the start of the 'hello world\n' string
- (i32.store (i32.const 4) (i32.const 12)) ;; iov.iov_len - The length of the 'hello world\n' string
-
- (call $fd_write
- (i32.const 1) ;; file_descriptor - 1 for stdout
- (i32.const 0) ;; *iovs - The pointer to the iov array, which is stored at memory location 0
- (i32.const 1) ;; iovs_len - We're printing 1 string stored in an iov - so one.
- (i32.const 20) ;; nwritten - A place in memory to store the number of bytes written
- )
- drop ;; Discard the number of bytes written from the top of the stack
- )
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/host-function.wat b/wasm/src/test/resources/sources/host-function.wat
deleted file mode 100644
index bd0803801..000000000
--- a/wasm/src/test/resources/sources/host-function.wat
+++ /dev/null
@@ -1,29 +0,0 @@
-(module
- ;; Import console.log. Takes a ptr and a length to the string in memory
- (import "console" "log" (func $log (param i32) (param i32)))
- (func (export "logIt")
- (local $var i32)
- ;; some random nops and drop, not important
- nop
- nop
- i32.const 1
- drop
- ;; start implementation
- (local.set $var (i32.const 10))
- ;; call console.log("Hello, World!") 10 times
- (loop
- i32.const 13
- i32.const 0
- call $log
- local.get $var
- i32.const 1
- i32.sub
- local.tee $var
- br_if 0
- )
- )
-
- (memory 1)
- (data $.rodata (i32.const 0) "Hello, World!\00")
-)
-
diff --git a/wasm/src/test/resources/sources/iterfact.wat b/wasm/src/test/resources/sources/iterfact.wat
deleted file mode 100644
index 4a30bf266..000000000
--- a/wasm/src/test/resources/sources/iterfact.wat
+++ /dev/null
@@ -1,31 +0,0 @@
-(module
-;; $iterFact computes factorial:
-;; int result = 1;
-;; while (i > 0) {
-;; result = result * i;
-;; i = i - 1;
-;; }
-(func $iterFact (param i32) (result i32)
- (local i32)
- i32.const 1
- local.set 1
- (block
- local.get 0
- i32.eqz
- br_if 0
- (loop
- local.get 1
- local.get 0
- i32.mul
- local.set 1
- local.get 0
- i32.const -1
- i32.add
- local.tee 0
- i32.eqz
- br_if 1
- br 0))
- local.get 1)
-
-(export "iterFact" (func $iterFact))
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/kitchensink.wat b/wasm/src/test/resources/sources/kitchensink.wat
deleted file mode 100644
index c582f7f1a..000000000
--- a/wasm/src/test/resources/sources/kitchensink.wat
+++ /dev/null
@@ -1,35 +0,0 @@
-(module
- (memory 1)
- (func (export "run") (param i32) (result i32)
- local.get 0
- i32.const 10
- i32.add
- i32.const 1
- i32.sub
- i32.const 6
- i32.mul
- i32.const 2
- i32.div_s
- i32.const 40
- i32.and
- i32.const 33
- i32.or
- i32.const 22
- i32.xor
- ;; 55
-
- i32.const 2
- i32.shl
-
- i32.const 3
- i32.shr_s
-
- i32.const 4
- i32.rotl
-
- i32.const 6
- i32.rotr
-
- i32.extend8_s
- )
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/memory.wat b/wasm/src/test/resources/sources/memory.wat
deleted file mode 100644
index bec9e556e..000000000
--- a/wasm/src/test/resources/sources/memory.wat
+++ /dev/null
@@ -1,19 +0,0 @@
-(module
- (memory 1)
- (func (export "run32") (param i32) (result i32)
- i32.const 0
- local.get 0
- i32.store ;; store param0 at address 0
- i32.const 0
- i32.load
- return
- )
- (func (export "run64") (param i64) (result i64)
- i32.const 0
- local.get 0
- i64.store ;; store param0 at address 0
- i32.const 0
- i64.load
- return
- )
-)
diff --git a/wasm/src/test/resources/sources/start.wat b/wasm/src/test/resources/sources/start.wat
deleted file mode 100644
index 3405db4e0..000000000
--- a/wasm/src/test/resources/sources/start.wat
+++ /dev/null
@@ -1,10 +0,0 @@
-(module
- (import "env" "gotit" (func $gotit (param i32)))
- (func $start
- i32.const 42
- call $gotit
- )
- (start $start)
- (memory 1)
- (data (i32.const 16) "\00\01\02\03")
-)
\ No newline at end of file
diff --git a/wasm/src/test/resources/sources/trap.wat b/wasm/src/test/resources/sources/trap.wat
deleted file mode 100644
index 65aa25c20..000000000
--- a/wasm/src/test/resources/sources/trap.wat
+++ /dev/null
@@ -1,12 +0,0 @@
-(module
- (func $trap
- unreachable
- )
- (func $innerFunc
- call $trap
- )
- (func $start
- call $innerFunc
- )
- (start $start)
-)