Skip to content

Commit

Permalink
Merge #439
Browse files Browse the repository at this point in the history
439: doc(runtime-c-api) Add short module descriptions - cont r=syrusakbary a=syrusakbary

This PR supersedes #313 

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
Co-authored-by: Syrus <me@syrusakbary.com>
  • Loading branch information
3 people committed May 13, 2019
2 parents 41ae84b + 19eba19 commit 7e00bef
Show file tree
Hide file tree
Showing 10 changed files with 93 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/error.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Errors.
//! Read runtime errors.

use libc::{c_char, c_int};
use std::cell::RefCell;
Expand Down
3 changes: 2 additions & 1 deletion lib/runtime-c-api/src/export.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//! Wasm exports.
//! Create, read, destroy export definitions (function, global, memory
//! and table) on an instance.

use crate::{
error::{update_last_error, CApiError},
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/global.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm global.
//! Create, set, get and destroy global variables of an instance.

use crate::value::{wasmer_value_t, wasmer_value_tag};
use wasmer_runtime::Global;
Expand Down
3 changes: 2 additions & 1 deletion lib/runtime-c-api/src/import.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
//! Wasm imports.
//! Create, read, destroy import definitions (function, global, memory
//! and table) on an instance.

use crate::{
error::{update_last_error, CApiError},
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/instance.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm instance.
//! Instantiate a module, call functions, and read exports.

use crate::{
error::{update_last_error, CApiError},
Expand Down
82 changes: 82 additions & 0 deletions lib/runtime-c-api/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,85 @@
//! # Wasmer Runtime C API
//!
//! Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully
//! compatible with Emscripten, Rust and Go. [Learn
//! more](https://github.com/wasmerio/wasmer).
//!
//! This crate exposes a C and C++ API for the Wasmer runtime.
//!
//! # Usage
//!
//! The C and C++ header files can be found in the source tree of this
//! crate, respectively [`wasmer.h`][wasmer_h] and
//! [`wasmer.hh`][wasmer_hh]. They are automatically generated, and always
//! up-to-date in this repository.
//!
//! Here is a simple example to use the C API:
//!
//! ```c
//! #include <stdio.h>
//! #include "wasmer.h"
//! #include <assert.h>
//! #include <stdint.h>
//!
//! int main()
//! {
//! // Read the Wasm file bytes.
//! FILE *file = fopen("sum.wasm", "r");
//! fseek(file, 0, SEEK_END);
//! long len = ftell(file);
//! uint8_t *bytes = malloc(len);
//! fseek(file, 0, SEEK_SET);
//! fread(bytes, 1, len, file);
//! fclose(file);
//!
//! // Prepare the imports.
//! wasmer_import_t imports[] = {};
//!
//! // Instantiate!
//! wasmer_instance_t *instance = NULL;
//! wasmer_result_t instantiation_result = wasmer_instantiate(&instance, bytes, len, imports, 0);
//!
//! assert(instantiation_result == WASMER_OK);
//!
//! // Let's call a function.
//! // Start by preparing the arguments.
//!
//! // Value of argument #1 is `7i32`.
//! wasmer_value_t argument_one;
//! argument_one.tag = WASM_I32;
//! argument_one.value.I32 = 7;
//!
//! // Value of argument #2 is `8i32`.
//! wasmer_value_t argument_two;
//! argument_two.tag = WASM_I32;
//! argument_two.value.I32 = 8;
//!
//! // Prepare the arguments.
//! wasmer_value_t arguments[] = {argument_one, argument_two};
//!
//! // Prepare the return value.
//! wasmer_value_t result_one;
//! wasmer_value_t results[] = {result_one};
//!
//! // Call the `sum` function with the prepared arguments and the return value.
//! wasmer_result_t call_result = wasmer_instance_call(instance, "sum", arguments, 2, results, 1);
//!
//! // Let's display the result.
//! printf("Call result: %d\n", call_result);
//! printf("Result: %d\n", results[0].value.I32);
//!
//! // `sum(7, 8) == 15`.
//! assert(results[0].value.I32 == 15);
//! assert(call_result == WASMER_OK);
//!
//! wasmer_instance_destroy(instance);
//!
//! return 0;
//! }
//! ```
//!
//! [wasmer_h]: ./wasmer.h
//! [wasmer_hh]: ./wasmer.hh
#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)]

extern crate wasmer_runtime;
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/memory.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm memory.o
//! Create, read, write, grow, destroy memory of an instance.

use crate::{error::update_last_error, wasmer_limits_t, wasmer_result_t};
use libc::{uint32_t, uint8_t};
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/module.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm module.
//! Compile, validate, instantiate, serialize, and destroy modules.

use crate::{
error::{update_last_error, CApiError},
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/table.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm tables.
//! Create, grow, destroy tables of an instance.

use crate::{error::update_last_error, wasmer_limits_t, wasmer_result_t};
use libc::uint32_t;
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime-c-api/src/value.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Wasm values.
//! Create and map Rust to WebAssembly values.

use libc::{int32_t, int64_t};
use wasmer_runtime::Value;
Expand Down

0 comments on commit 7e00bef

Please sign in to comment.