diff --git a/README.md b/README.md
index 53d339317..19680f4e6 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,6 @@ Wasmer runtime can be used as a library embedded in different languages, so you
|  | [**JavaScript**](https://github.com/wasmerio/wasmer-js) | Wasmer | actively developed |  |  |
|  | [**C#/.Net**](https://github.com/migueldeicaza/WasmerSharp) | [Miguel de Icaza](https://github.com/migueldeicaza) | actively developed |  |  |
|  | [**R**](https://github.com/dirkschumacher/wasmr) | [Dirk Schumacher](https://github.com/dirkschumacher) | actively developed | |  |
-|  | [**Swift**](https://github.com/markmals/swift-ext-wasm) | [Mark Malström](https://github.com/markmals/) | passively maintained | |  |
| ❓ | [your language is missing?](https://github.com/wasmerio/wasmer/issues/new?assignees=&labels=%F0%9F%8E%89+enhancement&template=---feature-request.md&title=) | | | |
### Usage
diff --git a/lib/runtime-c-api/.gitignore b/lib/runtime-c-api/.gitignore
new file mode 100644
index 000000000..baf7545df
--- /dev/null
+++ b/lib/runtime-c-api/.gitignore
@@ -0,0 +1 @@
+doc/html/
\ No newline at end of file
diff --git a/lib/runtime-c-api/build.rs b/lib/runtime-c-api/build.rs
index 370d434a7..25d2d531f 100644
--- a/lib/runtime-c-api/build.rs
+++ b/lib/runtime-c-api/build.rs
@@ -99,7 +99,6 @@ fn main() {
// Copy the generated C++ bindings from `OUT_DIR` to
// `CARGO_MANIFEST_DIR`.
- crate_wasmer_header_file.set_extension("h");
crate_wasmer_header_file.set_extension("hh");
out_wasmer_header_file.set_extension("hh");
fs::copy(out_wasmer_header_file, crate_wasmer_header_file)
diff --git a/lib/runtime-c-api/doc/index.md b/lib/runtime-c-api/doc/index.md
new file mode 100644
index 000000000..bb36cda71
--- /dev/null
+++ b/lib/runtime-c-api/doc/index.md
@@ -0,0 +1,125 @@
+# Wasmer Runtime C API
+
+[Wasmer] is a standalone [WebAssembly] runtime, aiming to be fully
+compatible with WASI, Emscripten, Rust and Go. [Learn
+more](https://github.com/wasmerio/wasmer).
+
+The `wasmer-runtime-c-api` crate exposes a C and a C++ API to interact
+with the Wasmer runtime. This document is the index of its
+auto-generated documentation.
+
+[Wasmer]: https://github.com/wasmerio/wasmer
+[WebAssembly]: https://webassembly.org/
+
+# Usage
+
+Since the Wasmer runtime is written in Rust, the C and C++ API are
+designed to work hand-in-hand with its shared library. The C and C++
+header files, namely [`wasmer.h`] and [`wasmer.hh`] are documented
+here. Their source code can be found in the source tree of this
+crate. They are automatically generated, and always up-to-date in this
+repository. The C and C++ header files along with the runtime shared
+libraries (`.so`, `.dylib`, `.dll`) can also be downloaded in the
+Wasmer [release page].
+
+[`wasmer.h`]: ./wasmer_8h.html
+[`wasmer.hh`]: ./wasmer_8hh.html
+[release page]: https://github.com/wasmerio/wasmer/releases
+
+Here is a simple example to use the C API:
+
+```c
+#include
+#include "../wasmer.h"
+#include
+#include
+
+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;
+}
+```
+
+# Testing
+
+Tests are run using the release build of the library. If you make
+changes or compile with non-default features, please ensure you
+rebuild in release mode for the tests to see the changes.
+
+The tests can be run via `cargo test`, such as:
+
+```sh
+$ cargo test --release -- --nocapture
+```
+
+To run tests manually, enter the `lib/runtime-c-api/tests` directory
+and run the following commands:
+
+```sh
+$ cmake .
+$ make
+$ make test
+```
+
+
+# License
+
+Wasmer is primarily distributed under the terms of the [MIT
+license][mit-license] ([LICENSE][license]).
+
+
+[wasmer_h]: ./wasmer.h
+[wasmer_hh]: ./wasmer.hh
+[mit-license]: http://opensource.org/licenses/MIT
+[license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE
diff --git a/lib/runtime-c-api/doc/theme/css/wasmer.css b/lib/runtime-c-api/doc/theme/css/wasmer.css
new file mode 100644
index 000000000..68bb56363
--- /dev/null
+++ b/lib/runtime-c-api/doc/theme/css/wasmer.css
@@ -0,0 +1,186 @@
+:root {
+ --primary-color: hsl(261.9, 61.9%, 16.5%);
+ --primary-negative-color: hsl(0, 0%, 100%);
+ --primary-dark-color: hsl(261.9, 61.9%, 16.5%);
+ --primary-light-color: hsl(0, 0%, 96.1%);
+ --secondary-color: hsl(241.2, 68.9%, 57.1%);
+ --secondary-light-color: hsl(241.2, 68.9%, 60%);
+ --white-color: hsl(0, 0%, 100%);
+}
+
+body {
+ overflow-y: hidden;
+}
+
+[role="header"] {
+ display: grid;
+ grid-template-areas: "a b";
+ margin-bottom: 1rem;
+ padding: .5rem 2vw;
+}
+
+[role="header"] > * {
+ margin: 0;
+ padding: 0;
+}
+
+[role="header"] > img {
+ grid-area: a;
+ max-width: 30vw;
+ max-height: 15vh;
+}
+
+[role="header"] > div {
+ grid-area: b;
+ text-align: right;
+}
+
+[role="footer"] {
+ position: fixed;
+ bottom: 0;
+ text-align: end;
+ background: var(--white-color);
+}
+
+#MSearchBox {
+ display: none;
+}
+
+#side-nav {
+ margin: 0;
+ padding-bottom: 3rem;
+}
+
+#side-nav .ui-resizable-e {
+ background: radial-gradient(var(--secondary-light-color), var(--white-color) 60%);
+}
+
+#nav-tree {
+ background: none;
+}
+
+#nav-tree .selected {
+ text-shadow: none;
+ color: var(--primary-negative-color);
+ background: var(--secondary-color);
+}
+
+#nav-sync {
+ display: none;
+}
+
+#doc-content > .header {
+ border: 0;
+ background: none;
+}
+
+#doc-content > .header > .summary {
+ font-size: small;
+}
+
+body, div, p, ul, li {
+ color: var(--primary-color);
+}
+
+#doc-content .contents p,
+#doc-content .contents ul,
+#doc-content .contents div:not(.line),
+#doc-content .contents table.memberdecls {
+ font-family: serif;
+ font-size: 1.1rem;
+}
+
+a, .contents a, .contents a:visited {
+ color: var(--secondary-color);
+}
+
+h1, .headertitle > .title {
+ color: var(--primary-color);
+ font-size: 2.5rem;
+ line-height: 2.7rem;
+}
+
+h2, .memberdecls h2, h2.groupheader {
+ color: var(--primary-color);
+ font-size: 2rem;
+ line-height: 2.5rem;
+}
+
+h2.groupheader {
+ border-color: var(--secondary-color);
+ border-bottom-style: dotted;
+ margin-bottom: 1rem !important;
+}
+
+h3, h2.memtitle {
+ font-size: 1.5rem;
+ line-height: 2rem;
+}
+
+.memberdecls [class^="separator"] {
+ display: none;
+}
+
+.memberdecls [class^="memitem"] > td,
+.memberdecls [class^="memdesc"] > td {
+ background: none;
+}
+
+.memtitle {
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: none;
+}
+
+.memitem {
+ margin-left: 1rem;
+ width: calc(100% - 1rem);
+}
+
+.memtitle {
+ font-weight: bold;
+ font-family: monospace;
+}
+
+.memtitle ~ .memtitle {
+ margin-top: 1.5rem;
+}
+
+.memitem .memproto,
+.memitem .memproto .memname,
+.memitem .memdoc,
+.memitem .memdoc .definition {
+ margin: 0;
+ padding: 0;
+ box-shadow: none;
+ border: none;
+ background: none;
+}
+
+.memitem .memproto {
+ padding-left: 1rem;
+ margin: .5rem 0;
+ background: var(--primary-light-color) !important;
+}
+
+.memproto table.memname {
+ font-family: monospace;
+ font-size: .85rem;
+}
+
+table.fieldtable {
+ border-radius: 0;
+ box-shadow: none;
+}
+
+table.fieldtable th {
+ color: var(--primary-negative-color);
+ border-radius: 0;
+ background: var(--secondary-color);
+}
+
+table.fieldtable,
+table.fieldtable td {
+ border-color: var(--secondary-color) !important;
+}
diff --git a/lib/runtime-c-api/doc/theme/footer.html b/lib/runtime-c-api/doc/theme/footer.html
new file mode 100644
index 000000000..15eec1979
--- /dev/null
+++ b/lib/runtime-c-api/doc/theme/footer.html
@@ -0,0 +1,10 @@
+
+
+ $generatedby
+
+
+ $doxygenversion
+
+
+