mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-16 17:18:57 +00:00
Renamed wasmer_wasm.h to wasmer.h
This commit is contained in:
13
.github/workflows/main.yaml
vendored
13
.github/workflows/main.yaml
vendored
@@ -209,11 +209,6 @@ jobs:
|
|||||||
- name: Build C API
|
- name: Build C API
|
||||||
run: |
|
run: |
|
||||||
make build-capi
|
make build-capi
|
||||||
if: matrix.target != 'aarch64-apple-darwin'
|
|
||||||
- name: Build C API (system libffi)
|
|
||||||
run: |
|
|
||||||
make build-capi-cranelift-system-libffi
|
|
||||||
if: matrix.target == 'aarch64-apple-darwin'
|
|
||||||
- name: Build Wasmer binary
|
- name: Build Wasmer binary
|
||||||
run: |
|
run: |
|
||||||
make build-wasmer
|
make build-wasmer
|
||||||
@@ -266,8 +261,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
ls target/release
|
ls target/release
|
||||||
alias wasmer=target/release/wasmer
|
alias wasmer=target/release/wasmer
|
||||||
./target/release/wasmer compile --target=x86_64-apple-darwin lib/c-api/tests/assets/qjs.wasm -o qjs_mac_from_linux.wjit
|
./target/release/wasmer compile --target=x86_64-apple-darwin lib/c-api/examples/assets/qjs.wasm -o qjs_mac_from_linux.wjit
|
||||||
#./target/release/wasmer compile --target=x86_64-pc-windows-msvc lib/c-api/tests/assets/qjs.wasm -o qjs_win_from_linux.wjit
|
#./target/release/wasmer compile --target=x86_64-pc-windows-msvc lib/c-api/examples/assets/qjs.wasm -o qjs_win_from_linux.wjit
|
||||||
mkdir cross
|
mkdir cross
|
||||||
cp qjs_mac_from_linux.wjit cross
|
cp qjs_mac_from_linux.wjit cross
|
||||||
#cp qjs_win_from_linux.wjit cross
|
#cp qjs_win_from_linux.wjit cross
|
||||||
@@ -278,8 +273,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
ls target/release
|
ls target/release
|
||||||
alias wasmer=target/release/wasmer
|
alias wasmer=target/release/wasmer
|
||||||
./target/release/wasmer compile --target=x86_64-unknown-linux-gnu lib/c-api/tests/assets/qjs.wasm -o qjs_linux_from_mac.wjit
|
./target/release/wasmer compile --target=x86_64-unknown-linux-gnu lib/c-api/examples/assets/qjs.wasm -o qjs_linux_from_mac.wjit
|
||||||
#./target/release/wasmer compile --target=x86_64-pc-windows-msvc lib/c-api/tests/assets/qjs.wasm -o qjs_win_from_mac.wjit
|
#./target/release/wasmer compile --target=x86_64-pc-windows-msvc lib/c-api/examples/assets/qjs.wasm -o qjs_win_from_mac.wjit
|
||||||
mkdir cross
|
mkdir cross
|
||||||
cp qjs_linux_from_mac.wjit cross
|
cp qjs_linux_from_mac.wjit cross
|
||||||
#cp qjs_win_from_mac.wjit cross
|
#cp qjs_win_from_mac.wjit cross
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -464,9 +464,6 @@ build-capi-headless-all: capi-setup
|
|||||||
RUSTFLAGS="${RUSTFLAGS}" cargo build --manifest-path lib/c-api/Cargo.toml --release \
|
RUSTFLAGS="${RUSTFLAGS}" cargo build --manifest-path lib/c-api/Cargo.toml --release \
|
||||||
--no-default-features --features universal,dylib,staticlib,wasi
|
--no-default-features --features universal,dylib,staticlib,wasi
|
||||||
|
|
||||||
# Compatibility
|
|
||||||
# TODO: Delete this method
|
|
||||||
build-capi-cranelift-system-libffi: build-capi
|
|
||||||
|
|
||||||
###########
|
###########
|
||||||
# Testing #
|
# Testing #
|
||||||
@@ -582,6 +579,7 @@ endif
|
|||||||
package-capi:
|
package-capi:
|
||||||
mkdir -p "package/include"
|
mkdir -p "package/include"
|
||||||
mkdir -p "package/lib"
|
mkdir -p "package/lib"
|
||||||
|
cp lib/c-api/wasmer.h* package/include
|
||||||
cp lib/c-api/wasmer_wasm.h* package/include
|
cp lib/c-api/wasmer_wasm.h* package/include
|
||||||
cp lib/c-api/wasm.h* package/include
|
cp lib/c-api/wasm.h* package/include
|
||||||
cp lib/c-api/README.md package/include/README.md
|
cp lib/c-api/README.md package/include/README.md
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ languages**, so you can use WebAssembly _anywhere_.
|
|||||||
| | Language | Package | Documentation |
|
| | Language | Package | Documentation |
|
||||||
|-|-|-|-|
|
|-|-|-|-|
|
||||||
| ![Rust logo] | [**Rust**][Rust integration] | [`wasmer` Rust crate] | [Learn][rust docs]
|
| ![Rust logo] | [**Rust**][Rust integration] | [`wasmer` Rust crate] | [Learn][rust docs]
|
||||||
| ![C logo] | [**C/C++**][C integration] | [`wasmer_wasm.h` header] | [Learn][c docs] |
|
| ![C logo] | [**C/C++**][C integration] | [`wasmer.h` header] | [Learn][c docs] |
|
||||||
| ![C# logo] | [**C#**][C# integration] | [`WasmerSharp` NuGet package] | [Learn][c# docs] |
|
| ![C# logo] | [**C#**][C# integration] | [`WasmerSharp` NuGet package] | [Learn][c# docs] |
|
||||||
| ![D logo] | [**D**][D integration] | [`wasmer` Dub package] | [Learn][d docs] |
|
| ![D logo] | [**D**][D integration] | [`wasmer` Dub package] | [Learn][d docs] |
|
||||||
| ![Python logo] | [**Python**][Python integration] | [`wasmer` PyPI package] | [Learn][python docs] |
|
| ![Python logo] | [**Python**][Python integration] | [`wasmer` PyPI package] | [Learn][python docs] |
|
||||||
@@ -142,7 +142,7 @@ languages**, so you can use WebAssembly _anywhere_.
|
|||||||
|
|
||||||
[c logo]: https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/languages/c.svg
|
[c logo]: https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/languages/c.svg
|
||||||
[c integration]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
[c integration]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
||||||
[`wasmer_wasm.h` header]: https://github.com/wasmerio/wasmer/blob/master/lib/c-api/wasmer_wasm.h
|
[`wasmer.h` header]: https://github.com/wasmerio/wasmer/blob/master/lib/c-api/wasmer.h
|
||||||
[c docs]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api
|
[c docs]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api
|
||||||
|
|
||||||
[c# logo]: https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/languages/csharp.svg
|
[c# logo]: https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/languages/csharp.svg
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ $WASMER_DIR/
|
|||||||
wasm.h
|
wasm.h
|
||||||
wasmer.h
|
wasmer.h
|
||||||
wasmer.hh
|
wasmer.hh
|
||||||
wasmer_wasm.h
|
wasmer.h
|
||||||
```
|
```
|
||||||
|
|
||||||
Wasmer binary also ships with [`wasmer-config`](#wasmer-config)
|
Wasmer binary also ships with [`wasmer-config`](#wasmer-config)
|
||||||
@@ -27,7 +27,7 @@ Here is a simple example to use the C API:
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -88,10 +88,10 @@ fn running_self() -> bool {
|
|||||||
/// Build the header files for the `wasm_c_api` API.
|
/// Build the header files for the `wasm_c_api` API.
|
||||||
fn build_wasm_c_api_headers(crate_dir: &str, out_dir: &str) {
|
fn build_wasm_c_api_headers(crate_dir: &str, out_dir: &str) {
|
||||||
let mut crate_header_file = PathBuf::from(crate_dir);
|
let mut crate_header_file = PathBuf::from(crate_dir);
|
||||||
crate_header_file.push("wasmer_wasm");
|
crate_header_file.push("wasmer");
|
||||||
|
|
||||||
let mut out_header_file = PathBuf::from(out_dir);
|
let mut out_header_file = PathBuf::from(out_dir);
|
||||||
out_header_file.push("wasmer_wasm");
|
out_header_file.push("wasmer");
|
||||||
|
|
||||||
let mut pre_header = format!(
|
let mut pre_header = format!(
|
||||||
r#"// The Wasmer C/C++ header file compatible with the [`wasm-c-api`]
|
r#"// The Wasmer C/C++ header file compatible with the [`wasm-c-api`]
|
||||||
@@ -130,9 +130,9 @@ fn build_wasm_c_api_headers(crate_dir: &str, out_dir: &str) {
|
|||||||
// [`wasmer-c-api`]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
// [`wasmer-c-api`]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
||||||
// [documentation]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api/
|
// [documentation]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api/
|
||||||
|
|
||||||
#if !defined(WASMER_WASM_H_PRELUDE)
|
#if !defined(WASMER_H_PRELUDE)
|
||||||
|
|
||||||
#define WASMER_WASM_H_PRELUDE
|
#define WASMER_H_PRELUDE
|
||||||
{pre_header}"#,
|
{pre_header}"#,
|
||||||
pre_header = PRE_HEADER
|
pre_header = PRE_HEADER
|
||||||
);
|
);
|
||||||
@@ -148,7 +148,7 @@ fn build_wasm_c_api_headers(crate_dir: &str, out_dir: &str) {
|
|||||||
// Close pre header.
|
// Close pre header.
|
||||||
pre_header.push_str(
|
pre_header.push_str(
|
||||||
r#"
|
r#"
|
||||||
#endif // WASMER_WASM_H_PRELUDE
|
#endif // WASMER_H_PRELUDE
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -157,7 +157,7 @@ fn build_wasm_c_api_headers(crate_dir: &str, out_dir: &str) {
|
|||||||
"#,
|
"#,
|
||||||
);
|
);
|
||||||
|
|
||||||
let guard = "WASMER_WASM_H";
|
let guard = "WASMER_H";
|
||||||
|
|
||||||
// C bindings.
|
// C bindings.
|
||||||
{
|
{
|
||||||
|
|||||||
3
lib/c-api/examples/.gitignore
vendored
3
lib/c-api/examples/.gitignore
vendored
@@ -2,8 +2,9 @@
|
|||||||
*
|
*
|
||||||
*.o
|
*.o
|
||||||
|
|
||||||
|
|
||||||
# Unignore files ending with `.c` (i.e. `wasm-c-api-wasi.c`)
|
# Unignore files ending with `.c` (i.e. `wasm-c-api-wasi.c`)
|
||||||
!*.c
|
!*.c
|
||||||
# Unignore Makefile
|
# Unignore Makefile
|
||||||
!Makefile
|
!Makefile
|
||||||
|
!assets
|
||||||
|
!assets/*
|
||||||
|
|||||||
@@ -18,7 +18,13 @@ $(info * CFLAGS: $(CFLAGS))
|
|||||||
$(info * LDFLAGS: $(LDFLAGS))
|
$(info * LDFLAGS: $(LDFLAGS))
|
||||||
$(info * LDLIBS: $(LDLIBS))
|
$(info * LDLIBS: $(LDLIBS))
|
||||||
|
|
||||||
ALL = instance imports-exports exports-function exports-global memory features
|
ALL = deprecated-header early-exit instance imports-exports exports-function exports-global memory memory2 features wasi
|
||||||
|
|
||||||
|
.SILENT: deprecated-header deprecated-header.o
|
||||||
|
deprecated-header: deprecated-header.o
|
||||||
|
|
||||||
|
.SILENT: early-exit early-exit.o
|
||||||
|
early-exit: early-exit.o
|
||||||
|
|
||||||
.SILENT: instance instance.o
|
.SILENT: instance instance.o
|
||||||
instance: instance.o
|
instance: instance.o
|
||||||
@@ -35,9 +41,15 @@ exports-global: exports-global.o
|
|||||||
.SILENT: memory memory.o
|
.SILENT: memory memory.o
|
||||||
memory: memory.o
|
memory: memory.o
|
||||||
|
|
||||||
|
.SILENT: memory2 memory2.o
|
||||||
|
memory2: memory2.o
|
||||||
|
|
||||||
.SILENT: features features.o
|
.SILENT: features features.o
|
||||||
features: features.o
|
features: features.o
|
||||||
|
|
||||||
|
.SILENT: wasi wasi.o
|
||||||
|
wasi: wasi.o
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(ALL)
|
all: $(ALL)
|
||||||
|
|
||||||
|
|||||||
132
lib/c-api/examples/deprecated-header.c
Normal file
132
lib/c-api/examples/deprecated-header.c
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
// This is now deprecated, but it should work regardless
|
||||||
|
#include "wasmer_wasm.h"
|
||||||
|
|
||||||
|
#define own
|
||||||
|
|
||||||
|
// Use the last_error API to retrieve error messages
|
||||||
|
own char* get_wasmer_error() {
|
||||||
|
int error_len = wasmer_last_error_length();
|
||||||
|
printf("Error len: `%d`\n", error_len);
|
||||||
|
char *error_str = malloc(error_len);
|
||||||
|
wasmer_last_error_message(error_str, error_len);
|
||||||
|
return error_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, const char *argv[]) {
|
||||||
|
printf("Initializing...\n");
|
||||||
|
own wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
own wasm_store_t* store = wasm_store_new(engine);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits1 = {
|
||||||
|
.min = 0,
|
||||||
|
.max = 0x7FFFFFFF,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype1 = wasm_memorytype_new(&limits1);
|
||||||
|
own wasm_memory_t* memory1 = wasm_memory_new(store, memtype1);
|
||||||
|
assert(memory1 == NULL);
|
||||||
|
char* error = get_wasmer_error();
|
||||||
|
printf("Found error string: %s\n", error);
|
||||||
|
assert(0 == strcmp("The maximum requested memory (2147483647 pages) is greater than the maximum allowed memory (65536 pages)", error));
|
||||||
|
free(error);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype1);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits2 = {
|
||||||
|
.min = 15,
|
||||||
|
.max = 25,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype2 = wasm_memorytype_new(&limits2);
|
||||||
|
own wasm_memory_t* memory2 = wasm_memory_new(store, memtype2);
|
||||||
|
assert(memory2 != NULL);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype2);
|
||||||
|
wasm_memory_delete(memory2);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits3 = {
|
||||||
|
.min = 15,
|
||||||
|
.max = wasm_limits_max_default,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype3 = wasm_memorytype_new(&limits3);
|
||||||
|
own wasm_memory_t* memory3 = wasm_memory_new(store, memtype3);
|
||||||
|
assert(memory3 != NULL);
|
||||||
|
int size = wasm_memory_size(memory3);
|
||||||
|
printf("memory size: %d\n", size);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype3);
|
||||||
|
wasm_memory_delete(memory3);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits4 = {
|
||||||
|
.min = 0x7FFFFFFF,
|
||||||
|
.max = 0x7FFFFFFF,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype4 = wasm_memorytype_new(&limits4);
|
||||||
|
own wasm_memory_t* memory4 = wasm_memory_new(store, memtype4);
|
||||||
|
assert(memory4 == NULL);
|
||||||
|
error = get_wasmer_error();
|
||||||
|
printf("Found error string: %s\n", error);
|
||||||
|
assert(0 == strcmp("The minimum requested (2147483647 pages) memory is greater than the maximum allowed memory (65536 pages)", error));
|
||||||
|
free(error);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype4);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits5 = {
|
||||||
|
.min = 0x7FFFFFFF,
|
||||||
|
.max = 0x0FFFFFFF,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype5 = wasm_memorytype_new(&limits5);
|
||||||
|
own wasm_memory_t* memory5 = wasm_memory_new(store, memtype5);
|
||||||
|
assert(memory5 == NULL);
|
||||||
|
error = get_wasmer_error();
|
||||||
|
printf("Found error string: %s\n", error);
|
||||||
|
assert(0 == strcmp("The minimum requested (2147483647 pages) memory is greater than the maximum allowed memory (65536 pages)", error));
|
||||||
|
free(error);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype5);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits6 = {
|
||||||
|
.min = 15,
|
||||||
|
.max = 10,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype6 = wasm_memorytype_new(&limits6);
|
||||||
|
own wasm_memory_t* memory6 = wasm_memory_new(store, memtype6);
|
||||||
|
assert(memory6 == NULL);
|
||||||
|
error = get_wasmer_error();
|
||||||
|
printf("Found error string: %s\n", error);
|
||||||
|
assert(0 == strcmp("The memory is invalid because the maximum (10 pages) is less than the minimum (15 pages)", error));
|
||||||
|
free(error);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype6);
|
||||||
|
|
||||||
|
// =====================
|
||||||
|
wasm_limits_t limits7 = {
|
||||||
|
.min = 0x7FFFFFFF,
|
||||||
|
.max = 10,
|
||||||
|
};
|
||||||
|
own wasm_memorytype_t* memtype7 = wasm_memorytype_new(&limits7);
|
||||||
|
own wasm_memory_t* memory7 = wasm_memory_new(store, memtype7);
|
||||||
|
assert(memory7 == NULL);
|
||||||
|
error = get_wasmer_error();
|
||||||
|
printf("Found error string: %s\n", error);
|
||||||
|
assert(0 == strcmp("The minimum requested (2147483647 pages) memory is greater than the maximum allowed memory (65536 pages)", error));
|
||||||
|
free(error);
|
||||||
|
|
||||||
|
wasm_memorytype_delete(memtype7);
|
||||||
|
|
||||||
|
printf("Shutting down...\n");
|
||||||
|
wasm_store_delete(store);
|
||||||
|
wasm_engine_delete(engine);
|
||||||
|
|
||||||
|
printf("Done.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
#define own
|
#define own
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
wasm_trap_t* host_func_callback(const wasm_val_vec_t* args, wasm_val_vec_t* results) {
|
wasm_trap_t* host_func_callback(const wasm_val_vec_t* args, wasm_val_vec_t* results) {
|
||||||
printf("Calling back...\n> ");
|
printf("Calling back...\n> ");
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
const char *wat_string =
|
const char *wat_string =
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
#define own
|
#define own
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
|
|
||||||
#define BUF_SIZE 128
|
#define BUF_SIZE 128
|
||||||
#define own
|
#define own
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
//! # use inline_c::assert_c;
|
//! # use inline_c::assert_c;
|
||||||
//! # fn main() {
|
//! # fn main() {
|
||||||
//! # (assert_c! {
|
//! # (assert_c! {
|
||||||
//! # #include "tests/wasmer_wasm.h"
|
//! # #include "tests/wasmer.h"
|
||||||
//! #
|
//! #
|
||||||
//! int main() {
|
//! int main() {
|
||||||
//! // Create an invalid WebAssembly module from a WAT definition,
|
//! // Create an invalid WebAssembly module from a WAT definition,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
//! by the `wasm.h` C header file. However, this crate API provides
|
//! by the `wasm.h` C header file. However, this crate API provides
|
||||||
//! some extensions, like the `wasi_*` or `wasmer_*` types and
|
//! some extensions, like the `wasi_*` or `wasmer_*` types and
|
||||||
//! functions, which aren't yet defined by the standard. The
|
//! functions, which aren't yet defined by the standard. The
|
||||||
//! `wasmer_wasm.h` header file already depends on the `wasm.h`
|
//! `wasmer.h` header file already depends on the `wasm.h`
|
||||||
//! file. A copy lands in this repository for the sake of simplicity.
|
//! file. A copy lands in this repository for the sake of simplicity.
|
||||||
|
|
||||||
#![doc(html_favicon_url = "https://wasmer.io/images/icons/favicon-32x32.png")]
|
#![doc(html_favicon_url = "https://wasmer.io/images/icons/favicon-32x32.png")]
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ pub struct wasm_config_t {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -157,7 +157,7 @@ pub extern "C" fn wasm_config_new() -> Box<wasm_config_t> {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -186,7 +186,7 @@ pub extern "C" fn wasm_config_delete(_config: Option<Box<wasm_config_t>>) {}
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -240,7 +240,7 @@ pub extern "C" fn wasm_config_set_compiler(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -397,7 +397,7 @@ cfg_if! {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create a default engine.
|
/// // Create a default engine.
|
||||||
@@ -621,7 +621,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_engine_new() {
|
fn test_engine_new() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
|||||||
4
lib/c-api/src/wasm_c_api/externals/global.rs
vendored
4
lib/c-api/src/wasm_c_api/externals/global.rs
vendored
@@ -96,7 +96,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_set_host_global_immutable() {
|
fn test_set_host_global_immutable() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -128,7 +128,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_set_guest_global_immutable() {
|
fn test_set_guest_global_immutable() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
|||||||
2
lib/c-api/src/wasm_c_api/externals/mod.rs
vendored
2
lib/c-api/src/wasm_c_api/externals/mod.rs
vendored
@@ -256,7 +256,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_extern_copy() {
|
fn test_extern_copy() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ pub unsafe extern "C" fn wasm_instance_delete(_instance: Option<Box<wasm_instanc
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -201,7 +201,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_instance_new() {
|
fn test_instance_new() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
// The `sum` host function implementation.
|
// The `sum` host function implementation.
|
||||||
wasm_trap_t* sum_callback(
|
wasm_trap_t* sum_callback(
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ macro_rules! wasm_declare_vec_inner {
|
|||||||
# use inline_c::assert_c;
|
# use inline_c::assert_c;
|
||||||
# fn main() {
|
# fn main() {
|
||||||
# (assert_c! {
|
# (assert_c! {
|
||||||
# #include \"tests/wasmer_wasm.h\"
|
# #include \"tests/wasmer.h\"
|
||||||
#
|
#
|
||||||
int main() {
|
int main() {
|
||||||
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
||||||
@@ -60,7 +60,7 @@ Read the documentation of [`" $prefix "_" $name "_t`] to see more concrete examp
|
|||||||
# use inline_c::assert_c;
|
# use inline_c::assert_c;
|
||||||
# fn main() {
|
# fn main() {
|
||||||
# (assert_c! {
|
# (assert_c! {
|
||||||
# #include \"tests/wasmer_wasm.h\"
|
# #include \"tests/wasmer.h\"
|
||||||
#
|
#
|
||||||
int main() {
|
int main() {
|
||||||
// Create a vector of 2 `" $prefix "_" $name "_t`.
|
// Create a vector of 2 `" $prefix "_" $name "_t`.
|
||||||
@@ -202,7 +202,7 @@ See the [`" $prefix "_" $name "_vec_t`] type to get an example."]
|
|||||||
# use inline_c::assert_c;
|
# use inline_c::assert_c;
|
||||||
# fn main() {
|
# fn main() {
|
||||||
# (assert_c! {
|
# (assert_c! {
|
||||||
# #include \"tests/wasmer_wasm.h\"
|
# #include \"tests/wasmer.h\"
|
||||||
#
|
#
|
||||||
int main() {
|
int main() {
|
||||||
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
||||||
@@ -383,7 +383,7 @@ Read the documentation of [`" $prefix "_" $name "_t`] to see more concrete examp
|
|||||||
# use inline_c::assert_c;
|
# use inline_c::assert_c;
|
||||||
# fn main() {
|
# fn main() {
|
||||||
# (assert_c! {
|
# (assert_c! {
|
||||||
# #include \"tests/wasmer_wasm.h\"
|
# #include \"tests/wasmer.h\"
|
||||||
#
|
#
|
||||||
int main() {
|
int main() {
|
||||||
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
// Creates an empty vector of `" $prefix "_" $name "_t`.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
//! be characterized as a _living standard_. As such, the API is not
|
//! be characterized as a _living standard_. As such, the API is not
|
||||||
//! yet stable, even though it shows maturity over time. The API is
|
//! yet stable, even though it shows maturity over time. The API is
|
||||||
//! described by the `wasm.h` C header, which is included by
|
//! described by the `wasm.h` C header, which is included by
|
||||||
//! `wasmer_wasm.h` C header file (which contains extension of the
|
//! `wasmer.h` C header file (which contains extension of the
|
||||||
//! standard API, for example to provide WASI or vendor-specific
|
//! standard API, for example to provide WASI or vendor-specific
|
||||||
//! features).
|
//! features).
|
||||||
//!
|
//!
|
||||||
@@ -39,7 +39,7 @@ pub mod macros;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine.
|
/// // Create the engine.
|
||||||
@@ -83,7 +83,7 @@ pub mod externals;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -141,7 +141,7 @@ pub mod instance;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -198,7 +198,7 @@ pub mod module;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine.
|
/// // Create the engine.
|
||||||
@@ -244,7 +244,7 @@ pub mod value;
|
|||||||
|
|
||||||
/// Wasmer-specific API to get or query the version of this Wasm C API.
|
/// Wasmer-specific API to get or query the version of this Wasm C API.
|
||||||
///
|
///
|
||||||
/// The `wasmer_wasm.h` file provides the `WASMER_VERSION`,
|
/// The `wasmer.h` file provides the `WASMER_VERSION`,
|
||||||
/// `WASMER_VERSION_MAJOR`, `WASMER_VERSION_MINOR`,
|
/// `WASMER_VERSION_MAJOR`, `WASMER_VERSION_MINOR`,
|
||||||
/// `WASMER_VERSION_PATCH` and `WASMER_VERSION_PRE`
|
/// `WASMER_VERSION_PATCH` and `WASMER_VERSION_PRE`
|
||||||
/// constants. However, in absence of this header file, it is possible
|
/// constants. However, in absence of this header file, it is possible
|
||||||
@@ -261,7 +261,7 @@ pub mod value;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Get and print the version.
|
/// // Get and print the version.
|
||||||
@@ -293,7 +293,7 @@ pub mod wasi;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Our WAT module.
|
/// // Our WAT module.
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ pub unsafe extern "C" fn wasm_module_delete(_module: Option<Box<wasm_module_t>>)
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -132,7 +132,7 @@ pub unsafe extern "C" fn wasm_module_validate(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -256,7 +256,7 @@ pub unsafe extern "C" fn wasm_module_exports(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -408,7 +408,7 @@ pub unsafe extern "C" fn wasm_module_imports(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -524,7 +524,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_validate() {
|
fn test_module_validate() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -551,7 +551,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_new() {
|
fn test_module_new() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -580,7 +580,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_exports() {
|
fn test_module_exports() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -688,7 +688,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_imports() {
|
fn test_module_imports() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -806,7 +806,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_serialize() {
|
fn test_module_serialize() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -840,7 +840,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_module_serialize_and_deserialize() {
|
fn test_module_serialize_and_deserialize() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ use super::target_lexicon::wasmer_target_t;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -58,7 +58,7 @@ pub extern "C" fn wasm_config_set_target(config: &mut wasm_config_t, target: Box
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -105,7 +105,7 @@ pub extern "C" fn wasm_config_set_features(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the configuration.
|
/// // Create the configuration.
|
||||||
@@ -178,7 +178,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
|
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
@@ -213,7 +213,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
|
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
@@ -252,7 +252,7 @@ mod tests {
|
|||||||
);
|
);
|
||||||
|
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
//! # use inline_c::assert_c;
|
//! # use inline_c::assert_c;
|
||||||
//! # fn main() {
|
//! # fn main() {
|
||||||
//! # (assert_c! {
|
//! # (assert_c! {
|
||||||
//! # #include "tests/wasmer_wasm.h"
|
//! # #include "tests/wasmer.h"
|
||||||
//! #
|
//! #
|
||||||
//! int main() {
|
//! int main() {
|
||||||
//! // Declare features.
|
//! // Declare features.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
//! # use inline_c::assert_c;
|
//! # use inline_c::assert_c;
|
||||||
//! # fn main() {
|
//! # fn main() {
|
||||||
//! # (assert_c! {
|
//! # (assert_c! {
|
||||||
//! # #include "tests/wasmer_wasm.h"
|
//! # #include "tests/wasmer.h"
|
||||||
//! #
|
//! #
|
||||||
//! // Define our “cost function”.
|
//! // Define our “cost function”.
|
||||||
//! uint64_t cost_function(wasmer_parser_operator_t wasm_operator) {
|
//! uint64_t cost_function(wasmer_parser_operator_t wasm_operator) {
|
||||||
@@ -233,7 +233,7 @@ pub extern "C" fn wasmer_metering_points_are_exhausted(instance: &wasm_instance_
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// // Define a dummy “cost function”.
|
/// // Define a dummy “cost function”.
|
||||||
/// uint64_t cost_function(wasmer_parser_operator_t wasm_operator) {
|
/// uint64_t cost_function(wasmer_parser_operator_t wasm_operator) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use std::sync::Arc;
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
@@ -83,7 +83,7 @@ pub unsafe extern "C" fn wasmer_module_name(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create the engine and the store.
|
/// // Create the engine and the store.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
//! # use inline_c::assert_c;
|
//! # use inline_c::assert_c;
|
||||||
//! # fn main() {
|
//! # fn main() {
|
||||||
//! # (assert_c! {
|
//! # (assert_c! {
|
||||||
//! # #include "tests/wasmer_wasm.h"
|
//! # #include "tests/wasmer.h"
|
||||||
//! #
|
//! #
|
||||||
//! int main() {
|
//! int main() {
|
||||||
//! // Declare the target triple.
|
//! // Declare the target triple.
|
||||||
@@ -112,7 +112,7 @@ pub extern "C" fn wasmer_target_delete(_target: Option<Box<wasmer_target_t>>) {}
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// wasm_name_t triple_name;
|
/// wasm_name_t triple_name;
|
||||||
@@ -165,7 +165,7 @@ pub unsafe extern "C" fn wasmer_triple_new(
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// wasmer_triple_t* triple = wasmer_triple_new_from_host();
|
/// wasmer_triple_t* triple = wasmer_triple_new_from_host();
|
||||||
@@ -229,7 +229,7 @@ pub extern "C" fn wasmer_triple_delete(_triple: Option<Box<wasmer_triple_t>>) {}
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create a new CPU feature set.
|
/// // Create a new CPU feature set.
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ pub union wasm_val_inner {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Create a 32-bit integer Wasm value.
|
/// // Create a 32-bit integer Wasm value.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ pub unsafe extern "C" fn wasmer_version() -> *const c_char {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Get and print the version components.
|
/// // Get and print the version components.
|
||||||
@@ -101,7 +101,7 @@ pub unsafe extern "C" fn wasmer_version_patch() -> u8 {
|
|||||||
/// # use inline_c::assert_c;
|
/// # use inline_c::assert_c;
|
||||||
/// # fn main() {
|
/// # fn main() {
|
||||||
/// # (assert_c! {
|
/// # (assert_c! {
|
||||||
/// # #include "tests/wasmer_wasm.h"
|
/// # #include "tests/wasmer.h"
|
||||||
/// #
|
/// #
|
||||||
/// int main() {
|
/// int main() {
|
||||||
/// // Get and print the pre version.
|
/// // Get and print the pre version.
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_wasi_get_wasi_version_snapshot0() {
|
fn test_wasi_get_wasi_version_snapshot0() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -426,7 +426,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_wasi_get_wasi_version_snapshot1() {
|
fn test_wasi_get_wasi_version_snapshot1() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
@@ -457,7 +457,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_wasi_get_wasi_version_invalid() {
|
fn test_wasi_get_wasi_version_invalid() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_engine_t* engine = wasm_engine_new();
|
wasm_engine_t* engine = wasm_engine_new();
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_wat2wasm() {
|
fn test_wat2wasm() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_byte_vec_t wat;
|
wasm_byte_vec_t wat;
|
||||||
@@ -72,7 +72,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_wat2wasm_failed() {
|
fn test_wat2wasm_failed() {
|
||||||
(assert_c! {
|
(assert_c! {
|
||||||
#include "tests/wasmer_wasm.h"
|
#include "tests/wasmer.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
wasm_byte_vec_t wat;
|
wasm_byte_vec_t wat;
|
||||||
|
|||||||
@@ -18,9 +18,6 @@ $(info * CFLAGS: $(CFLAGS))
|
|||||||
$(info * LDFLAGS: $(LDFLAGS))
|
$(info * LDFLAGS: $(LDFLAGS))
|
||||||
$(info * LDLIBS: $(LDLIBS))
|
$(info * LDLIBS: $(LDLIBS))
|
||||||
|
|
||||||
CAPI_WASMER_TESTS = \
|
|
||||||
test-early-exit test-memory test-wasi \
|
|
||||||
|
|
||||||
CAPI_BASE_TESTS = \
|
CAPI_BASE_TESTS = \
|
||||||
wasm-c-api/example/callback wasm-c-api/example/global wasm-c-api/example/hello \
|
wasm-c-api/example/callback wasm-c-api/example/global wasm-c-api/example/hello \
|
||||||
wasm-c-api/example/memory wasm-c-api/example/reflect wasm-c-api/example/serialize \
|
wasm-c-api/example/memory wasm-c-api/example/reflect wasm-c-api/example/serialize \
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#define TEST_WASM
|
#define TEST_WASM
|
||||||
|
|
||||||
#include "../wasm.h"
|
#include "../wasm.h"
|
||||||
#include "../wasmer_wasm.h"
|
#include "../wasmer.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
// This header file is used only for test purposes! It is used by unit
|
// This header file is used only for test purposes! It is used by unit
|
||||||
// test inside the `src/` directory for the moment.
|
// test inside the `src/` directory for the moment.
|
||||||
|
|
||||||
#ifndef TEST_WASMER_WASM
|
#ifndef TEST_WASMER
|
||||||
#define TEST_WASMER_WASM
|
#define TEST_WASMER
|
||||||
|
|
||||||
#include "../wasmer_wasm.h"
|
#include "../wasmer.h"
|
||||||
#include "wasm.h"
|
#include "wasm.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -22,4 +22,4 @@ static inline void wasmer_byte_vec_new_from_string(wasm_byte_vec_t *out,
|
|||||||
wasm_byte_vec_new(out, strlen(s), s);
|
wasm_byte_vec_new(out, strlen(s), s);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* TEST_WASMER_WASM */
|
#endif /* TEST_WASMER */
|
||||||
896
lib/c-api/wasmer.h
Normal file
896
lib/c-api/wasmer.h
Normal file
@@ -0,0 +1,896 @@
|
|||||||
|
// The Wasmer C/C++ header file compatible with the [`wasm-c-api`]
|
||||||
|
// standard API, as `wasm.h` (included here).
|
||||||
|
//
|
||||||
|
// This file is automatically generated by `lib/c-api/build.rs` of the
|
||||||
|
// [`wasmer-c-api`] Rust crate.
|
||||||
|
//
|
||||||
|
// # Stability
|
||||||
|
//
|
||||||
|
// The [`wasm-c-api`] standard API is a _living_ standard. There is no
|
||||||
|
// commitment for stability yet. We (Wasmer) will try our best to keep
|
||||||
|
// backward compatibility as much as possible. Nonetheless, some
|
||||||
|
// necessary API aren't yet standardized, and as such, we provide a
|
||||||
|
// custom API, e.g. `wasi_*` types and functions.
|
||||||
|
//
|
||||||
|
// The documentation makes it clear whether a function is unstable.
|
||||||
|
//
|
||||||
|
// When a type or a function will be deprecated, it will be marked as
|
||||||
|
// such with the appropriated compiler warning, and will be removed at
|
||||||
|
// the next release round.
|
||||||
|
//
|
||||||
|
// # Documentation
|
||||||
|
//
|
||||||
|
// At the time of writing, the [`wasm-c-api`] standard has no
|
||||||
|
// documentation. This file also does not include inline
|
||||||
|
// documentation. However, we have made (and we continue to make) an
|
||||||
|
// important effort to document everything. [See the documentation
|
||||||
|
// online][documentation]. Please refer to this page for the real
|
||||||
|
// canonical documentation. It also contains numerous examples.
|
||||||
|
//
|
||||||
|
// To generate the documentation locally, run `cargo doc --open` from
|
||||||
|
// within the [`wasmer-c-api`] Rust crate.
|
||||||
|
//
|
||||||
|
// [`wasm-c-api`]: https://github.com/WebAssembly/wasm-c-api
|
||||||
|
// [`wasmer-c-api`]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
||||||
|
// [documentation]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api/
|
||||||
|
|
||||||
|
#if !defined(WASMER_H_PRELUDE)
|
||||||
|
|
||||||
|
#define WASMER_H_PRELUDE
|
||||||
|
|
||||||
|
// Define the `ARCH_X86_X64` constant.
|
||||||
|
#if defined(MSVC) && defined(_M_AMD64)
|
||||||
|
# define ARCH_X86_64
|
||||||
|
#elif (defined(GCC) || defined(__GNUC__) || defined(__clang__)) && defined(__x86_64__)
|
||||||
|
# define ARCH_X86_64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Compatibility with non-Clang compilers.
|
||||||
|
#if !defined(__has_attribute)
|
||||||
|
# define __has_attribute(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Compatibility with non-Clang compilers.
|
||||||
|
#if !defined(__has_declspec_attribute)
|
||||||
|
# define __has_declspec_attribute(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Define the `DEPRECATED` macro.
|
||||||
|
#if defined(GCC) || defined(__GNUC__) || __has_attribute(deprecated)
|
||||||
|
# define DEPRECATED(message) __attribute__((deprecated(message)))
|
||||||
|
#elif defined(MSVC) || __has_declspec_attribute(deprecated)
|
||||||
|
# define DEPRECATED(message) __declspec(deprecated(message))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// The `universal` feature has been enabled for this build.
|
||||||
|
#define WASMER_UNIVERSAL_ENABLED
|
||||||
|
|
||||||
|
// The `compiler` feature has been enabled for this build.
|
||||||
|
#define WASMER_COMPILER_ENABLED
|
||||||
|
|
||||||
|
// The `wasi` feature has been enabled for this build.
|
||||||
|
#define WASMER_WASI_ENABLED
|
||||||
|
|
||||||
|
// The `middlewares` feature has been enabled for this build.
|
||||||
|
#define WASMER_MIDDLEWARES_ENABLED
|
||||||
|
|
||||||
|
// This file corresponds to the following Wasmer version.
|
||||||
|
#define WASMER_VERSION "1.0.2"
|
||||||
|
#define WASMER_VERSION_MAJOR 1
|
||||||
|
#define WASMER_VERSION_MINOR 0
|
||||||
|
#define WASMER_VERSION_PATCH 2
|
||||||
|
#define WASMER_VERSION_PRE ""
|
||||||
|
|
||||||
|
#endif // WASMER_H_PRELUDE
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// OK, here we go. The code below is automatically generated.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef WASMER_H
|
||||||
|
#define WASMER_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "wasm.h"
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
typedef enum wasi_version_t {
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
INVALID_VERSION = -1,
|
||||||
|
#endif
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
LATEST = 0,
|
||||||
|
#endif
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
SNAPSHOT0 = 1,
|
||||||
|
#endif
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
SNAPSHOT1 = 2,
|
||||||
|
#endif
|
||||||
|
} wasi_version_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_COMPILER_ENABLED)
|
||||||
|
typedef enum wasmer_compiler_t {
|
||||||
|
CRANELIFT = 0,
|
||||||
|
LLVM = 1,
|
||||||
|
SINGLEPASS = 2,
|
||||||
|
} wasmer_compiler_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum wasmer_engine_t {
|
||||||
|
UNIVERSAL = 0,
|
||||||
|
DYLIB = 1,
|
||||||
|
STATICLIB = 2,
|
||||||
|
} wasmer_engine_t;
|
||||||
|
|
||||||
|
typedef enum wasmer_parser_operator_t {
|
||||||
|
Unreachable,
|
||||||
|
Nop,
|
||||||
|
Block,
|
||||||
|
Loop,
|
||||||
|
If,
|
||||||
|
Else,
|
||||||
|
Try,
|
||||||
|
Catch,
|
||||||
|
CatchAll,
|
||||||
|
Delegate,
|
||||||
|
Throw,
|
||||||
|
Rethrow,
|
||||||
|
Unwind,
|
||||||
|
End,
|
||||||
|
Br,
|
||||||
|
BrIf,
|
||||||
|
BrTable,
|
||||||
|
Return,
|
||||||
|
Call,
|
||||||
|
CallIndirect,
|
||||||
|
ReturnCall,
|
||||||
|
ReturnCallIndirect,
|
||||||
|
Drop,
|
||||||
|
Select,
|
||||||
|
TypedSelect,
|
||||||
|
LocalGet,
|
||||||
|
LocalSet,
|
||||||
|
LocalTee,
|
||||||
|
GlobalGet,
|
||||||
|
GlobalSet,
|
||||||
|
I32Load,
|
||||||
|
I64Load,
|
||||||
|
F32Load,
|
||||||
|
F64Load,
|
||||||
|
I32Load8S,
|
||||||
|
I32Load8U,
|
||||||
|
I32Load16S,
|
||||||
|
I32Load16U,
|
||||||
|
I64Load8S,
|
||||||
|
I64Load8U,
|
||||||
|
I64Load16S,
|
||||||
|
I64Load16U,
|
||||||
|
I64Load32S,
|
||||||
|
I64Load32U,
|
||||||
|
I32Store,
|
||||||
|
I64Store,
|
||||||
|
F32Store,
|
||||||
|
F64Store,
|
||||||
|
I32Store8,
|
||||||
|
I32Store16,
|
||||||
|
I64Store8,
|
||||||
|
I64Store16,
|
||||||
|
I64Store32,
|
||||||
|
MemorySize,
|
||||||
|
MemoryGrow,
|
||||||
|
I32Const,
|
||||||
|
I64Const,
|
||||||
|
F32Const,
|
||||||
|
F64Const,
|
||||||
|
RefNull,
|
||||||
|
RefIsNull,
|
||||||
|
RefFunc,
|
||||||
|
I32Eqz,
|
||||||
|
I32Eq,
|
||||||
|
I32Ne,
|
||||||
|
I32LtS,
|
||||||
|
I32LtU,
|
||||||
|
I32GtS,
|
||||||
|
I32GtU,
|
||||||
|
I32LeS,
|
||||||
|
I32LeU,
|
||||||
|
I32GeS,
|
||||||
|
I32GeU,
|
||||||
|
I64Eqz,
|
||||||
|
I64Eq,
|
||||||
|
I64Ne,
|
||||||
|
I64LtS,
|
||||||
|
I64LtU,
|
||||||
|
I64GtS,
|
||||||
|
I64GtU,
|
||||||
|
I64LeS,
|
||||||
|
I64LeU,
|
||||||
|
I64GeS,
|
||||||
|
I64GeU,
|
||||||
|
F32Eq,
|
||||||
|
F32Ne,
|
||||||
|
F32Lt,
|
||||||
|
F32Gt,
|
||||||
|
F32Le,
|
||||||
|
F32Ge,
|
||||||
|
F64Eq,
|
||||||
|
F64Ne,
|
||||||
|
F64Lt,
|
||||||
|
F64Gt,
|
||||||
|
F64Le,
|
||||||
|
F64Ge,
|
||||||
|
I32Clz,
|
||||||
|
I32Ctz,
|
||||||
|
I32Popcnt,
|
||||||
|
I32Add,
|
||||||
|
I32Sub,
|
||||||
|
I32Mul,
|
||||||
|
I32DivS,
|
||||||
|
I32DivU,
|
||||||
|
I32RemS,
|
||||||
|
I32RemU,
|
||||||
|
I32And,
|
||||||
|
I32Or,
|
||||||
|
I32Xor,
|
||||||
|
I32Shl,
|
||||||
|
I32ShrS,
|
||||||
|
I32ShrU,
|
||||||
|
I32Rotl,
|
||||||
|
I32Rotr,
|
||||||
|
I64Clz,
|
||||||
|
I64Ctz,
|
||||||
|
I64Popcnt,
|
||||||
|
I64Add,
|
||||||
|
I64Sub,
|
||||||
|
I64Mul,
|
||||||
|
I64DivS,
|
||||||
|
I64DivU,
|
||||||
|
I64RemS,
|
||||||
|
I64RemU,
|
||||||
|
I64And,
|
||||||
|
I64Or,
|
||||||
|
I64Xor,
|
||||||
|
I64Shl,
|
||||||
|
I64ShrS,
|
||||||
|
I64ShrU,
|
||||||
|
I64Rotl,
|
||||||
|
I64Rotr,
|
||||||
|
F32Abs,
|
||||||
|
F32Neg,
|
||||||
|
F32Ceil,
|
||||||
|
F32Floor,
|
||||||
|
F32Trunc,
|
||||||
|
F32Nearest,
|
||||||
|
F32Sqrt,
|
||||||
|
F32Add,
|
||||||
|
F32Sub,
|
||||||
|
F32Mul,
|
||||||
|
F32Div,
|
||||||
|
F32Min,
|
||||||
|
F32Max,
|
||||||
|
F32Copysign,
|
||||||
|
F64Abs,
|
||||||
|
F64Neg,
|
||||||
|
F64Ceil,
|
||||||
|
F64Floor,
|
||||||
|
F64Trunc,
|
||||||
|
F64Nearest,
|
||||||
|
F64Sqrt,
|
||||||
|
F64Add,
|
||||||
|
F64Sub,
|
||||||
|
F64Mul,
|
||||||
|
F64Div,
|
||||||
|
F64Min,
|
||||||
|
F64Max,
|
||||||
|
F64Copysign,
|
||||||
|
I32WrapI64,
|
||||||
|
I32TruncF32S,
|
||||||
|
I32TruncF32U,
|
||||||
|
I32TruncF64S,
|
||||||
|
I32TruncF64U,
|
||||||
|
I64ExtendI32S,
|
||||||
|
I64ExtendI32U,
|
||||||
|
I64TruncF32S,
|
||||||
|
I64TruncF32U,
|
||||||
|
I64TruncF64S,
|
||||||
|
I64TruncF64U,
|
||||||
|
F32ConvertI32S,
|
||||||
|
F32ConvertI32U,
|
||||||
|
F32ConvertI64S,
|
||||||
|
F32ConvertI64U,
|
||||||
|
F32DemoteF64,
|
||||||
|
F64ConvertI32S,
|
||||||
|
F64ConvertI32U,
|
||||||
|
F64ConvertI64S,
|
||||||
|
F64ConvertI64U,
|
||||||
|
F64PromoteF32,
|
||||||
|
I32ReinterpretF32,
|
||||||
|
I64ReinterpretF64,
|
||||||
|
F32ReinterpretI32,
|
||||||
|
F64ReinterpretI64,
|
||||||
|
I32Extend8S,
|
||||||
|
I32Extend16S,
|
||||||
|
I64Extend8S,
|
||||||
|
I64Extend16S,
|
||||||
|
I64Extend32S,
|
||||||
|
I32TruncSatF32S,
|
||||||
|
I32TruncSatF32U,
|
||||||
|
I32TruncSatF64S,
|
||||||
|
I32TruncSatF64U,
|
||||||
|
I64TruncSatF32S,
|
||||||
|
I64TruncSatF32U,
|
||||||
|
I64TruncSatF64S,
|
||||||
|
I64TruncSatF64U,
|
||||||
|
MemoryInit,
|
||||||
|
DataDrop,
|
||||||
|
MemoryCopy,
|
||||||
|
MemoryFill,
|
||||||
|
TableInit,
|
||||||
|
ElemDrop,
|
||||||
|
TableCopy,
|
||||||
|
TableFill,
|
||||||
|
TableGet,
|
||||||
|
TableSet,
|
||||||
|
TableGrow,
|
||||||
|
TableSize,
|
||||||
|
MemoryAtomicNotify,
|
||||||
|
MemoryAtomicWait32,
|
||||||
|
MemoryAtomicWait64,
|
||||||
|
AtomicFence,
|
||||||
|
I32AtomicLoad,
|
||||||
|
I64AtomicLoad,
|
||||||
|
I32AtomicLoad8U,
|
||||||
|
I32AtomicLoad16U,
|
||||||
|
I64AtomicLoad8U,
|
||||||
|
I64AtomicLoad16U,
|
||||||
|
I64AtomicLoad32U,
|
||||||
|
I32AtomicStore,
|
||||||
|
I64AtomicStore,
|
||||||
|
I32AtomicStore8,
|
||||||
|
I32AtomicStore16,
|
||||||
|
I64AtomicStore8,
|
||||||
|
I64AtomicStore16,
|
||||||
|
I64AtomicStore32,
|
||||||
|
I32AtomicRmwAdd,
|
||||||
|
I64AtomicRmwAdd,
|
||||||
|
I32AtomicRmw8AddU,
|
||||||
|
I32AtomicRmw16AddU,
|
||||||
|
I64AtomicRmw8AddU,
|
||||||
|
I64AtomicRmw16AddU,
|
||||||
|
I64AtomicRmw32AddU,
|
||||||
|
I32AtomicRmwSub,
|
||||||
|
I64AtomicRmwSub,
|
||||||
|
I32AtomicRmw8SubU,
|
||||||
|
I32AtomicRmw16SubU,
|
||||||
|
I64AtomicRmw8SubU,
|
||||||
|
I64AtomicRmw16SubU,
|
||||||
|
I64AtomicRmw32SubU,
|
||||||
|
I32AtomicRmwAnd,
|
||||||
|
I64AtomicRmwAnd,
|
||||||
|
I32AtomicRmw8AndU,
|
||||||
|
I32AtomicRmw16AndU,
|
||||||
|
I64AtomicRmw8AndU,
|
||||||
|
I64AtomicRmw16AndU,
|
||||||
|
I64AtomicRmw32AndU,
|
||||||
|
I32AtomicRmwOr,
|
||||||
|
I64AtomicRmwOr,
|
||||||
|
I32AtomicRmw8OrU,
|
||||||
|
I32AtomicRmw16OrU,
|
||||||
|
I64AtomicRmw8OrU,
|
||||||
|
I64AtomicRmw16OrU,
|
||||||
|
I64AtomicRmw32OrU,
|
||||||
|
I32AtomicRmwXor,
|
||||||
|
I64AtomicRmwXor,
|
||||||
|
I32AtomicRmw8XorU,
|
||||||
|
I32AtomicRmw16XorU,
|
||||||
|
I64AtomicRmw8XorU,
|
||||||
|
I64AtomicRmw16XorU,
|
||||||
|
I64AtomicRmw32XorU,
|
||||||
|
I32AtomicRmwXchg,
|
||||||
|
I64AtomicRmwXchg,
|
||||||
|
I32AtomicRmw8XchgU,
|
||||||
|
I32AtomicRmw16XchgU,
|
||||||
|
I64AtomicRmw8XchgU,
|
||||||
|
I64AtomicRmw16XchgU,
|
||||||
|
I64AtomicRmw32XchgU,
|
||||||
|
I32AtomicRmwCmpxchg,
|
||||||
|
I64AtomicRmwCmpxchg,
|
||||||
|
I32AtomicRmw8CmpxchgU,
|
||||||
|
I32AtomicRmw16CmpxchgU,
|
||||||
|
I64AtomicRmw8CmpxchgU,
|
||||||
|
I64AtomicRmw16CmpxchgU,
|
||||||
|
I64AtomicRmw32CmpxchgU,
|
||||||
|
V128Load,
|
||||||
|
V128Store,
|
||||||
|
V128Const,
|
||||||
|
I8x16Splat,
|
||||||
|
I8x16ExtractLaneS,
|
||||||
|
I8x16ExtractLaneU,
|
||||||
|
I8x16ReplaceLane,
|
||||||
|
I16x8Splat,
|
||||||
|
I16x8ExtractLaneS,
|
||||||
|
I16x8ExtractLaneU,
|
||||||
|
I16x8ReplaceLane,
|
||||||
|
I32x4Splat,
|
||||||
|
I32x4ExtractLane,
|
||||||
|
I32x4ReplaceLane,
|
||||||
|
I64x2Splat,
|
||||||
|
I64x2ExtractLane,
|
||||||
|
I64x2ReplaceLane,
|
||||||
|
F32x4Splat,
|
||||||
|
F32x4ExtractLane,
|
||||||
|
F32x4ReplaceLane,
|
||||||
|
F64x2Splat,
|
||||||
|
F64x2ExtractLane,
|
||||||
|
F64x2ReplaceLane,
|
||||||
|
I8x16Eq,
|
||||||
|
I8x16Ne,
|
||||||
|
I8x16LtS,
|
||||||
|
I8x16LtU,
|
||||||
|
I8x16GtS,
|
||||||
|
I8x16GtU,
|
||||||
|
I8x16LeS,
|
||||||
|
I8x16LeU,
|
||||||
|
I8x16GeS,
|
||||||
|
I8x16GeU,
|
||||||
|
I16x8Eq,
|
||||||
|
I16x8Ne,
|
||||||
|
I16x8LtS,
|
||||||
|
I16x8LtU,
|
||||||
|
I16x8GtS,
|
||||||
|
I16x8GtU,
|
||||||
|
I16x8LeS,
|
||||||
|
I16x8LeU,
|
||||||
|
I16x8GeS,
|
||||||
|
I16x8GeU,
|
||||||
|
I32x4Eq,
|
||||||
|
I32x4Ne,
|
||||||
|
I32x4LtS,
|
||||||
|
I32x4LtU,
|
||||||
|
I32x4GtS,
|
||||||
|
I32x4GtU,
|
||||||
|
I32x4LeS,
|
||||||
|
I32x4LeU,
|
||||||
|
I32x4GeS,
|
||||||
|
I32x4GeU,
|
||||||
|
I64x2Eq,
|
||||||
|
I64x2Ne,
|
||||||
|
I64x2LtS,
|
||||||
|
I64x2GtS,
|
||||||
|
I64x2LeS,
|
||||||
|
I64x2GeS,
|
||||||
|
F32x4Eq,
|
||||||
|
F32x4Ne,
|
||||||
|
F32x4Lt,
|
||||||
|
F32x4Gt,
|
||||||
|
F32x4Le,
|
||||||
|
F32x4Ge,
|
||||||
|
F64x2Eq,
|
||||||
|
F64x2Ne,
|
||||||
|
F64x2Lt,
|
||||||
|
F64x2Gt,
|
||||||
|
F64x2Le,
|
||||||
|
F64x2Ge,
|
||||||
|
V128Not,
|
||||||
|
V128And,
|
||||||
|
V128AndNot,
|
||||||
|
V128Or,
|
||||||
|
V128Xor,
|
||||||
|
V128Bitselect,
|
||||||
|
V128AnyTrue,
|
||||||
|
I8x16Abs,
|
||||||
|
I8x16Neg,
|
||||||
|
I8x16AllTrue,
|
||||||
|
I8x16Bitmask,
|
||||||
|
I8x16Shl,
|
||||||
|
I8x16ShrS,
|
||||||
|
I8x16ShrU,
|
||||||
|
I8x16Add,
|
||||||
|
I8x16AddSatS,
|
||||||
|
I8x16AddSatU,
|
||||||
|
I8x16Sub,
|
||||||
|
I8x16SubSatS,
|
||||||
|
I8x16SubSatU,
|
||||||
|
I8x16MinS,
|
||||||
|
I8x16MinU,
|
||||||
|
I8x16MaxS,
|
||||||
|
I8x16MaxU,
|
||||||
|
I8x16Popcnt,
|
||||||
|
I16x8Abs,
|
||||||
|
I16x8Neg,
|
||||||
|
I16x8AllTrue,
|
||||||
|
I16x8Bitmask,
|
||||||
|
I16x8Shl,
|
||||||
|
I16x8ShrS,
|
||||||
|
I16x8ShrU,
|
||||||
|
I16x8Add,
|
||||||
|
I16x8AddSatS,
|
||||||
|
I16x8AddSatU,
|
||||||
|
I16x8Sub,
|
||||||
|
I16x8SubSatS,
|
||||||
|
I16x8SubSatU,
|
||||||
|
I16x8Mul,
|
||||||
|
I16x8MinS,
|
||||||
|
I16x8MinU,
|
||||||
|
I16x8MaxS,
|
||||||
|
I16x8MaxU,
|
||||||
|
I16x8ExtAddPairwiseI8x16S,
|
||||||
|
I16x8ExtAddPairwiseI8x16U,
|
||||||
|
I32x4Abs,
|
||||||
|
I32x4Neg,
|
||||||
|
I32x4AllTrue,
|
||||||
|
I32x4Bitmask,
|
||||||
|
I32x4Shl,
|
||||||
|
I32x4ShrS,
|
||||||
|
I32x4ShrU,
|
||||||
|
I32x4Add,
|
||||||
|
I32x4Sub,
|
||||||
|
I32x4Mul,
|
||||||
|
I32x4MinS,
|
||||||
|
I32x4MinU,
|
||||||
|
I32x4MaxS,
|
||||||
|
I32x4MaxU,
|
||||||
|
I32x4DotI16x8S,
|
||||||
|
I32x4ExtAddPairwiseI16x8S,
|
||||||
|
I32x4ExtAddPairwiseI16x8U,
|
||||||
|
I64x2Abs,
|
||||||
|
I64x2Neg,
|
||||||
|
I64x2AllTrue,
|
||||||
|
I64x2Bitmask,
|
||||||
|
I64x2Shl,
|
||||||
|
I64x2ShrS,
|
||||||
|
I64x2ShrU,
|
||||||
|
I64x2Add,
|
||||||
|
I64x2Sub,
|
||||||
|
I64x2Mul,
|
||||||
|
F32x4Ceil,
|
||||||
|
F32x4Floor,
|
||||||
|
F32x4Trunc,
|
||||||
|
F32x4Nearest,
|
||||||
|
F64x2Ceil,
|
||||||
|
F64x2Floor,
|
||||||
|
F64x2Trunc,
|
||||||
|
F64x2Nearest,
|
||||||
|
F32x4Abs,
|
||||||
|
F32x4Neg,
|
||||||
|
F32x4Sqrt,
|
||||||
|
F32x4Add,
|
||||||
|
F32x4Sub,
|
||||||
|
F32x4Mul,
|
||||||
|
F32x4Div,
|
||||||
|
F32x4Min,
|
||||||
|
F32x4Max,
|
||||||
|
F32x4PMin,
|
||||||
|
F32x4PMax,
|
||||||
|
F64x2Abs,
|
||||||
|
F64x2Neg,
|
||||||
|
F64x2Sqrt,
|
||||||
|
F64x2Add,
|
||||||
|
F64x2Sub,
|
||||||
|
F64x2Mul,
|
||||||
|
F64x2Div,
|
||||||
|
F64x2Min,
|
||||||
|
F64x2Max,
|
||||||
|
F64x2PMin,
|
||||||
|
F64x2PMax,
|
||||||
|
I32x4TruncSatF32x4S,
|
||||||
|
I32x4TruncSatF32x4U,
|
||||||
|
F32x4ConvertI32x4S,
|
||||||
|
F32x4ConvertI32x4U,
|
||||||
|
I8x16Swizzle,
|
||||||
|
I8x16Shuffle,
|
||||||
|
V128Load8Splat,
|
||||||
|
V128Load16Splat,
|
||||||
|
V128Load32Splat,
|
||||||
|
V128Load32Zero,
|
||||||
|
V128Load64Splat,
|
||||||
|
V128Load64Zero,
|
||||||
|
I8x16NarrowI16x8S,
|
||||||
|
I8x16NarrowI16x8U,
|
||||||
|
I16x8NarrowI32x4S,
|
||||||
|
I16x8NarrowI32x4U,
|
||||||
|
I16x8ExtendLowI8x16S,
|
||||||
|
I16x8ExtendHighI8x16S,
|
||||||
|
I16x8ExtendLowI8x16U,
|
||||||
|
I16x8ExtendHighI8x16U,
|
||||||
|
I32x4ExtendLowI16x8S,
|
||||||
|
I32x4ExtendHighI16x8S,
|
||||||
|
I32x4ExtendLowI16x8U,
|
||||||
|
I32x4ExtendHighI16x8U,
|
||||||
|
I64x2ExtendLowI32x4S,
|
||||||
|
I64x2ExtendHighI32x4S,
|
||||||
|
I64x2ExtendLowI32x4U,
|
||||||
|
I64x2ExtendHighI32x4U,
|
||||||
|
I16x8ExtMulLowI8x16S,
|
||||||
|
I16x8ExtMulHighI8x16S,
|
||||||
|
I16x8ExtMulLowI8x16U,
|
||||||
|
I16x8ExtMulHighI8x16U,
|
||||||
|
I32x4ExtMulLowI16x8S,
|
||||||
|
I32x4ExtMulHighI16x8S,
|
||||||
|
I32x4ExtMulLowI16x8U,
|
||||||
|
I32x4ExtMulHighI16x8U,
|
||||||
|
I64x2ExtMulLowI32x4S,
|
||||||
|
I64x2ExtMulHighI32x4S,
|
||||||
|
I64x2ExtMulLowI32x4U,
|
||||||
|
I64x2ExtMulHighI32x4U,
|
||||||
|
V128Load8x8S,
|
||||||
|
V128Load8x8U,
|
||||||
|
V128Load16x4S,
|
||||||
|
V128Load16x4U,
|
||||||
|
V128Load32x2S,
|
||||||
|
V128Load32x2U,
|
||||||
|
V128Load8Lane,
|
||||||
|
V128Load16Lane,
|
||||||
|
V128Load32Lane,
|
||||||
|
V128Load64Lane,
|
||||||
|
V128Store8Lane,
|
||||||
|
V128Store16Lane,
|
||||||
|
V128Store32Lane,
|
||||||
|
V128Store64Lane,
|
||||||
|
I8x16RoundingAverageU,
|
||||||
|
I16x8RoundingAverageU,
|
||||||
|
I16x8Q15MulrSatS,
|
||||||
|
F32x4DemoteF64x2Zero,
|
||||||
|
F64x2PromoteLowF32x4,
|
||||||
|
F64x2ConvertLowI32x4S,
|
||||||
|
F64x2ConvertLowI32x4U,
|
||||||
|
I32x4TruncSatF64x2SZero,
|
||||||
|
I32x4TruncSatF64x2UZero,
|
||||||
|
} wasmer_parser_operator_t;
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
typedef struct wasi_config_t wasi_config_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
typedef struct wasi_env_t wasi_env_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct wasmer_cpu_features_t wasmer_cpu_features_t;
|
||||||
|
|
||||||
|
typedef struct wasmer_features_t wasmer_features_t;
|
||||||
|
|
||||||
|
typedef struct wasmer_metering_t wasmer_metering_t;
|
||||||
|
|
||||||
|
typedef struct wasmer_middleware_t wasmer_middleware_t;
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
typedef struct wasmer_named_extern_t wasmer_named_extern_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct wasmer_target_t wasmer_target_t;
|
||||||
|
|
||||||
|
typedef struct wasmer_triple_t wasmer_triple_t;
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
typedef struct wasmer_named_extern_vec_t {
|
||||||
|
uintptr_t size;
|
||||||
|
struct wasmer_named_extern_t **data;
|
||||||
|
} wasmer_named_extern_vec_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef uint64_t (*wasmer_metering_cost_function_t)(enum wasmer_parser_operator_t wasm_operator);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_arg(struct wasi_config_t *config, const char *arg);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_capture_stderr(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_capture_stdout(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_env(struct wasi_config_t *config, const char *key, const char *value);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_inherit_stderr(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_inherit_stdin(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_config_inherit_stdout(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
bool wasi_config_mapdir(struct wasi_config_t *config, const char *alias, const char *dir);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
struct wasi_config_t *wasi_config_new(const char *program_name);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
bool wasi_config_preopen_dir(struct wasi_config_t *config, const char *dir);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasi_env_delete(struct wasi_env_t *_state);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
struct wasi_env_t *wasi_env_new(struct wasi_config_t *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
intptr_t wasi_env_read_stderr(struct wasi_env_t *env, char *buffer, uintptr_t buffer_len);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
intptr_t wasi_env_read_stdout(struct wasi_env_t *env, char *buffer, uintptr_t buffer_len);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
bool wasi_get_imports(const wasm_store_t *store,
|
||||||
|
const wasm_module_t *module,
|
||||||
|
const struct wasi_env_t *wasi_env,
|
||||||
|
wasm_extern_vec_t *imports);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
wasm_func_t *wasi_get_start_function(wasm_instance_t *instance);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
bool wasi_get_unordered_imports(const wasm_store_t *store,
|
||||||
|
const wasm_module_t *module,
|
||||||
|
const struct wasi_env_t *wasi_env,
|
||||||
|
struct wasmer_named_extern_vec_t *imports);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
enum wasi_version_t wasi_get_wasi_version(const wasm_module_t *module);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void wasm_config_canonicalize_nans(wasm_config_t *config, bool enable);
|
||||||
|
|
||||||
|
void wasm_config_push_middleware(wasm_config_t *config, struct wasmer_middleware_t *middleware);
|
||||||
|
|
||||||
|
#if defined(WASMER_COMPILER_ENABLED)
|
||||||
|
void wasm_config_set_compiler(wasm_config_t *config, enum wasmer_compiler_t compiler);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void wasm_config_set_engine(wasm_config_t *config, enum wasmer_engine_t engine);
|
||||||
|
|
||||||
|
void wasm_config_set_features(wasm_config_t *config, struct wasmer_features_t *features);
|
||||||
|
|
||||||
|
void wasm_config_set_target(wasm_config_t *config, struct wasmer_target_t *target);
|
||||||
|
|
||||||
|
bool wasmer_cpu_features_add(struct wasmer_cpu_features_t *cpu_features,
|
||||||
|
const wasm_name_t *feature);
|
||||||
|
|
||||||
|
void wasmer_cpu_features_delete(struct wasmer_cpu_features_t *_cpu_features);
|
||||||
|
|
||||||
|
struct wasmer_cpu_features_t *wasmer_cpu_features_new(void);
|
||||||
|
|
||||||
|
bool wasmer_features_bulk_memory(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
void wasmer_features_delete(struct wasmer_features_t *_features);
|
||||||
|
|
||||||
|
bool wasmer_features_memory64(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_module_linking(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_multi_memory(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_multi_value(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
struct wasmer_features_t *wasmer_features_new(void);
|
||||||
|
|
||||||
|
bool wasmer_features_reference_types(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_simd(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_tail_call(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_features_threads(struct wasmer_features_t *features, bool enable);
|
||||||
|
|
||||||
|
bool wasmer_is_compiler_available(enum wasmer_compiler_t compiler);
|
||||||
|
|
||||||
|
bool wasmer_is_engine_available(enum wasmer_engine_t engine);
|
||||||
|
|
||||||
|
bool wasmer_is_headless(void);
|
||||||
|
|
||||||
|
int wasmer_last_error_length(void);
|
||||||
|
|
||||||
|
int wasmer_last_error_message(char *buffer, int length);
|
||||||
|
|
||||||
|
struct wasmer_middleware_t *wasmer_metering_as_middleware(struct wasmer_metering_t *metering);
|
||||||
|
|
||||||
|
void wasmer_metering_delete(struct wasmer_metering_t *_metering);
|
||||||
|
|
||||||
|
uint64_t wasmer_metering_get_remaining_points(const wasm_instance_t *instance);
|
||||||
|
|
||||||
|
struct wasmer_metering_t *wasmer_metering_new(uint64_t initial_limit,
|
||||||
|
wasmer_metering_cost_function_t cost_function);
|
||||||
|
|
||||||
|
bool wasmer_metering_points_are_exhausted(const wasm_instance_t *instance);
|
||||||
|
|
||||||
|
void wasmer_metering_set_remaining_points(const wasm_instance_t *instance, uint64_t new_limit);
|
||||||
|
|
||||||
|
void wasmer_module_name(const wasm_module_t *module, wasm_name_t *out);
|
||||||
|
|
||||||
|
bool wasmer_module_set_name(wasm_module_t *module, const wasm_name_t *name);
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
const wasm_name_t *wasmer_named_extern_module(const struct wasmer_named_extern_t *named_extern);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
const wasm_name_t *wasmer_named_extern_name(const struct wasmer_named_extern_t *named_extern);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
const wasm_extern_t *wasmer_named_extern_unwrap(const struct wasmer_named_extern_t *named_extern);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasmer_named_extern_vec_copy(struct wasmer_named_extern_vec_t *out_ptr,
|
||||||
|
const struct wasmer_named_extern_vec_t *in_ptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasmer_named_extern_vec_delete(struct wasmer_named_extern_vec_t *ptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasmer_named_extern_vec_new(struct wasmer_named_extern_vec_t *out,
|
||||||
|
uintptr_t length,
|
||||||
|
struct wasmer_named_extern_t *const *init);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasmer_named_extern_vec_new_empty(struct wasmer_named_extern_vec_t *out);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WASMER_WASI_ENABLED)
|
||||||
|
void wasmer_named_extern_vec_new_uninitialized(struct wasmer_named_extern_vec_t *out,
|
||||||
|
uintptr_t length);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void wasmer_target_delete(struct wasmer_target_t *_target);
|
||||||
|
|
||||||
|
struct wasmer_target_t *wasmer_target_new(struct wasmer_triple_t *triple,
|
||||||
|
struct wasmer_cpu_features_t *cpu_features);
|
||||||
|
|
||||||
|
void wasmer_triple_delete(struct wasmer_triple_t *_triple);
|
||||||
|
|
||||||
|
struct wasmer_triple_t *wasmer_triple_new(const wasm_name_t *triple);
|
||||||
|
|
||||||
|
struct wasmer_triple_t *wasmer_triple_new_from_host(void);
|
||||||
|
|
||||||
|
const char *wasmer_version(void);
|
||||||
|
|
||||||
|
uint8_t wasmer_version_major(void);
|
||||||
|
|
||||||
|
uint8_t wasmer_version_minor(void);
|
||||||
|
|
||||||
|
uint8_t wasmer_version_patch(void);
|
||||||
|
|
||||||
|
const char *wasmer_version_pre(void);
|
||||||
|
|
||||||
|
void wat2wasm(const wasm_byte_vec_t *wat, wasm_byte_vec_t *out);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
#endif /* WASMER_H */
|
||||||
@@ -1,896 +1,3 @@
|
|||||||
// The Wasmer C/C++ header file compatible with the [`wasm-c-api`]
|
#include "wasmer.h"
|
||||||
// standard API, as `wasm.h` (included here).
|
|
||||||
//
|
|
||||||
// This file is automatically generated by `lib/c-api/build.rs` of the
|
|
||||||
// [`wasmer-c-api`] Rust crate.
|
|
||||||
//
|
|
||||||
// # Stability
|
|
||||||
//
|
|
||||||
// The [`wasm-c-api`] standard API is a _living_ standard. There is no
|
|
||||||
// commitment for stability yet. We (Wasmer) will try our best to keep
|
|
||||||
// backward compatibility as much as possible. Nonetheless, some
|
|
||||||
// necessary API aren't yet standardized, and as such, we provide a
|
|
||||||
// custom API, e.g. `wasi_*` types and functions.
|
|
||||||
//
|
|
||||||
// The documentation makes it clear whether a function is unstable.
|
|
||||||
//
|
|
||||||
// When a type or a function will be deprecated, it will be marked as
|
|
||||||
// such with the appropriated compiler warning, and will be removed at
|
|
||||||
// the next release round.
|
|
||||||
//
|
|
||||||
// # Documentation
|
|
||||||
//
|
|
||||||
// At the time of writing, the [`wasm-c-api`] standard has no
|
|
||||||
// documentation. This file also does not include inline
|
|
||||||
// documentation. However, we have made (and we continue to make) an
|
|
||||||
// important effort to document everything. [See the documentation
|
|
||||||
// online][documentation]. Please refer to this page for the real
|
|
||||||
// canonical documentation. It also contains numerous examples.
|
|
||||||
//
|
|
||||||
// To generate the documentation locally, run `cargo doc --open` from
|
|
||||||
// within the [`wasmer-c-api`] Rust crate.
|
|
||||||
//
|
|
||||||
// [`wasm-c-api`]: https://github.com/WebAssembly/wasm-c-api
|
|
||||||
// [`wasmer-c-api`]: https://github.com/wasmerio/wasmer/tree/master/lib/c-api
|
|
||||||
// [documentation]: https://wasmerio.github.io/wasmer/crates/wasmer_c_api/
|
|
||||||
|
|
||||||
#if !defined(WASMER_WASM_H_PRELUDE)
|
#pragma message "The wasmer_wasm.h header file is being deprecated, please use wasmer.h instead."
|
||||||
|
|
||||||
#define WASMER_WASM_H_PRELUDE
|
|
||||||
|
|
||||||
// Define the `ARCH_X86_X64` constant.
|
|
||||||
#if defined(MSVC) && defined(_M_AMD64)
|
|
||||||
# define ARCH_X86_64
|
|
||||||
#elif (defined(GCC) || defined(__GNUC__) || defined(__clang__)) && defined(__x86_64__)
|
|
||||||
# define ARCH_X86_64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Compatibility with non-Clang compilers.
|
|
||||||
#if !defined(__has_attribute)
|
|
||||||
# define __has_attribute(x) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Compatibility with non-Clang compilers.
|
|
||||||
#if !defined(__has_declspec_attribute)
|
|
||||||
# define __has_declspec_attribute(x) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Define the `DEPRECATED` macro.
|
|
||||||
#if defined(GCC) || defined(__GNUC__) || __has_attribute(deprecated)
|
|
||||||
# define DEPRECATED(message) __attribute__((deprecated(message)))
|
|
||||||
#elif defined(MSVC) || __has_declspec_attribute(deprecated)
|
|
||||||
# define DEPRECATED(message) __declspec(deprecated(message))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The `universal` feature has been enabled for this build.
|
|
||||||
#define WASMER_UNIVERSAL_ENABLED
|
|
||||||
|
|
||||||
// The `compiler` feature has been enabled for this build.
|
|
||||||
#define WASMER_COMPILER_ENABLED
|
|
||||||
|
|
||||||
// The `wasi` feature has been enabled for this build.
|
|
||||||
#define WASMER_WASI_ENABLED
|
|
||||||
|
|
||||||
// The `middlewares` feature has been enabled for this build.
|
|
||||||
#define WASMER_MIDDLEWARES_ENABLED
|
|
||||||
|
|
||||||
// This file corresponds to the following Wasmer version.
|
|
||||||
#define WASMER_VERSION "1.0.2"
|
|
||||||
#define WASMER_VERSION_MAJOR 1
|
|
||||||
#define WASMER_VERSION_MINOR 0
|
|
||||||
#define WASMER_VERSION_PATCH 2
|
|
||||||
#define WASMER_VERSION_PRE ""
|
|
||||||
|
|
||||||
#endif // WASMER_WASM_H_PRELUDE
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// OK, here we go. The code below is automatically generated.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef WASMER_WASM_H
|
|
||||||
#define WASMER_WASM_H
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include "wasm.h"
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
typedef enum wasi_version_t {
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
INVALID_VERSION = -1,
|
|
||||||
#endif
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
LATEST = 0,
|
|
||||||
#endif
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
SNAPSHOT0 = 1,
|
|
||||||
#endif
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
SNAPSHOT1 = 2,
|
|
||||||
#endif
|
|
||||||
} wasi_version_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_COMPILER_ENABLED)
|
|
||||||
typedef enum wasmer_compiler_t {
|
|
||||||
CRANELIFT = 0,
|
|
||||||
LLVM = 1,
|
|
||||||
SINGLEPASS = 2,
|
|
||||||
} wasmer_compiler_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum wasmer_engine_t {
|
|
||||||
UNIVERSAL = 0,
|
|
||||||
DYLIB = 1,
|
|
||||||
STATICLIB = 2,
|
|
||||||
} wasmer_engine_t;
|
|
||||||
|
|
||||||
typedef enum wasmer_parser_operator_t {
|
|
||||||
Unreachable,
|
|
||||||
Nop,
|
|
||||||
Block,
|
|
||||||
Loop,
|
|
||||||
If,
|
|
||||||
Else,
|
|
||||||
Try,
|
|
||||||
Catch,
|
|
||||||
CatchAll,
|
|
||||||
Delegate,
|
|
||||||
Throw,
|
|
||||||
Rethrow,
|
|
||||||
Unwind,
|
|
||||||
End,
|
|
||||||
Br,
|
|
||||||
BrIf,
|
|
||||||
BrTable,
|
|
||||||
Return,
|
|
||||||
Call,
|
|
||||||
CallIndirect,
|
|
||||||
ReturnCall,
|
|
||||||
ReturnCallIndirect,
|
|
||||||
Drop,
|
|
||||||
Select,
|
|
||||||
TypedSelect,
|
|
||||||
LocalGet,
|
|
||||||
LocalSet,
|
|
||||||
LocalTee,
|
|
||||||
GlobalGet,
|
|
||||||
GlobalSet,
|
|
||||||
I32Load,
|
|
||||||
I64Load,
|
|
||||||
F32Load,
|
|
||||||
F64Load,
|
|
||||||
I32Load8S,
|
|
||||||
I32Load8U,
|
|
||||||
I32Load16S,
|
|
||||||
I32Load16U,
|
|
||||||
I64Load8S,
|
|
||||||
I64Load8U,
|
|
||||||
I64Load16S,
|
|
||||||
I64Load16U,
|
|
||||||
I64Load32S,
|
|
||||||
I64Load32U,
|
|
||||||
I32Store,
|
|
||||||
I64Store,
|
|
||||||
F32Store,
|
|
||||||
F64Store,
|
|
||||||
I32Store8,
|
|
||||||
I32Store16,
|
|
||||||
I64Store8,
|
|
||||||
I64Store16,
|
|
||||||
I64Store32,
|
|
||||||
MemorySize,
|
|
||||||
MemoryGrow,
|
|
||||||
I32Const,
|
|
||||||
I64Const,
|
|
||||||
F32Const,
|
|
||||||
F64Const,
|
|
||||||
RefNull,
|
|
||||||
RefIsNull,
|
|
||||||
RefFunc,
|
|
||||||
I32Eqz,
|
|
||||||
I32Eq,
|
|
||||||
I32Ne,
|
|
||||||
I32LtS,
|
|
||||||
I32LtU,
|
|
||||||
I32GtS,
|
|
||||||
I32GtU,
|
|
||||||
I32LeS,
|
|
||||||
I32LeU,
|
|
||||||
I32GeS,
|
|
||||||
I32GeU,
|
|
||||||
I64Eqz,
|
|
||||||
I64Eq,
|
|
||||||
I64Ne,
|
|
||||||
I64LtS,
|
|
||||||
I64LtU,
|
|
||||||
I64GtS,
|
|
||||||
I64GtU,
|
|
||||||
I64LeS,
|
|
||||||
I64LeU,
|
|
||||||
I64GeS,
|
|
||||||
I64GeU,
|
|
||||||
F32Eq,
|
|
||||||
F32Ne,
|
|
||||||
F32Lt,
|
|
||||||
F32Gt,
|
|
||||||
F32Le,
|
|
||||||
F32Ge,
|
|
||||||
F64Eq,
|
|
||||||
F64Ne,
|
|
||||||
F64Lt,
|
|
||||||
F64Gt,
|
|
||||||
F64Le,
|
|
||||||
F64Ge,
|
|
||||||
I32Clz,
|
|
||||||
I32Ctz,
|
|
||||||
I32Popcnt,
|
|
||||||
I32Add,
|
|
||||||
I32Sub,
|
|
||||||
I32Mul,
|
|
||||||
I32DivS,
|
|
||||||
I32DivU,
|
|
||||||
I32RemS,
|
|
||||||
I32RemU,
|
|
||||||
I32And,
|
|
||||||
I32Or,
|
|
||||||
I32Xor,
|
|
||||||
I32Shl,
|
|
||||||
I32ShrS,
|
|
||||||
I32ShrU,
|
|
||||||
I32Rotl,
|
|
||||||
I32Rotr,
|
|
||||||
I64Clz,
|
|
||||||
I64Ctz,
|
|
||||||
I64Popcnt,
|
|
||||||
I64Add,
|
|
||||||
I64Sub,
|
|
||||||
I64Mul,
|
|
||||||
I64DivS,
|
|
||||||
I64DivU,
|
|
||||||
I64RemS,
|
|
||||||
I64RemU,
|
|
||||||
I64And,
|
|
||||||
I64Or,
|
|
||||||
I64Xor,
|
|
||||||
I64Shl,
|
|
||||||
I64ShrS,
|
|
||||||
I64ShrU,
|
|
||||||
I64Rotl,
|
|
||||||
I64Rotr,
|
|
||||||
F32Abs,
|
|
||||||
F32Neg,
|
|
||||||
F32Ceil,
|
|
||||||
F32Floor,
|
|
||||||
F32Trunc,
|
|
||||||
F32Nearest,
|
|
||||||
F32Sqrt,
|
|
||||||
F32Add,
|
|
||||||
F32Sub,
|
|
||||||
F32Mul,
|
|
||||||
F32Div,
|
|
||||||
F32Min,
|
|
||||||
F32Max,
|
|
||||||
F32Copysign,
|
|
||||||
F64Abs,
|
|
||||||
F64Neg,
|
|
||||||
F64Ceil,
|
|
||||||
F64Floor,
|
|
||||||
F64Trunc,
|
|
||||||
F64Nearest,
|
|
||||||
F64Sqrt,
|
|
||||||
F64Add,
|
|
||||||
F64Sub,
|
|
||||||
F64Mul,
|
|
||||||
F64Div,
|
|
||||||
F64Min,
|
|
||||||
F64Max,
|
|
||||||
F64Copysign,
|
|
||||||
I32WrapI64,
|
|
||||||
I32TruncF32S,
|
|
||||||
I32TruncF32U,
|
|
||||||
I32TruncF64S,
|
|
||||||
I32TruncF64U,
|
|
||||||
I64ExtendI32S,
|
|
||||||
I64ExtendI32U,
|
|
||||||
I64TruncF32S,
|
|
||||||
I64TruncF32U,
|
|
||||||
I64TruncF64S,
|
|
||||||
I64TruncF64U,
|
|
||||||
F32ConvertI32S,
|
|
||||||
F32ConvertI32U,
|
|
||||||
F32ConvertI64S,
|
|
||||||
F32ConvertI64U,
|
|
||||||
F32DemoteF64,
|
|
||||||
F64ConvertI32S,
|
|
||||||
F64ConvertI32U,
|
|
||||||
F64ConvertI64S,
|
|
||||||
F64ConvertI64U,
|
|
||||||
F64PromoteF32,
|
|
||||||
I32ReinterpretF32,
|
|
||||||
I64ReinterpretF64,
|
|
||||||
F32ReinterpretI32,
|
|
||||||
F64ReinterpretI64,
|
|
||||||
I32Extend8S,
|
|
||||||
I32Extend16S,
|
|
||||||
I64Extend8S,
|
|
||||||
I64Extend16S,
|
|
||||||
I64Extend32S,
|
|
||||||
I32TruncSatF32S,
|
|
||||||
I32TruncSatF32U,
|
|
||||||
I32TruncSatF64S,
|
|
||||||
I32TruncSatF64U,
|
|
||||||
I64TruncSatF32S,
|
|
||||||
I64TruncSatF32U,
|
|
||||||
I64TruncSatF64S,
|
|
||||||
I64TruncSatF64U,
|
|
||||||
MemoryInit,
|
|
||||||
DataDrop,
|
|
||||||
MemoryCopy,
|
|
||||||
MemoryFill,
|
|
||||||
TableInit,
|
|
||||||
ElemDrop,
|
|
||||||
TableCopy,
|
|
||||||
TableFill,
|
|
||||||
TableGet,
|
|
||||||
TableSet,
|
|
||||||
TableGrow,
|
|
||||||
TableSize,
|
|
||||||
MemoryAtomicNotify,
|
|
||||||
MemoryAtomicWait32,
|
|
||||||
MemoryAtomicWait64,
|
|
||||||
AtomicFence,
|
|
||||||
I32AtomicLoad,
|
|
||||||
I64AtomicLoad,
|
|
||||||
I32AtomicLoad8U,
|
|
||||||
I32AtomicLoad16U,
|
|
||||||
I64AtomicLoad8U,
|
|
||||||
I64AtomicLoad16U,
|
|
||||||
I64AtomicLoad32U,
|
|
||||||
I32AtomicStore,
|
|
||||||
I64AtomicStore,
|
|
||||||
I32AtomicStore8,
|
|
||||||
I32AtomicStore16,
|
|
||||||
I64AtomicStore8,
|
|
||||||
I64AtomicStore16,
|
|
||||||
I64AtomicStore32,
|
|
||||||
I32AtomicRmwAdd,
|
|
||||||
I64AtomicRmwAdd,
|
|
||||||
I32AtomicRmw8AddU,
|
|
||||||
I32AtomicRmw16AddU,
|
|
||||||
I64AtomicRmw8AddU,
|
|
||||||
I64AtomicRmw16AddU,
|
|
||||||
I64AtomicRmw32AddU,
|
|
||||||
I32AtomicRmwSub,
|
|
||||||
I64AtomicRmwSub,
|
|
||||||
I32AtomicRmw8SubU,
|
|
||||||
I32AtomicRmw16SubU,
|
|
||||||
I64AtomicRmw8SubU,
|
|
||||||
I64AtomicRmw16SubU,
|
|
||||||
I64AtomicRmw32SubU,
|
|
||||||
I32AtomicRmwAnd,
|
|
||||||
I64AtomicRmwAnd,
|
|
||||||
I32AtomicRmw8AndU,
|
|
||||||
I32AtomicRmw16AndU,
|
|
||||||
I64AtomicRmw8AndU,
|
|
||||||
I64AtomicRmw16AndU,
|
|
||||||
I64AtomicRmw32AndU,
|
|
||||||
I32AtomicRmwOr,
|
|
||||||
I64AtomicRmwOr,
|
|
||||||
I32AtomicRmw8OrU,
|
|
||||||
I32AtomicRmw16OrU,
|
|
||||||
I64AtomicRmw8OrU,
|
|
||||||
I64AtomicRmw16OrU,
|
|
||||||
I64AtomicRmw32OrU,
|
|
||||||
I32AtomicRmwXor,
|
|
||||||
I64AtomicRmwXor,
|
|
||||||
I32AtomicRmw8XorU,
|
|
||||||
I32AtomicRmw16XorU,
|
|
||||||
I64AtomicRmw8XorU,
|
|
||||||
I64AtomicRmw16XorU,
|
|
||||||
I64AtomicRmw32XorU,
|
|
||||||
I32AtomicRmwXchg,
|
|
||||||
I64AtomicRmwXchg,
|
|
||||||
I32AtomicRmw8XchgU,
|
|
||||||
I32AtomicRmw16XchgU,
|
|
||||||
I64AtomicRmw8XchgU,
|
|
||||||
I64AtomicRmw16XchgU,
|
|
||||||
I64AtomicRmw32XchgU,
|
|
||||||
I32AtomicRmwCmpxchg,
|
|
||||||
I64AtomicRmwCmpxchg,
|
|
||||||
I32AtomicRmw8CmpxchgU,
|
|
||||||
I32AtomicRmw16CmpxchgU,
|
|
||||||
I64AtomicRmw8CmpxchgU,
|
|
||||||
I64AtomicRmw16CmpxchgU,
|
|
||||||
I64AtomicRmw32CmpxchgU,
|
|
||||||
V128Load,
|
|
||||||
V128Store,
|
|
||||||
V128Const,
|
|
||||||
I8x16Splat,
|
|
||||||
I8x16ExtractLaneS,
|
|
||||||
I8x16ExtractLaneU,
|
|
||||||
I8x16ReplaceLane,
|
|
||||||
I16x8Splat,
|
|
||||||
I16x8ExtractLaneS,
|
|
||||||
I16x8ExtractLaneU,
|
|
||||||
I16x8ReplaceLane,
|
|
||||||
I32x4Splat,
|
|
||||||
I32x4ExtractLane,
|
|
||||||
I32x4ReplaceLane,
|
|
||||||
I64x2Splat,
|
|
||||||
I64x2ExtractLane,
|
|
||||||
I64x2ReplaceLane,
|
|
||||||
F32x4Splat,
|
|
||||||
F32x4ExtractLane,
|
|
||||||
F32x4ReplaceLane,
|
|
||||||
F64x2Splat,
|
|
||||||
F64x2ExtractLane,
|
|
||||||
F64x2ReplaceLane,
|
|
||||||
I8x16Eq,
|
|
||||||
I8x16Ne,
|
|
||||||
I8x16LtS,
|
|
||||||
I8x16LtU,
|
|
||||||
I8x16GtS,
|
|
||||||
I8x16GtU,
|
|
||||||
I8x16LeS,
|
|
||||||
I8x16LeU,
|
|
||||||
I8x16GeS,
|
|
||||||
I8x16GeU,
|
|
||||||
I16x8Eq,
|
|
||||||
I16x8Ne,
|
|
||||||
I16x8LtS,
|
|
||||||
I16x8LtU,
|
|
||||||
I16x8GtS,
|
|
||||||
I16x8GtU,
|
|
||||||
I16x8LeS,
|
|
||||||
I16x8LeU,
|
|
||||||
I16x8GeS,
|
|
||||||
I16x8GeU,
|
|
||||||
I32x4Eq,
|
|
||||||
I32x4Ne,
|
|
||||||
I32x4LtS,
|
|
||||||
I32x4LtU,
|
|
||||||
I32x4GtS,
|
|
||||||
I32x4GtU,
|
|
||||||
I32x4LeS,
|
|
||||||
I32x4LeU,
|
|
||||||
I32x4GeS,
|
|
||||||
I32x4GeU,
|
|
||||||
I64x2Eq,
|
|
||||||
I64x2Ne,
|
|
||||||
I64x2LtS,
|
|
||||||
I64x2GtS,
|
|
||||||
I64x2LeS,
|
|
||||||
I64x2GeS,
|
|
||||||
F32x4Eq,
|
|
||||||
F32x4Ne,
|
|
||||||
F32x4Lt,
|
|
||||||
F32x4Gt,
|
|
||||||
F32x4Le,
|
|
||||||
F32x4Ge,
|
|
||||||
F64x2Eq,
|
|
||||||
F64x2Ne,
|
|
||||||
F64x2Lt,
|
|
||||||
F64x2Gt,
|
|
||||||
F64x2Le,
|
|
||||||
F64x2Ge,
|
|
||||||
V128Not,
|
|
||||||
V128And,
|
|
||||||
V128AndNot,
|
|
||||||
V128Or,
|
|
||||||
V128Xor,
|
|
||||||
V128Bitselect,
|
|
||||||
V128AnyTrue,
|
|
||||||
I8x16Abs,
|
|
||||||
I8x16Neg,
|
|
||||||
I8x16AllTrue,
|
|
||||||
I8x16Bitmask,
|
|
||||||
I8x16Shl,
|
|
||||||
I8x16ShrS,
|
|
||||||
I8x16ShrU,
|
|
||||||
I8x16Add,
|
|
||||||
I8x16AddSatS,
|
|
||||||
I8x16AddSatU,
|
|
||||||
I8x16Sub,
|
|
||||||
I8x16SubSatS,
|
|
||||||
I8x16SubSatU,
|
|
||||||
I8x16MinS,
|
|
||||||
I8x16MinU,
|
|
||||||
I8x16MaxS,
|
|
||||||
I8x16MaxU,
|
|
||||||
I8x16Popcnt,
|
|
||||||
I16x8Abs,
|
|
||||||
I16x8Neg,
|
|
||||||
I16x8AllTrue,
|
|
||||||
I16x8Bitmask,
|
|
||||||
I16x8Shl,
|
|
||||||
I16x8ShrS,
|
|
||||||
I16x8ShrU,
|
|
||||||
I16x8Add,
|
|
||||||
I16x8AddSatS,
|
|
||||||
I16x8AddSatU,
|
|
||||||
I16x8Sub,
|
|
||||||
I16x8SubSatS,
|
|
||||||
I16x8SubSatU,
|
|
||||||
I16x8Mul,
|
|
||||||
I16x8MinS,
|
|
||||||
I16x8MinU,
|
|
||||||
I16x8MaxS,
|
|
||||||
I16x8MaxU,
|
|
||||||
I16x8ExtAddPairwiseI8x16S,
|
|
||||||
I16x8ExtAddPairwiseI8x16U,
|
|
||||||
I32x4Abs,
|
|
||||||
I32x4Neg,
|
|
||||||
I32x4AllTrue,
|
|
||||||
I32x4Bitmask,
|
|
||||||
I32x4Shl,
|
|
||||||
I32x4ShrS,
|
|
||||||
I32x4ShrU,
|
|
||||||
I32x4Add,
|
|
||||||
I32x4Sub,
|
|
||||||
I32x4Mul,
|
|
||||||
I32x4MinS,
|
|
||||||
I32x4MinU,
|
|
||||||
I32x4MaxS,
|
|
||||||
I32x4MaxU,
|
|
||||||
I32x4DotI16x8S,
|
|
||||||
I32x4ExtAddPairwiseI16x8S,
|
|
||||||
I32x4ExtAddPairwiseI16x8U,
|
|
||||||
I64x2Abs,
|
|
||||||
I64x2Neg,
|
|
||||||
I64x2AllTrue,
|
|
||||||
I64x2Bitmask,
|
|
||||||
I64x2Shl,
|
|
||||||
I64x2ShrS,
|
|
||||||
I64x2ShrU,
|
|
||||||
I64x2Add,
|
|
||||||
I64x2Sub,
|
|
||||||
I64x2Mul,
|
|
||||||
F32x4Ceil,
|
|
||||||
F32x4Floor,
|
|
||||||
F32x4Trunc,
|
|
||||||
F32x4Nearest,
|
|
||||||
F64x2Ceil,
|
|
||||||
F64x2Floor,
|
|
||||||
F64x2Trunc,
|
|
||||||
F64x2Nearest,
|
|
||||||
F32x4Abs,
|
|
||||||
F32x4Neg,
|
|
||||||
F32x4Sqrt,
|
|
||||||
F32x4Add,
|
|
||||||
F32x4Sub,
|
|
||||||
F32x4Mul,
|
|
||||||
F32x4Div,
|
|
||||||
F32x4Min,
|
|
||||||
F32x4Max,
|
|
||||||
F32x4PMin,
|
|
||||||
F32x4PMax,
|
|
||||||
F64x2Abs,
|
|
||||||
F64x2Neg,
|
|
||||||
F64x2Sqrt,
|
|
||||||
F64x2Add,
|
|
||||||
F64x2Sub,
|
|
||||||
F64x2Mul,
|
|
||||||
F64x2Div,
|
|
||||||
F64x2Min,
|
|
||||||
F64x2Max,
|
|
||||||
F64x2PMin,
|
|
||||||
F64x2PMax,
|
|
||||||
I32x4TruncSatF32x4S,
|
|
||||||
I32x4TruncSatF32x4U,
|
|
||||||
F32x4ConvertI32x4S,
|
|
||||||
F32x4ConvertI32x4U,
|
|
||||||
I8x16Swizzle,
|
|
||||||
I8x16Shuffle,
|
|
||||||
V128Load8Splat,
|
|
||||||
V128Load16Splat,
|
|
||||||
V128Load32Splat,
|
|
||||||
V128Load32Zero,
|
|
||||||
V128Load64Splat,
|
|
||||||
V128Load64Zero,
|
|
||||||
I8x16NarrowI16x8S,
|
|
||||||
I8x16NarrowI16x8U,
|
|
||||||
I16x8NarrowI32x4S,
|
|
||||||
I16x8NarrowI32x4U,
|
|
||||||
I16x8ExtendLowI8x16S,
|
|
||||||
I16x8ExtendHighI8x16S,
|
|
||||||
I16x8ExtendLowI8x16U,
|
|
||||||
I16x8ExtendHighI8x16U,
|
|
||||||
I32x4ExtendLowI16x8S,
|
|
||||||
I32x4ExtendHighI16x8S,
|
|
||||||
I32x4ExtendLowI16x8U,
|
|
||||||
I32x4ExtendHighI16x8U,
|
|
||||||
I64x2ExtendLowI32x4S,
|
|
||||||
I64x2ExtendHighI32x4S,
|
|
||||||
I64x2ExtendLowI32x4U,
|
|
||||||
I64x2ExtendHighI32x4U,
|
|
||||||
I16x8ExtMulLowI8x16S,
|
|
||||||
I16x8ExtMulHighI8x16S,
|
|
||||||
I16x8ExtMulLowI8x16U,
|
|
||||||
I16x8ExtMulHighI8x16U,
|
|
||||||
I32x4ExtMulLowI16x8S,
|
|
||||||
I32x4ExtMulHighI16x8S,
|
|
||||||
I32x4ExtMulLowI16x8U,
|
|
||||||
I32x4ExtMulHighI16x8U,
|
|
||||||
I64x2ExtMulLowI32x4S,
|
|
||||||
I64x2ExtMulHighI32x4S,
|
|
||||||
I64x2ExtMulLowI32x4U,
|
|
||||||
I64x2ExtMulHighI32x4U,
|
|
||||||
V128Load8x8S,
|
|
||||||
V128Load8x8U,
|
|
||||||
V128Load16x4S,
|
|
||||||
V128Load16x4U,
|
|
||||||
V128Load32x2S,
|
|
||||||
V128Load32x2U,
|
|
||||||
V128Load8Lane,
|
|
||||||
V128Load16Lane,
|
|
||||||
V128Load32Lane,
|
|
||||||
V128Load64Lane,
|
|
||||||
V128Store8Lane,
|
|
||||||
V128Store16Lane,
|
|
||||||
V128Store32Lane,
|
|
||||||
V128Store64Lane,
|
|
||||||
I8x16RoundingAverageU,
|
|
||||||
I16x8RoundingAverageU,
|
|
||||||
I16x8Q15MulrSatS,
|
|
||||||
F32x4DemoteF64x2Zero,
|
|
||||||
F64x2PromoteLowF32x4,
|
|
||||||
F64x2ConvertLowI32x4S,
|
|
||||||
F64x2ConvertLowI32x4U,
|
|
||||||
I32x4TruncSatF64x2SZero,
|
|
||||||
I32x4TruncSatF64x2UZero,
|
|
||||||
} wasmer_parser_operator_t;
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
typedef struct wasi_config_t wasi_config_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
typedef struct wasi_env_t wasi_env_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct wasmer_cpu_features_t wasmer_cpu_features_t;
|
|
||||||
|
|
||||||
typedef struct wasmer_features_t wasmer_features_t;
|
|
||||||
|
|
||||||
typedef struct wasmer_metering_t wasmer_metering_t;
|
|
||||||
|
|
||||||
typedef struct wasmer_middleware_t wasmer_middleware_t;
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
typedef struct wasmer_named_extern_t wasmer_named_extern_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct wasmer_target_t wasmer_target_t;
|
|
||||||
|
|
||||||
typedef struct wasmer_triple_t wasmer_triple_t;
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
typedef struct wasmer_named_extern_vec_t {
|
|
||||||
uintptr_t size;
|
|
||||||
struct wasmer_named_extern_t **data;
|
|
||||||
} wasmer_named_extern_vec_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef uint64_t (*wasmer_metering_cost_function_t)(enum wasmer_parser_operator_t wasm_operator);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif // __cplusplus
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_arg(struct wasi_config_t *config, const char *arg);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_capture_stderr(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_capture_stdout(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_env(struct wasi_config_t *config, const char *key, const char *value);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_inherit_stderr(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_inherit_stdin(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_config_inherit_stdout(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
bool wasi_config_mapdir(struct wasi_config_t *config, const char *alias, const char *dir);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
struct wasi_config_t *wasi_config_new(const char *program_name);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
bool wasi_config_preopen_dir(struct wasi_config_t *config, const char *dir);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasi_env_delete(struct wasi_env_t *_state);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
struct wasi_env_t *wasi_env_new(struct wasi_config_t *config);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
intptr_t wasi_env_read_stderr(struct wasi_env_t *env, char *buffer, uintptr_t buffer_len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
intptr_t wasi_env_read_stdout(struct wasi_env_t *env, char *buffer, uintptr_t buffer_len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
bool wasi_get_imports(const wasm_store_t *store,
|
|
||||||
const wasm_module_t *module,
|
|
||||||
const struct wasi_env_t *wasi_env,
|
|
||||||
wasm_extern_vec_t *imports);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
wasm_func_t *wasi_get_start_function(wasm_instance_t *instance);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
bool wasi_get_unordered_imports(const wasm_store_t *store,
|
|
||||||
const wasm_module_t *module,
|
|
||||||
const struct wasi_env_t *wasi_env,
|
|
||||||
struct wasmer_named_extern_vec_t *imports);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
enum wasi_version_t wasi_get_wasi_version(const wasm_module_t *module);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void wasm_config_canonicalize_nans(wasm_config_t *config, bool enable);
|
|
||||||
|
|
||||||
void wasm_config_push_middleware(wasm_config_t *config, struct wasmer_middleware_t *middleware);
|
|
||||||
|
|
||||||
#if defined(WASMER_COMPILER_ENABLED)
|
|
||||||
void wasm_config_set_compiler(wasm_config_t *config, enum wasmer_compiler_t compiler);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void wasm_config_set_engine(wasm_config_t *config, enum wasmer_engine_t engine);
|
|
||||||
|
|
||||||
void wasm_config_set_features(wasm_config_t *config, struct wasmer_features_t *features);
|
|
||||||
|
|
||||||
void wasm_config_set_target(wasm_config_t *config, struct wasmer_target_t *target);
|
|
||||||
|
|
||||||
bool wasmer_cpu_features_add(struct wasmer_cpu_features_t *cpu_features,
|
|
||||||
const wasm_name_t *feature);
|
|
||||||
|
|
||||||
void wasmer_cpu_features_delete(struct wasmer_cpu_features_t *_cpu_features);
|
|
||||||
|
|
||||||
struct wasmer_cpu_features_t *wasmer_cpu_features_new(void);
|
|
||||||
|
|
||||||
bool wasmer_features_bulk_memory(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
void wasmer_features_delete(struct wasmer_features_t *_features);
|
|
||||||
|
|
||||||
bool wasmer_features_memory64(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_module_linking(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_multi_memory(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_multi_value(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
struct wasmer_features_t *wasmer_features_new(void);
|
|
||||||
|
|
||||||
bool wasmer_features_reference_types(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_simd(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_tail_call(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_features_threads(struct wasmer_features_t *features, bool enable);
|
|
||||||
|
|
||||||
bool wasmer_is_compiler_available(enum wasmer_compiler_t compiler);
|
|
||||||
|
|
||||||
bool wasmer_is_engine_available(enum wasmer_engine_t engine);
|
|
||||||
|
|
||||||
bool wasmer_is_headless(void);
|
|
||||||
|
|
||||||
int wasmer_last_error_length(void);
|
|
||||||
|
|
||||||
int wasmer_last_error_message(char *buffer, int length);
|
|
||||||
|
|
||||||
struct wasmer_middleware_t *wasmer_metering_as_middleware(struct wasmer_metering_t *metering);
|
|
||||||
|
|
||||||
void wasmer_metering_delete(struct wasmer_metering_t *_metering);
|
|
||||||
|
|
||||||
uint64_t wasmer_metering_get_remaining_points(const wasm_instance_t *instance);
|
|
||||||
|
|
||||||
struct wasmer_metering_t *wasmer_metering_new(uint64_t initial_limit,
|
|
||||||
wasmer_metering_cost_function_t cost_function);
|
|
||||||
|
|
||||||
bool wasmer_metering_points_are_exhausted(const wasm_instance_t *instance);
|
|
||||||
|
|
||||||
void wasmer_metering_set_remaining_points(const wasm_instance_t *instance, uint64_t new_limit);
|
|
||||||
|
|
||||||
void wasmer_module_name(const wasm_module_t *module, wasm_name_t *out);
|
|
||||||
|
|
||||||
bool wasmer_module_set_name(wasm_module_t *module, const wasm_name_t *name);
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
const wasm_name_t *wasmer_named_extern_module(const struct wasmer_named_extern_t *named_extern);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
const wasm_name_t *wasmer_named_extern_name(const struct wasmer_named_extern_t *named_extern);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
const wasm_extern_t *wasmer_named_extern_unwrap(const struct wasmer_named_extern_t *named_extern);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasmer_named_extern_vec_copy(struct wasmer_named_extern_vec_t *out_ptr,
|
|
||||||
const struct wasmer_named_extern_vec_t *in_ptr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasmer_named_extern_vec_delete(struct wasmer_named_extern_vec_t *ptr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasmer_named_extern_vec_new(struct wasmer_named_extern_vec_t *out,
|
|
||||||
uintptr_t length,
|
|
||||||
struct wasmer_named_extern_t *const *init);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasmer_named_extern_vec_new_empty(struct wasmer_named_extern_vec_t *out);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WASMER_WASI_ENABLED)
|
|
||||||
void wasmer_named_extern_vec_new_uninitialized(struct wasmer_named_extern_vec_t *out,
|
|
||||||
uintptr_t length);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void wasmer_target_delete(struct wasmer_target_t *_target);
|
|
||||||
|
|
||||||
struct wasmer_target_t *wasmer_target_new(struct wasmer_triple_t *triple,
|
|
||||||
struct wasmer_cpu_features_t *cpu_features);
|
|
||||||
|
|
||||||
void wasmer_triple_delete(struct wasmer_triple_t *_triple);
|
|
||||||
|
|
||||||
struct wasmer_triple_t *wasmer_triple_new(const wasm_name_t *triple);
|
|
||||||
|
|
||||||
struct wasmer_triple_t *wasmer_triple_new_from_host(void);
|
|
||||||
|
|
||||||
const char *wasmer_version(void);
|
|
||||||
|
|
||||||
uint8_t wasmer_version_major(void);
|
|
||||||
|
|
||||||
uint8_t wasmer_version_minor(void);
|
|
||||||
|
|
||||||
uint8_t wasmer_version_patch(void);
|
|
||||||
|
|
||||||
const char *wasmer_version_pre(void);
|
|
||||||
|
|
||||||
void wat2wasm(const wasm_byte_vec_t *wat, wasm_byte_vec_t *out);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} // extern "C"
|
|
||||||
#endif // __cplusplus
|
|
||||||
|
|
||||||
#endif /* WASMER_WASM_H */
|
|
||||||
|
|||||||
8
lib/cache/benches/bench_filesystem_cache.rs
vendored
8
lib/cache/benches/bench_filesystem_cache.rs
vendored
@@ -20,7 +20,7 @@ pub fn store_cache_universal(c: &mut Criterion) {
|
|||||||
let store = Store::new(&Universal::new(compiler).engine());
|
let store = Store::new(&Universal::new(compiler).engine());
|
||||||
let module = Module::new(
|
let module = Module::new(
|
||||||
&store,
|
&store,
|
||||||
std::fs::read("../../lib/c-api/tests/assets/qjs.wasm").unwrap(),
|
std::fs::read("../../lib/c-api/examples/assets/qjs.wasm").unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ pub fn load_cache_universal(c: &mut Criterion) {
|
|||||||
let store = Store::new(&Universal::new(compiler).engine());
|
let store = Store::new(&Universal::new(compiler).engine());
|
||||||
let module = Module::new(
|
let module = Module::new(
|
||||||
&store,
|
&store,
|
||||||
std::fs::read("../../lib/c-api/tests/assets/qjs.wasm").unwrap(),
|
std::fs::read("../../lib/c-api/examples/assets/qjs.wasm").unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let key = Hash::new([0u8; 32]);
|
let key = Hash::new([0u8; 32]);
|
||||||
@@ -57,7 +57,7 @@ pub fn store_cache_native(c: &mut Criterion) {
|
|||||||
let store = Store::new(&Native::new(compiler).engine());
|
let store = Store::new(&Native::new(compiler).engine());
|
||||||
let module = Module::new(
|
let module = Module::new(
|
||||||
&store,
|
&store,
|
||||||
std::fs::read("../../lib/c-api/tests/assets/qjs.wasm").unwrap(),
|
std::fs::read("../../lib/c-api/examples/assets/qjs.wasm").unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ pub fn load_cache_native(c: &mut Criterion) {
|
|||||||
let store = Store::new(&Native::new(compiler).engine());
|
let store = Store::new(&Native::new(compiler).engine());
|
||||||
let module = Module::new(
|
let module = Module::new(
|
||||||
&store,
|
&store,
|
||||||
std::fs::read("../../lib/c-api/tests/assets/qjs.wasm").unwrap(),
|
std::fs::read("../../lib/c-api/examples/assets/qjs.wasm").unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let key = Hash::new([0u8; 32]);
|
let key = Hash::new([0u8; 32]);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
#include "my_wasm.h"
|
#include "my_wasm.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Target: x86_64-apple-darwin
|
|||||||
Now let's create a program to link with this static object file.
|
Now let's create a program to link with this static object file.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
#include "my_wasm.h"
|
#include "my_wasm.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::path::PathBuf;
|
|||||||
|
|
||||||
pub const C_ASSET_PATH: &str = concat!(
|
pub const C_ASSET_PATH: &str = concat!(
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
"/../../../lib/c-api/tests/assets"
|
"/../../../lib/c-api/examples/assets"
|
||||||
);
|
);
|
||||||
pub const ASSET_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../../../tests/examples");
|
pub const ASSET_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../../../tests/examples");
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "wasmer_wasm.h"
|
#include "wasmer.h"
|
||||||
#include "my_wasm.h"
|
#include "my_wasm.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user