From d93d878aa4f9d9863072f0383589613099ccbe6d Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:53:03 -0800 Subject: [PATCH 01/22] Fixed runtime doc links --- lib/runtime-c-api/Cargo.toml | 1 + lib/runtime/Cargo.toml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index ee6b3c6cb..0fc3710b3 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -2,6 +2,7 @@ name = "wasmer-runtime-c-api" version = "0.13.1" description = "Wasmer C API library" +documentation = "https://wasmerio.github.io/wasmer/c/runtime-c-api/" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index a8dd63dbc..432f2b5a9 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -2,7 +2,6 @@ name = "wasmer-runtime" version = "0.13.1" description = "Wasmer runtime library" -documentation = "https://wasmerio.github.io/wasmer/c/runtime-c-api/" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" From 40fb54c58fdf8a5621157a68e31d05d00bf70110 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:54:32 -0800 Subject: [PATCH 02/22] Improved Wasmer C API artifacts --- Makefile | 27 ++++++++++++++ azure-pipelines.yml | 17 +++------ lib/runtime-c-api/distribution/README.md | 25 +++++++++++++ scripts/capi-name.sh | 46 ++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 lib/runtime-c-api/distribution/README.md create mode 100755 scripts/capi-name.sh diff --git a/Makefile b/Makefile index 6e34078af..c5a1dce0b 100644 --- a/Makefile +++ b/Makefile @@ -294,6 +294,33 @@ build-install: cp ./target/release/wasmer ./install/bin/ tar -C ./install -zcvf wasmer.tar.gz bin/wapm bin/wasmer +UNAME_S := $(shell uname -s) + +build-capi: + mkdir -p ./capi/ + mkdir -p ./capi/include + mkdir -p ./capi/lib + +ifeq ($(OS), Windows_NT) + cp target/release/libwasmer_runtime_c_api.dll ./capi/lib/wasmer.dll + cp target/release/libwasmer_runtime_c_api.lib ./capi/lib/wasmer.lib +else +ifeq ($(UNAME_S), Darwin) + cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.dylib + cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.a + # Fix the rpath for the dylib + install_name_tool -id "@rpath/libwasmer.dylib" ./capi/lib/libwasmer.dylib +else + cp target/release/libwasmer_runtime_c_api.so ./capi/lib/libwasmer.so + cp target/release/libwasmer_runtime_c_api.a ./capi/lib/libwasmer.a +endif +endif + + find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' + cp LICENSE ./capi/LICENSE + cp lib/runtime-c-api/distribution/* ./capi/ + tar -C ./capi -zcvf wasmer-c-api.tar.gz lib include README.md LICENSE + # For installing the contents locally do-install: tar -C ~/.wasmer -zxvf wasmer.tar.gz diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9e42676cf..b202ca5b8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -213,21 +213,12 @@ jobs: condition: and(succeeded(), not(eq(variables['Agent.OS'], 'Windows_NT'))) - bash: | make capi - cp target/release/libwasmer_runtime_c_api.so ./artifacts - find target/release/build -name 'wasmer.h*' -exec cp {} ./artifacts ';' - displayName: Build c-api (Linux) + displayName: Build c-api condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - bash: | - make capi - install_name_tool -id "@rpath/libwasmer_runtime_c_api.dylib" target/release/libwasmer_runtime_c_api.dylib - cp target/release/libwasmer_runtime_c_api.dylib ./artifacts - displayName: Build c-api (Darwin) - condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin')) - - bash: | - make capi - cp target/release/wasmer_runtime_c_api.dll ./artifacts - displayName: Build c-api (Windows) - condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) + make build-capi + cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) + displayName: Build c-api artifacts - publish: $(System.DefaultWorkingDirectory)/artifacts artifact: library-$(Agent.OS) diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md new file mode 100644 index 000000000..1751be531 --- /dev/null +++ b/lib/runtime-c-api/distribution/README.md @@ -0,0 +1,25 @@ +# Wasmer C API + +This is the [Wasmer WebAssembly Runtime](https://wasmer.io) shared library. +You can use it in any C/C++ projects. + +This directory is structured like the following: +* `lib` is where the Wasmer shared library lives. +* `include` is where the Wasmer headers live + +## Using it + +If you want to compile a `c` file using Wasmer, you can do: + +```bash +clang YOUR_FILE -Iinclude -lwasmer -Llib +``` + +> Note: append ` -rpath lib` if you are in macOS. + +## Examples + +You can check examples of how to use the Wasmer C API here: + +https://docs.wasmer.io/integrations/c/examples + diff --git a/scripts/capi-name.sh b/scripts/capi-name.sh new file mode 100755 index 000000000..08b508e46 --- /dev/null +++ b/scripts/capi-name.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +initArch() { + ARCH=$(uname -m) + if [ -n "$WASMER_ARCH" ]; then + ARCH="$WASMER_ARCH" + fi + # If you modify this list, please also modify install.sh + case $ARCH in + amd64) ARCH="amd64";; + x86_64) ARCH="amd64";; + aarch64) ARCH="arm64";; + i386) ARCH="386";; + *) echo "Architecture ${ARCH} is not supported by this installation script"; exit 1;; + esac +} + +initOS() { + OS=$(uname | tr '[:upper:]' '[:lower:]') + if [ -n "$WASMER_OS" ]; then + echo "Using WASMER_OS" + OS="$WASMER_OS" + fi + case "$OS" in + darwin) OS='darwin';; + linux) OS='linux';; + freebsd) OS='freebsd';; + # mingw*) OS='windows';; + # msys*) OS='windows';; + *) echo "OS ${OS} is not supported by this installation script"; exit 1;; + esac +} + +# identify platform based on uname output +initArch +initOS + +# determine install directory if required +BINARY="wasmer-c-api-${OS}-${ARCH}.tar.gz" + +# add .exe if on windows +# if [ "$OS" = "windows" ]; then +# BINARY="$BINARY.exe" +# fi + +echo "${BINARY}" From 0b5064694f3c06f1689bc201285d3cd02f9c5fa9 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:55:18 -0800 Subject: [PATCH 03/22] Ignore the capi folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 21ab53e28..1dfea1e5e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ .idea **/.vscode install/ +capi/ api-docs/ api-docs-repo/ From edeabd419bc459c276a6ec4eca58fda0cf2bd033 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:58:22 -0800 Subject: [PATCH 04/22] Add links for API Docs --- lib/runtime-c-api/distribution/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md index 1751be531..bb1689ee0 100644 --- a/lib/runtime-c-api/distribution/README.md +++ b/lib/runtime-c-api/distribution/README.md @@ -7,7 +7,14 @@ This directory is structured like the following: * `lib` is where the Wasmer shared library lives. * `include` is where the Wasmer headers live -## Using it +## Documentation + +The API documentation for the Wasmer Runtime C API can be found here: + +https://wasmerio.github.io/wasmer/c/runtime-c-api/ + + +## Usage If you want to compile a `c` file using Wasmer, you can do: From 6d0efd274aef0e6a7699c181be2f733e9cee79e0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 19:03:22 -0800 Subject: [PATCH 05/22] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7cce41a..16b7e90ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## **[Unreleased]** +- [#1233](https://github.com/wasmerio/wasmer/pull/1233) Improved Wasmer C API release artifacts. - [#787](https://github.com/wasmerio/wasmer/pull/787) New crate `wasmer-interface-types` to implement WebAssembly Interface Types. - [#1213](https://github.com/wasmerio/wasmer/pull/1213) Fixed WASI `fdstat` to detect `isatty` properly. - [#1192](https://github.com/wasmerio/wasmer/pull/1192) Use `ExceptionCode` for error representation. From b31d8d73d89b1fce91339ff05052d744323bf76c Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 21:39:10 -0800 Subject: [PATCH 06/22] Fixed windows library --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c5a1dce0b..a8df5cd28 100644 --- a/Makefile +++ b/Makefile @@ -302,8 +302,8 @@ build-capi: mkdir -p ./capi/lib ifeq ($(OS), Windows_NT) - cp target/release/libwasmer_runtime_c_api.dll ./capi/lib/wasmer.dll - cp target/release/libwasmer_runtime_c_api.lib ./capi/lib/wasmer.lib + cp target/release/wasmer_runtime_c_api.dll ./capi/lib/wasmer.dll + cp target/release/wasmer_runtime_c_api.lib ./capi/lib/wasmer.lib else ifeq ($(UNAME_S), Darwin) cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.dylib From f0abcb0a7a34d6480ee1bbcd9f9a565f40606baa Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 21:49:47 -0800 Subject: [PATCH 07/22] Fixing C api creation only for Linux --- azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b202ca5b8..112d2da8e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -214,7 +214,6 @@ jobs: - bash: | make capi displayName: Build c-api - condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - bash: | make build-capi cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) From 1d9741b856d5985a1d69764aa5058f025b4d3772 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 23:14:10 -0800 Subject: [PATCH 08/22] Fixed make capi script in windows --- azure-pipelines.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 112d2da8e..f94f5ec31 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -217,7 +217,21 @@ jobs: - bash: | make build-capi cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) - displayName: Build c-api artifacts + displayName: Build c-api artifacts (Unix) + condition: | + and( + succeeded(), + not(eq(variables['Agent.OS'], 'Windows_NT')) + ) + - bash: | + make build-capi + cp ./wasmer-c-api.tar.gz ./artifacts/wasmer-c-api-windows.tar.gz + displayName: Build c-api artifacts (Windows) + condition: | + and( + succeeded(), + eq(variables['Agent.OS'], 'Windows_NT') + ) - publish: $(System.DefaultWorkingDirectory)/artifacts artifact: library-$(Agent.OS) From aa0f33203ce4c44b980f5c7c1d92eb651fde25a0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:24:54 -0800 Subject: [PATCH 09/22] Reuse doc file for capi docs --- Makefile | 8 +++-- lib/runtime-c-api/distribution/README.md | 32 ----------------- lib/runtime-c-api/doc/index.md | 45 ++++++++---------------- 3 files changed, 19 insertions(+), 66 deletions(-) delete mode 100644 lib/runtime-c-api/distribution/README.md diff --git a/Makefile b/Makefile index a8df5cd28..9692c4178 100644 --- a/Makefile +++ b/Makefile @@ -318,7 +318,7 @@ endif find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' cp LICENSE ./capi/LICENSE - cp lib/runtime-c-api/distribution/* ./capi/ + cp lib/runtime-c-api/doc/index.md ./capi/README.md tar -C ./capi -zcvf wasmer-c-api.tar.gz lib include README.md LICENSE # For installing the contents locally @@ -333,9 +333,11 @@ publish-release: dep-graph: cargo deps --optional-deps --filter wasmer-wasi wasmer-wasi-tests wasmer-kernel-loader wasmer-dev-utils wasmer-llvm-backend wasmer-emscripten wasmer-emscripten-tests wasmer-runtime-core wasmer-runtime wasmer-middleware-common wasmer-middleware-common-tests wasmer-singlepass-backend wasmer-clif-backend wasmer --manifest-path Cargo.toml | dot -Tpng > wasmer_depgraph.png -docs: - cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps +docs-capi: cd lib/runtime-c-api/ && doxygen doxyfile && cd .. + +docs: docs-capi + cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps mkdir -p api-docs mkdir -p api-docs/c cp -R target/doc api-docs/crates diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md deleted file mode 100644 index bb1689ee0..000000000 --- a/lib/runtime-c-api/distribution/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Wasmer C API - -This is the [Wasmer WebAssembly Runtime](https://wasmer.io) shared library. -You can use it in any C/C++ projects. - -This directory is structured like the following: -* `lib` is where the Wasmer shared library lives. -* `include` is where the Wasmer headers live - -## Documentation - -The API documentation for the Wasmer Runtime C API can be found here: - -https://wasmerio.github.io/wasmer/c/runtime-c-api/ - - -## Usage - -If you want to compile a `c` file using Wasmer, you can do: - -```bash -clang YOUR_FILE -Iinclude -lwasmer -Llib -``` - -> Note: append ` -rpath lib` if you are in macOS. - -## Examples - -You can check examples of how to use the Wasmer C API here: - -https://docs.wasmer.io/integrations/c/examples - diff --git a/lib/runtime-c-api/doc/index.md b/lib/runtime-c-api/doc/index.md index 84b08e56a..ebd5dadb7 100644 --- a/lib/runtime-c-api/doc/index.md +++ b/lib/runtime-c-api/doc/index.md @@ -1,12 +1,9 @@ # 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). +[Wasmer] is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/), supporting [WASI](https://github.com/WebAssembly/WASI) and [Emscripten](https://emscripten.org/). -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. +The Wasmer Runtime C API exposes a C and a C++ API to interact +with the Wasmer Runtime, so you can use WebAssembly anywhere. [Wasmer]: https://github.com/wasmerio/wasmer [WebAssembly]: https://webassembly.org/ @@ -15,21 +12,22 @@ auto-generated documentation. 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 +header files, namely [`wasmer.h`][wasmer_h] and `wasmer.hh` are documented +in the docs. + +Their source code can be found in the source tree of the [wasmer-runtime-c-api](https://github.com/wasmerio/wasmer/tree/master/lib/runtime-c-api) +crate. +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 [release page]: https://github.com/wasmerio/wasmer/releases Here is a simple example to use the C API: ```c #include -#include "../wasmer.h" +#include "wasmer.h" #include #include @@ -90,26 +88,12 @@ int main() } ``` -# Testing +# Examples -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. +You can check more examples of how to use the Wasmer C API here: -The tests can be run via `cargo test`, such as: +https://docs.wasmer.io/integrations/c/examples -```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 @@ -118,7 +102,6 @@ Wasmer is primarily distributed under the terms of the [MIT license][mit-license] ([LICENSE][license]). -[wasmer_h]: ./wasmer.h -[wasmer_hh]: ./wasmer.hh +[wasmer_h]: https://wasmerio.github.io/wasmer/c/runtime-c-api/wasmer_8h.html [mit-license]: http://opensource.org/licenses/MIT [license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE From c8df4fb5da671756455a8f0248a0586810c432df Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:25:46 -0800 Subject: [PATCH 10/22] Removed empty lines --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 9692c4178..071f42440 100644 --- a/Makefile +++ b/Makefile @@ -300,7 +300,6 @@ build-capi: mkdir -p ./capi/ mkdir -p ./capi/include mkdir -p ./capi/lib - ifeq ($(OS), Windows_NT) cp target/release/wasmer_runtime_c_api.dll ./capi/lib/wasmer.dll cp target/release/wasmer_runtime_c_api.lib ./capi/lib/wasmer.lib @@ -315,7 +314,6 @@ else cp target/release/libwasmer_runtime_c_api.a ./capi/lib/libwasmer.a endif endif - find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' cp LICENSE ./capi/LICENSE cp lib/runtime-c-api/doc/index.md ./capi/README.md From 38830ed8e5f4ddc59ad7f2ff6900c8c89a9f9a38 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:56:47 -0800 Subject: [PATCH 11/22] Fixed unused cd --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 071f42440..2bb5cb4f1 100644 --- a/Makefile +++ b/Makefile @@ -332,7 +332,7 @@ dep-graph: cargo deps --optional-deps --filter wasmer-wasi wasmer-wasi-tests wasmer-kernel-loader wasmer-dev-utils wasmer-llvm-backend wasmer-emscripten wasmer-emscripten-tests wasmer-runtime-core wasmer-runtime wasmer-middleware-common wasmer-middleware-common-tests wasmer-singlepass-backend wasmer-clif-backend wasmer --manifest-path Cargo.toml | dot -Tpng > wasmer_depgraph.png docs-capi: - cd lib/runtime-c-api/ && doxygen doxyfile && cd .. + cd lib/runtime-c-api/ && doxygen doxyfile docs: docs-capi cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps From 69d88ced5357b3c111a1bd4503923b2495d36057 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:59:44 -0800 Subject: [PATCH 12/22] Make commands more clear --- .travis.yml | 2 +- Makefile | 7 ++++--- azure-pipelines.yml | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 425607a02..75c7d7f9a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ before_deploy: # Release - make release-singlepass - make wapm - - make build-install + - make build-install-package - mkdir -p artifacts - cp ./wasmer.tar.gz ./artifacts/$(./scripts/binary-name.sh) diff --git a/Makefile b/Makefile index 2bb5cb4f1..a7b1039e9 100644 --- a/Makefile +++ b/Makefile @@ -287,8 +287,8 @@ bench-llvm: cargo bench --all --no-default-features --features "backend-llvm" \ --exclude wasmer-singlepass-backend --exclude wasmer-clif-backend --exclude wasmer-kernel-loader -# Build utils -build-install: +build-install-package: + # This command doesn't build the binary, just packages it mkdir -p ./install/bin cp ./wapm-cli/target/release/wapm ./install/bin/ cp ./target/release/wasmer ./install/bin/ @@ -296,7 +296,8 @@ build-install: UNAME_S := $(shell uname -s) -build-capi: +build-capi-package: + # This command doesn't build the C-API, just packages it mkdir -p ./capi/ mkdir -p ./capi/include mkdir -p ./capi/lib diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f94f5ec31..24aa07d58 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -153,7 +153,7 @@ jobs: condition: | startsWith(variables['Build.SourceBranch'], 'refs/tags') - bash: | - make build-install + make build-install-package cp ./wasmer.tar.gz ./artifacts/$(./scripts/binary-name.sh) displayName: Build Distribution (*nix) condition: | @@ -215,7 +215,7 @@ jobs: make capi displayName: Build c-api - bash: | - make build-capi + make build-capi-package cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) displayName: Build c-api artifacts (Unix) condition: | @@ -224,7 +224,7 @@ jobs: not(eq(variables['Agent.OS'], 'Windows_NT')) ) - bash: | - make build-capi + make build-capi-package cp ./wasmer-c-api.tar.gz ./artifacts/wasmer-c-api-windows.tar.gz displayName: Build c-api artifacts (Windows) condition: | From 1374bf080643a503b2509d7f5d037e6f849cdab4 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 20 Feb 2020 13:15:29 -0800 Subject: [PATCH 13/22] Prepare for 0.14.0 release --- CHANGELOG.md | 2 ++ Cargo.lock | 38 ++++++++++----------- Cargo.toml | 2 +- lib/clif-backend/Cargo.toml | 6 ++-- lib/dev-utils/Cargo.toml | 2 +- lib/emscripten-tests/Cargo.toml | 14 ++++---- lib/emscripten/Cargo.toml | 4 +-- lib/interface-types/Cargo.toml | 4 +-- lib/llvm-backend-tests/Cargo.toml | 6 ++-- lib/llvm-backend/Cargo.toml | 4 +-- lib/middleware-common-tests/Cargo.toml | 12 +++---- lib/middleware-common/Cargo.toml | 4 +-- lib/runtime-c-api/Cargo.toml | 10 +++--- lib/runtime-core-tests/Cargo.toml | 10 +++--- lib/runtime-core/Cargo.toml | 2 +- lib/runtime/Cargo.toml | 8 ++--- lib/singlepass-backend/Cargo.toml | 4 +-- lib/spectests/Cargo.toml | 10 +++--- lib/wasi-experimental-io-devices/Cargo.toml | 6 ++-- lib/wasi-tests/Cargo.toml | 14 ++++---- lib/wasi/Cargo.toml | 4 +-- lib/win-exception-handler/Cargo.toml | 4 +-- scripts/update_version_numbers.sh | 4 +-- src/installer/wasmer.iss | 2 +- 24 files changed, 89 insertions(+), 87 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aba05ee4..544c008b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## **[Unreleased]** +## 0.14.0 - 2020-02-20 + - [#1233](https://github.com/wasmerio/wasmer/pull/1233) Improved Wasmer C API release artifacts. - [#1216](https://github.com/wasmerio/wasmer/pull/1216) `wasmer-interface-types` receives a binary encoder. - [#1228](https://github.com/wasmerio/wasmer/pull/1228) Singlepass cleanup: Resolve several FIXMEs and remove protect_unix. diff --git a/Cargo.lock b/Cargo.lock index bc33f9a47..eb69230f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1706,7 +1706,7 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasmer" -version = "0.13.1" +version = "0.14.0" dependencies = [ "atty", "byteorder", @@ -1737,7 +1737,7 @@ dependencies = [ [[package]] name = "wasmer-clif-backend" -version = "0.13.1" +version = "0.14.0" dependencies = [ "byteorder", "cranelift-codegen", @@ -1787,14 +1787,14 @@ dependencies = [ [[package]] name = "wasmer-dev-utils" -version = "0.13.1" +version = "0.14.0" dependencies = [ "libc", ] [[package]] name = "wasmer-emscripten" -version = "0.13.1" +version = "0.14.0" dependencies = [ "byteorder", "getrandom", @@ -1807,7 +1807,7 @@ dependencies = [ [[package]] name = "wasmer-emscripten-tests" -version = "0.13.1" +version = "0.14.0" dependencies = [ "glob 0.3.0", "wabt", @@ -1821,7 +1821,7 @@ dependencies = [ [[package]] name = "wasmer-interface-types" -version = "0.13.1" +version = "0.14.0" dependencies = [ "nom", ] @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "wasmer-llvm-backend" -version = "0.13.1" +version = "0.14.0" dependencies = [ "byteorder", "cc", @@ -1867,14 +1867,14 @@ dependencies = [ [[package]] name = "wasmer-middleware-common" -version = "0.13.1" +version = "0.14.0" dependencies = [ "wasmer-runtime-core", ] [[package]] name = "wasmer-middleware-common-tests" -version = "0.13.1" +version = "0.14.0" dependencies = [ "criterion", "wabt", @@ -1887,7 +1887,7 @@ dependencies = [ [[package]] name = "wasmer-runtime" -version = "0.13.1" +version = "0.14.0" dependencies = [ "criterion", "lazy_static", @@ -1904,7 +1904,7 @@ dependencies = [ [[package]] name = "wasmer-runtime-c-api" -version = "0.13.1" +version = "0.14.0" dependencies = [ "cbindgen", "libc", @@ -1916,7 +1916,7 @@ dependencies = [ [[package]] name = "wasmer-runtime-core" -version = "0.13.1" +version = "0.14.0" dependencies = [ "bincode", "blake3", @@ -1942,7 +1942,7 @@ dependencies = [ [[package]] name = "wasmer-runtime-core-tests" -version = "0.13.1" +version = "0.14.0" dependencies = [ "wabt", "wasmer-clif-backend", @@ -1953,7 +1953,7 @@ dependencies = [ [[package]] name = "wasmer-singlepass-backend" -version = "0.13.1" +version = "0.14.0" dependencies = [ "bincode", "byteorder", @@ -1970,7 +1970,7 @@ dependencies = [ [[package]] name = "wasmer-spectests" -version = "0.13.1" +version = "0.14.0" dependencies = [ "glob 0.3.0", "wabt", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "wasmer-wasi" -version = "0.13.1" +version = "0.14.0" dependencies = [ "bincode", "byteorder", @@ -1999,7 +1999,7 @@ dependencies = [ [[package]] name = "wasmer-wasi-experimental-io-devices" -version = "0.13.1" +version = "0.14.0" dependencies = [ "log", "minifb", @@ -2012,7 +2012,7 @@ dependencies = [ [[package]] name = "wasmer-wasi-tests" -version = "0.13.1" +version = "0.14.0" dependencies = [ "glob 0.3.0", "wasmer-clif-backend", @@ -2025,7 +2025,7 @@ dependencies = [ [[package]] name = "wasmer-win-exception-handler" -version = "0.13.1" +version = "0.14.0" dependencies = [ "cmake", "libc", diff --git a/Cargo.toml b/Cargo.toml index 25dc8d322..fb135aba7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer" -version = "0.13.1" +version = "0.14.0" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 83818ec11..cffab51ff 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-clif-backend" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime Cranelift compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -11,7 +11,7 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } cranelift-native = "0.52.0" cranelift-codegen = "0.52.0" cranelift-entity = "0.52.0" @@ -37,4 +37,4 @@ version = "0.0.7" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] } -wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.13.1" } +wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.14.0" } diff --git a/lib/dev-utils/Cargo.toml b/lib/dev-utils/Cargo.toml index 60db0143c..aa39fda03 100644 --- a/lib/dev-utils/Cargo.toml +++ b/lib/dev-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-dev-utils" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/emscripten-tests/Cargo.toml b/lib/emscripten-tests/Cargo.toml index d87c2516e..217c2ae23 100644 --- a/lib/emscripten-tests/Cargo.toml +++ b/lib/emscripten-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten-tests" -version = "0.13.1" +version = "0.14.0" description = "Tests for our Emscripten implementation" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,15 +9,15 @@ publish = false build = "build/mod.rs" [dependencies] -wasmer-emscripten = { path = "../emscripten", version = "0.13.1" } -wasmer-runtime = { path = "../runtime", version = "0.13.1", default-features = false } -wasmer-clif-backend = { path = "../clif-backend", version = "0.13.1", optional = true} -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", optional = true, features = ["test"] } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } +wasmer-emscripten = { path = "../emscripten", version = "0.14.0" } +wasmer-runtime = { path = "../runtime", version = "0.14.0", default-features = false } +wasmer-clif-backend = { path = "../clif-backend", version = "0.14.0", optional = true} +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", optional = true, features = ["test"] } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } [dev-dependencies] wabt = "0.9.1" -wasmer-dev-utils = { path = "../dev-utils", version = "0.13.1"} +wasmer-dev-utils = { path = "../dev-utils", version = "0.14.0"} [build-dependencies] glob = "0.3" diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index e3b7fde66..80e578bfd 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -15,7 +15,7 @@ lazy_static = "1.4" libc = "0.2.60" log = "0.4" time = "0.1" -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } [target.'cfg(windows)'.dependencies] getrandom = "0.1" diff --git a/lib/interface-types/Cargo.toml b/lib/interface-types/Cargo.toml index a3d247479..4dc01538c 100644 --- a/lib/interface-types/Cargo.toml +++ b/lib/interface-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-interface-types" -version = "0.13.1" +version = "0.14.0" description = "WebAssembly Interface Types library for Wasmer" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,4 +8,4 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -nom = "5.1" \ No newline at end of file +nom = "5.1" diff --git a/lib/llvm-backend-tests/Cargo.toml b/lib/llvm-backend-tests/Cargo.toml index 829880976..5bdd72cc5 100644 --- a/lib/llvm-backend-tests/Cargo.toml +++ b/lib/llvm-backend-tests/Cargo.toml @@ -9,8 +9,8 @@ edition = "2018" [dependencies] wabt = "0.9.1" -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } -wasmer-runtime = { path = "../runtime", version = "0.13.1" } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", features = ["test"] } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } +wasmer-runtime = { path = "../runtime", version = "0.14.0" } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", features = ["test"] } [features] diff --git a/lib/llvm-backend/Cargo.toml b/lib/llvm-backend/Cargo.toml index bd5b12254..1df4e67be 100644 --- a/lib/llvm-backend/Cargo.toml +++ b/lib/llvm-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-llvm-backend" -version = "0.13.1" +version = "0.14.0" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" @@ -10,7 +10,7 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } wasmparser = "0.45.0" smallvec = "0.6" goblin = "0.0.24" diff --git a/lib/middleware-common-tests/Cargo.toml b/lib/middleware-common-tests/Cargo.toml index cc9438f4d..329b71ccc 100644 --- a/lib/middleware-common-tests/Cargo.toml +++ b/lib/middleware-common-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-middleware-common-tests" -version = "0.13.1" +version = "0.14.0" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" @@ -8,11 +8,11 @@ license = "MIT" publish = false [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } -wasmer-middleware-common = { path = "../middleware-common", version = "0.13.1" } -wasmer-clif-backend = { path = "../clif-backend", version = "0.13.1", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", features = ["test"], optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } +wasmer-middleware-common = { path = "../middleware-common", version = "0.14.0" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.14.0", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", features = ["test"], optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } [features] clif = ["wasmer-clif-backend"] diff --git a/lib/middleware-common/Cargo.toml b/lib/middleware-common/Cargo.toml index f9df7f3d2..a997bbc44 100644 --- a/lib/middleware-common/Cargo.toml +++ b/lib/middleware-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-middleware-common" -version = "0.13.1" +version = "0.14.0" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime common middlewares" license = "MIT" @@ -10,4 +10,4 @@ categories = ["wasm"] edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index 0fc3710b3..8744e7266 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.13.1" +version = "0.14.0" description = "Wasmer C API library" documentation = "https://wasmerio.github.io/wasmer/c/runtime-c-api/" license = "MIT" @@ -20,22 +20,22 @@ libc = "0.2.60" [dependencies.wasmer-runtime] default-features = false path = "../runtime" -version = "0.13.1" +version = "0.14.0" [dependencies.wasmer-runtime-core] default-features = false path = "../runtime-core" -version = "0.13.1" +version = "0.14.0" [dependencies.wasmer-wasi] default-features = false path = "../wasi" -version = "0.13.1" +version = "0.14.0" optional = true [dependencies.wasmer-emscripten] path = "../emscripten" -version = "0.13.1" +version = "0.14.0" optional = true [features] diff --git a/lib/runtime-core-tests/Cargo.toml b/lib/runtime-core-tests/Cargo.toml index 99813b470..cb6d6b25c 100644 --- a/lib/runtime-core-tests/Cargo.toml +++ b/lib/runtime-core-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core-tests" -version = "0.13.1" +version = "0.14.0" description = "Tests for the Wasmer runtime core crate" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,10 +9,10 @@ publish = false [dependencies] wabt = "0.9.1" -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } -wasmer-clif-backend = { path = "../clif-backend", version = "0.13.1", optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", features = ["test"], optional = true } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.14.0", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", features = ["test"], optional = true } [features] default = ["backend-cranelift"] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 7f07a9d2d..6ad0e7b7c 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index 432f2b5a9..bd4194cf6 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -11,17 +11,17 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } lazy_static = "1.4" memmap = "0.7" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.13.1" +version = "0.14.0" [dependencies.wasmer-clif-backend] path = "../clif-backend" -version = "0.13.1" +version = "0.14.0" optional = true # Dependencies for caching. diff --git a/lib/singlepass-backend/Cargo.toml b/lib/singlepass-backend/Cargo.toml index 6626cd6ae..e86c36ab2 100644 --- a/lib/singlepass-backend/Cargo.toml +++ b/lib/singlepass-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-singlepass-backend" -version = "0.13.1" +version = "0.14.0" repository = "https://github.com/wasmerio/wasmer" description = "Wasmer runtime single pass compiler backend" license = "MIT" @@ -11,7 +11,7 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } dynasm = "0.5" dynasmrt = "0.5" lazy_static = "1.4" diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index 8224ab273..d5bdd9717 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-spectests" -version = "0.13.1" +version = "0.14.0" description = "Wasmer spectests library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,10 +9,10 @@ edition = "2018" [dependencies] glob = "0.3" -wasmer-runtime = { path = "../runtime", version = "0.13.1", default-features = false} -wasmer-clif-backend = { path = "../clif-backend", version = "0.13.1", optional = true} -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", features = ["test"], optional = true } -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } +wasmer-runtime = { path = "../runtime", version = "0.14.0", default-features = false} +wasmer-clif-backend = { path = "../clif-backend", version = "0.14.0", optional = true} +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", features = ["test"], optional = true } +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } [build-dependencies] wabt = "0.9.1" diff --git a/lib/wasi-experimental-io-devices/Cargo.toml b/lib/wasi-experimental-io-devices/Cargo.toml index c98c46e78..bbce57713 100644 --- a/lib/wasi-experimental-io-devices/Cargo.toml +++ b/lib/wasi-experimental-io-devices/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-wasi-experimental-io-devices" -version = "0.13.1" +version = "0.14.0" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" @@ -14,8 +14,8 @@ maintenance = { status = "experimental" } [dependencies] log = "0.4" minifb = "0.13" -wasmer-wasi = { version = "0.13.1", path = "../wasi" } -wasmer-runtime-core = { version = "0.13.1", path = "../runtime-core" } +wasmer-wasi = { version = "0.14.0", path = "../wasi" } +wasmer-runtime-core = { version = "0.14.0", path = "../runtime-core" } ref_thread_local = "0.0" serde = "1" typetag = "0.1" diff --git a/lib/wasi-tests/Cargo.toml b/lib/wasi-tests/Cargo.toml index ea9fca957..b4fa7915b 100644 --- a/lib/wasi-tests/Cargo.toml +++ b/lib/wasi-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-wasi-tests" -version = "0.13.1" +version = "0.14.0" description = "Tests for our WASI implementation" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -10,18 +10,18 @@ build = "build/mod.rs" [dependencies] # We set default features to false to be able to use the singlepass backend properly -wasmer-runtime = { path = "../runtime", version = "0.13.1", default-features = false } -wasmer-wasi = { path = "../wasi", version = "0.13.1" } +wasmer-runtime = { path = "../runtime", version = "0.14.0", default-features = false } +wasmer-wasi = { path = "../wasi", version = "0.14.0" } # hack to get tests to work -wasmer-clif-backend = { path = "../clif-backend", version = "0.13.1", optional = true} -wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.13.1", optional = true } -wasmer-llvm-backend = { path = "../llvm-backend", version = "0.13.1", features = ["test"], optional = true } +wasmer-clif-backend = { path = "../clif-backend", version = "0.14.0", optional = true} +wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.14.0", optional = true } +wasmer-llvm-backend = { path = "../llvm-backend", version = "0.14.0", features = ["test"], optional = true } [build-dependencies] glob = "0.3" [dev-dependencies] -wasmer-dev-utils = { path = "../dev-utils", version = "0.13.1"} +wasmer-dev-utils = { path = "../dev-utils", version = "0.14.0"} [features] clif = ["wasmer-clif-backend", "wasmer-runtime/default-backend-cranelift"] diff --git a/lib/wasi/Cargo.toml b/lib/wasi/Cargo.toml index f6ad4b6a3..4dd5a6dbf 100644 --- a/lib/wasi/Cargo.toml +++ b/lib/wasi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-wasi" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime WASI implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -19,7 +19,7 @@ getrandom = "0.1" time = "0.1" typetag = "0.1" serde = { version = "1", features = ["derive"] } -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } [target.'cfg(windows)'.dependencies] winapi = "0.3" diff --git a/lib/win-exception-handler/Cargo.toml b/lib/win-exception-handler/Cargo.toml index 6e305aa3d..95504170a 100644 --- a/lib/win-exception-handler/Cargo.toml +++ b/lib/win-exception-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-win-exception-handler" -version = "0.13.1" +version = "0.14.0" description = "Wasmer runtime exception handling for Windows" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [target.'cfg(windows)'.dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.13.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.14.0" } winapi = { version = "0.3.8", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] } libc = "0.2.60" diff --git a/scripts/update_version_numbers.sh b/scripts/update_version_numbers.sh index 453af422d..21e6cdd66 100755 --- a/scripts/update_version_numbers.sh +++ b/scripts/update_version_numbers.sh @@ -1,5 +1,5 @@ -PREVIOUS_VERSION='0.13.0' -NEXT_VERSION='0.13.1' +PREVIOUS_VERSION='0.13.1' +NEXT_VERSION='0.14.0' # quick hack fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/" diff --git a/src/installer/wasmer.iss b/src/installer/wasmer.iss index 9a6091797..0ddf11414 100644 --- a/src/installer/wasmer.iss +++ b/src/installer/wasmer.iss @@ -1,6 +1,6 @@ [Setup] AppName=Wasmer -AppVersion=0.13.1 +AppVersion=0.14.0 DefaultDirName={pf}\Wasmer DefaultGroupName=Wasmer Compression=lzma2 From f229dd7aa5c62d68bf8cb73dd1743f6209e539dd Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 14:48:10 -0800 Subject: [PATCH 14/22] Cleanup the codebase --- .gitmodules | 3 - Dockerfile | 25 -- README.md | 297 +++++------------- {docs/assets => assets}/languages/c.svg | 0 {docs/assets => assets}/languages/cpp.svg | 0 {docs/assets => assets}/languages/csharp.svg | 0 {docs/assets => assets}/languages/elixir.png | Bin {docs/assets => assets}/languages/go.svg | 0 {docs/assets => assets}/languages/js.svg | 0 {docs/assets => assets}/languages/php.svg | 0 .../assets => assets}/languages/postgres.svg | 0 {docs/assets => assets}/languages/python.svg | 0 {docs/assets => assets}/languages/r.svg | 0 {docs/assets => assets}/languages/ruby.svg | 0 {docs/assets => assets}/languages/rust.svg | 0 {docs/assets => assets}/languages/swift.svg | 0 logo.png => assets/logo.png | Bin azure-pipelines.yml | 10 +- docs/architecture.md | 74 ----- docs/debugging.md | 50 --- docs/docker.md | 39 --- docs/feature_matrix.md | 42 --- Dockerfile.build => scripts/Dockerfile | 0 build => scripts/build | 2 +- install.sh => scripts/install.sh | 0 wapm-cli | 1 - 26 files changed, 77 insertions(+), 466 deletions(-) delete mode 100644 .gitmodules delete mode 100644 Dockerfile rename {docs/assets => assets}/languages/c.svg (100%) rename {docs/assets => assets}/languages/cpp.svg (100%) rename {docs/assets => assets}/languages/csharp.svg (100%) rename {docs/assets => assets}/languages/elixir.png (100%) rename {docs/assets => assets}/languages/go.svg (100%) rename {docs/assets => assets}/languages/js.svg (100%) rename {docs/assets => assets}/languages/php.svg (100%) rename {docs/assets => assets}/languages/postgres.svg (100%) rename {docs/assets => assets}/languages/python.svg (100%) rename {docs/assets => assets}/languages/r.svg (100%) rename {docs/assets => assets}/languages/ruby.svg (100%) rename {docs/assets => assets}/languages/rust.svg (100%) rename {docs/assets => assets}/languages/swift.svg (100%) rename logo.png => assets/logo.png (100%) delete mode 100644 docs/architecture.md delete mode 100644 docs/debugging.md delete mode 100644 docs/docker.md delete mode 100644 docs/feature_matrix.md rename Dockerfile.build => scripts/Dockerfile (100%) rename build => scripts/build (95%) rename install.sh => scripts/install.sh (100%) delete mode 160000 wapm-cli diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index af96cdf0e..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "wapm-cli"] - path = wapm-cli - url = https://github.com/wasmerio/wapm-cli.git diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 085b7abbd..000000000 --- a/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM circleci/rust:1.40.0-stretch as wasmer-build-env -RUN sudo apt-get update && \ - sudo apt-get install -y --no-install-recommends \ - cmake \ - && sudo rm -rf /var/lib/apt/lists/* -RUN curl -SL https://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz \ - | tar -xJC /home/circleci -ENV LLVM_SYS_80_PREFIX /home/circleci/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/ - -FROM wasmer-build-env AS wasmer-debug-env -RUN sudo apt-get update && \ - sudo apt-get install -y --no-install-recommends \ - valgrind \ - && sudo rm -rf /var/lib/apt/lists/* - -FROM wasmer-build-env AS wasmer-build -WORKDIR /home/circleci/wasmer -COPY . /home/circleci/wasmer -RUN sudo chmod -R 777 . -RUN cargo build --release --features backend-cranelift - -FROM debian:stretch AS wasmer -WORKDIR /root/ -COPY --from=wasmer-build /home/circleci/wasmer/target/release/wasmer . -ENTRYPOINT ["./wasmer"] diff --git a/README.md b/README.md index ea11c9266..730674401 100644 --- a/README.md +++ b/README.md @@ -1,269 +1,118 @@ +

- Wasmer logo + Wasmer logo

+

+[Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) + +

Build Status - - Documentation - License Join the Wasmer Community - - Follow @wasmerio on Twitter -

-## Introduction +[Wasmer](https://wasmer.io/) is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/): +* *Universal*: Wasmer is available in **Linux, macOS and Windows** (for both x86 and [ARM](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c)) +* *Pluggable*: Wasmer can be used from almost **any programming language** +* *Safe*: supporting [WASI](https://github.com/WebAssembly/WASI) and [Emscripten](https://emscripten.org/) -[Wasmer](https://wasmer.io/) is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/), supporting [WASI](https://github.com/WebAssembly/WASI) and [Emscripten](https://emscripten.org/). Wasmer can be used standalone (via the CLI) and embedded in different languages, running in x86 and [ARM devices](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c). +It is used to run software fast, universally and safely: standalone applications and universal libraries. -Install the Wasmer and [WAPM](https://wapm.io) cli with: +## Contents + +- [Quickstart](#quickstart) +- [Language Integrations](#examples) +- [Contribute](#contribute) +- [Community](#community) + +## Quickstart + +Get started with Wasmer: + +#### 1. Install Wasmer ```sh curl https://get.wasmer.io -sSfL | sh ``` +> Note: *Wasmer is also [available on Windows](https://github.com/wasmerio/wasmer/releases)* -If [Homebrew](https://brew.sh/) is installed: +
+ Alternative: Install with Homebrew +

+ +If you have [Homebrew](https://brew.sh/) installed in your system: ```sh brew install wasmer ``` -> Note: *Wasmer is also [available on Windows](https://github.com/wasmerio/wasmer/releases)* +

+
-### Languages +#### 2. Use Wasmer -Wasmer runtime can be used as a library embedded in different languages, so you can use WebAssembly anywhere: +Download a WASM file, and use it universally! You can start with QuickJS: [qjs.wasm](https://registry-cdn.wapm.io/contents/_/quickjs/0.0.3/build/qjs.wasm) + +```bash +wasmer qjs.wasm +``` + +#### 3. Next steps + +Here is what you can do next: + +- [Use Wasmer from your Rust application](https://docs.wasmer.io/integrations/rust) +- [Publish a Wasm package on WAPM](https://docs.wasmer.io/ecosystem/wapm/publishing-your-package) +- [Read more about Wasmer](https://medium.com/wasmer/) + + +### Language Integrations + +Wasmer runtime can be used as a library embedded in different languages, so you can **use WebAssembly anywhere** 🎉 |   | Language | Docs | Author(s) | Maintenance | Release | Stars | |-|-|-|-|-|-|-| -| ![Rust logo](./docs/assets/languages/rust.svg) | [**Rust**](https://github.com/wasmerio/wasmer-rust-example) | [Docs](https://wasmerio.github.io/wasmer/crates/wasmer_runtime/) | Wasmer | actively developed | ![last release](https://img.shields.io/crates/v/wasmer-runtime?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer?style=flat-square) | -| ![C logo](./docs/assets/languages/c.svg) | [**C/C++**](https://github.com/wasmerio/wasmer-c-api) | [Docs](https://wasmerio.github.io/wasmer/c/runtime-c-api/) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer?style=flat-square) | -| ![Python logo](./docs/assets/languages/python.svg) | [**Python**](https://github.com/wasmerio/python-ext-wasm) | [Docs](https://github.com/wasmerio/python-ext-wasm#api-of-the-wasmer-extensionmodule) | Wasmer | actively developed | ![last release](https://img.shields.io/pypi/v/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/python-ext-wasm?style=flat-square) | -| ![Go logo](./docs/assets/languages/go.svg) | [**Go**](https://github.com/wasmerio/go-ext-wasm) | [Docs](https://github.com/wasmerio/go-ext-wasm#basic-example-exported-function) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/go-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/go-ext-wasm?style=flat-square) | -| ![PHP logo](./docs/assets/languages/php.svg) | [**PHP**](https://github.com/wasmerio/php-ext-wasm) | [Docs](https://wasmerio.github.io/php-ext-wasm/wasm/) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/php-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/php-ext-wasm?style=flat-square) | -| ![Ruby logo](./docs/assets/languages/ruby.svg) | [**Ruby**](https://github.com/wasmerio/ruby-ext-wasm) | [Docs](https://www.rubydoc.info/gems/wasmer/) | Wasmer | actively developed | ![last release](https://img.shields.io/gem/v/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/ruby-ext-wasm?style=flat-square) | -| ![Postgres logo](./docs/assets/languages/postgres.svg) | [**Postgres**](https://github.com/wasmerio/postgres-ext-wasm) | | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/postgres-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/postgres-ext-wasm?style=flat-square) | -| ![JS Logo](./docs/assets/languages/js.svg) | [**JavaScript**](https://github.com/wasmerio/wasmer-js) | [Docs](https://docs.wasmer.io/wasmer-js/wasmer-js) | Wasmer | actively developed | ![last release](https://img.shields.io/npm/v/@wasmer/wasi?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer-js?style=flat-square) | -| ![C# logo](./docs/assets/languages/csharp.svg) | [**C#/.Net**](https://github.com/migueldeicaza/WasmerSharp) | [Docs](https://migueldeicaza.github.io/WasmerSharp/) |[Miguel de Icaza](https://github.com/migueldeicaza) | actively developed | ![last release](https://img.shields.io/nuget/v/WasmerSharp?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/migueldeicaza/WasmerSharp?style=flat-square) | -| ![R logo](./docs/assets/languages/r.svg) | [**R**](https://github.com/dirkschumacher/wasmr) | [Docs](https://github.com/dirkschumacher/wasmr#example) | [Dirk Schumacher](https://github.com/dirkschumacher) | actively developed | | ![number of Github stars](https://img.shields.io/github/stars/dirkschumacher/wasmr?style=flat-square) | -| ![Elixir logo](./docs/assets/languages/elixir.png) | [**Elixir**](https://github.com/tessi/wasmex) | [Docs](https://hexdocs.pm/wasmex/api-reference.html) | [Philipp Tessenow](https://github.com/tessi) | actively developed | ![last release](https://img.shields.io/hexpm/v/wasmex?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/tessi/wasmex?style=flat-square) | +| ![Rust logo](./assets/languages/rust.svg) | [**Rust**](https://github.com/wasmerio/wasmer-rust-example) | [Docs](https://wasmerio.github.io/wasmer/crates/wasmer_runtime/) | Wasmer | actively developed | ![last release](https://img.shields.io/crates/v/wasmer-runtime?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer?style=flat-square) | +| ![C logo](./assets/languages/c.svg) | [**C/C++**](https://github.com/wasmerio/wasmer-c-api) | [Docs](https://wasmerio.github.io/wasmer/c/runtime-c-api/) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer?style=flat-square) | +| ![Python logo](./assets/languages/python.svg) | [**Python**](https://github.com/wasmerio/python-ext-wasm) | [Docs](https://github.com/wasmerio/python-ext-wasm#api-of-the-wasmer-extensionmodule) | Wasmer | actively developed | ![last release](https://img.shields.io/pypi/v/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/python-ext-wasm?style=flat-square) | +| ![Go logo](./assets/languages/go.svg) | [**Go**](https://github.com/wasmerio/go-ext-wasm) | [Docs](https://github.com/wasmerio/go-ext-wasm#basic-example-exported-function) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/go-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/go-ext-wasm?style=flat-square) | +| ![PHP logo](./assets/languages/php.svg) | [**PHP**](https://github.com/wasmerio/php-ext-wasm) | [Docs](https://wasmerio.github.io/php-ext-wasm/wasm/) | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/php-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/php-ext-wasm?style=flat-square) | +| ![Ruby logo](./assets/languages/ruby.svg) | [**Ruby**](https://github.com/wasmerio/ruby-ext-wasm) | [Docs](https://www.rubydoc.info/gems/wasmer/) | Wasmer | actively developed | ![last release](https://img.shields.io/gem/v/wasmer?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/ruby-ext-wasm?style=flat-square) | +| ![Postgres logo](./assets/languages/postgres.svg) | [**Postgres**](https://github.com/wasmerio/postgres-ext-wasm) | | Wasmer | actively developed | ![last release](https://img.shields.io/github/v/release/wasmerio/postgres-ext-wasm?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/postgres-ext-wasm?style=flat-square) | +| ![JS Logo](./assets/languages/js.svg) | [**JavaScript**](https://github.com/wasmerio/wasmer-js) | [Docs](https://docs.wasmer.io/wasmer-js/wasmer-js) | Wasmer | actively developed | ![last release](https://img.shields.io/npm/v/@wasmer/wasi?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/wasmerio/wasmer-js?style=flat-square) | +| ![C# logo](./assets/languages/csharp.svg) | [**C#/.Net**](https://github.com/migueldeicaza/WasmerSharp) | [Docs](https://migueldeicaza.github.io/WasmerSharp/) |[Miguel de Icaza](https://github.com/migueldeicaza) | actively developed | ![last release](https://img.shields.io/nuget/v/WasmerSharp?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/migueldeicaza/WasmerSharp?style=flat-square) | +| ![R logo](./assets/languages/r.svg) | [**R**](https://github.com/dirkschumacher/wasmr) | [Docs](https://github.com/dirkschumacher/wasmr#example) | [Dirk Schumacher](https://github.com/dirkschumacher) | actively developed | | ![number of Github stars](https://img.shields.io/github/stars/dirkschumacher/wasmr?style=flat-square) | +| ![Elixir logo](./assets/languages/elixir.png) | [**Elixir**](https://github.com/tessi/wasmex) | [Docs](https://hexdocs.pm/wasmex/api-reference.html) | [Philipp Tessenow](https://github.com/tessi) | actively developed | ![last release](https://img.shields.io/hexpm/v/wasmex?style=flat-square) | ![number of Github stars](https://img.shields.io/github/stars/tessi/wasmex?style=flat-square) | | ❓ | [your language is missing?](https://github.com/wasmerio/wasmer/issues/new?assignees=&labels=%F0%9F%8E%89+enhancement&template=---feature-request.md&title=) | | | | | -### Usage -Wasmer can execute both the standard binary format (`.wasm`) and the text -format defined by the WebAssembly reference interpreter (`.wat`). +## Contribute -Once installed, you will be able to run any WebAssembly files (_including Lua, PHP, SQLite and nginx!_): +**We welcome any form of contribution, especially from new members of our community** 💜 -```sh -# Run Lua -wasmer examples/lua.wasm -``` +You can check how to build the Wasmer runtime in [our awesome docs]([https://docs.wasmer.io/ecosystem/wasmer/building-from-source](https://new-docs.wasmer.io/ecosystem/wasmer/building-from-source))! -*You can find more `wasm/wat` examples in the [examples](./examples) directory.* +### Testing -### Docs +Test you want? The [Wasmer docs will show you how](https://new-docs.wasmer.io/ecosystem/wasmer/building-from-source/testing). -Wasmer documentation lives on [docs.wasmer.io](https://docs.wasmer.io). +## Community +Wasmer has an amazing community developers and contributors. Welcome, please join us! 👋 -## Code Structure +### Channels -Wasmer is structured into different directories: - -- [`src`](./src): code related to the Wasmer executable itself -- [`lib`](./lib): modularized libraries that Wasmer uses under the hood -- [`examples`](./examples): some useful examples for getting started with Wasmer - -## Dependencies - -Building Wasmer requires [rustup](https://rustup.rs/). - -To build Wasmer on Windows, download and run [`rustup-init.exe`](https://win.rustup.rs/) -then follow the onscreen instructions. - -To build on other systems, run: - -```sh -curl https://sh.rustup.rs -sSf | sh -``` - -### Other dependencies - -Please select your operating system: - -
- macOS -

- -#### macOS - -If you have [Homebrew](https://brew.sh/) installed: - -```sh -brew install cmake -``` - -Or, if you have [MacPorts](https://www.macports.org/install.php): - -```sh -sudo port install cmake -``` - -

-
- -
- Debian-based Linuxes -

- -#### Debian-based Linuxes - -```sh -sudo apt install cmake pkg-config libssl-dev -``` - -

-
- -
- FreeBSD -

- -#### FreeBSD - -```sh -pkg install cmake -``` - -

-
- -
- Windows -

- -#### Windows (MSVC) - -Windows support is _experimental_. WASI is fully supported, but Emscripten support is in the works (this means -nginx and Lua do not work on Windows - you can track the progress on [this issue](https://github.com/wasmerio/wasmer/issues/176)). - -1. Install [Visual Studio](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) - -2. Install [Rust for Windows](https://win.rustup.rs) - -3. Install [Git for Windows](https://git-scm.com/download/win). Allow it to add `git.exe` to your PATH (default - settings for the installer are fine). - -4. Install [CMake](https://cmake.org/download/). Ensure CMake is in your PATH. - -5. Install [LLVM 8.0](https://prereleases.llvm.org/win-snapshots/LLVM-8.0.0-r351033-win64.exe) -

-
- -## Building - -[![Rustc Version 1.40+](https://img.shields.io/badge/rustc-1.40+-red.svg?style=flat-square)](https://blog.rust-lang.org/2019/12/19/Rust-1.40.0.html) - -Wasmer is built with [Cargo](https://crates.io/), the Rust package manager. - -The Singlepass backend requires nightly, so if you want to use it, - -Set Rust Nightly: - -``` -rustup default nightly -``` - -Otherwise an up to date (see badge above) version of stable Rust will work. - -And install Wasmer - -```sh -# checkout code -git clone https://github.com/wasmerio/wasmer.git -cd wasmer - -# install tools -make release-clif # To build with cranelift (default) - -make release-llvm # To build with llvm support - -make release-singlepass # To build with singlepass support - -# or -make release # To build with singlepass, cranelift and llvm support -``` - -## Testing - -Thanks to [spec tests](https://github.com/wasmerio/wasmer/tree/master/lib/spectests/spectests) we can ensure 100% compatibility with the WebAssembly spec test suite. - -You can run all the tests with: - -```sh -rustup default nightly -make test -``` - -### Testing backends - -Each backend can be tested separately: - -* Singlepass: `make singlepass` -* Cranelift: `make cranelift` -* LLVM: `make llvm` - -### Testing integrations - -Each integration can be tested separately: - -* Spec tests: `make spectests` -* Emscripten: `make emtests` -* WASI: `make wasitests` -* Middleware: `make middleware` -* C API: `make capi` - -## Benchmarking - -Benchmarks can be run with: - -```sh -make bench-[backend] - -# for example -make bench-singlepass -``` - -## Roadmap - -Wasmer is an open project guided by strong principles, aiming to be modular, flexible and fast. It is open to the community to help set its direction. - -Below are some of the goals of this project (in order of priority): - -- [x] It should be 100% compatible with the [WebAssembly spec tests](https://github.com/wasmerio/wasmer/tree/master/lib/spectests/spectests) -- [x] It should be fast _(partially achieved)_ -- [x] Support WASI - released in [0.3.0](https://github.com/wasmerio/wasmer/releases/tag/0.3.0) -- [x] Support Emscripten calls -- [ ] Support Go JS ABI calls _(in the works)_ - -## Architecture - -If you would like to know how Wasmer works under the hood, please see [docs/architecture.md](./docs/architecture.md). - -## License - -Wasmer is primarily distributed under the terms of the [MIT license](http://opensource.org/licenses/MIT) ([LICENSE](./LICENSE)). - -[ATTRIBUTIONS](./ATTRIBUTIONS.md) +- [Slack](https://slack.wasmer.io/) +- [Twitter](https://twitter.com/wasmerio) +- [Facebook](https://www.facebook.com/wasmerio) +- [Email](mailto:hello@wasmer.io) diff --git a/docs/assets/languages/c.svg b/assets/languages/c.svg similarity index 100% rename from docs/assets/languages/c.svg rename to assets/languages/c.svg diff --git a/docs/assets/languages/cpp.svg b/assets/languages/cpp.svg similarity index 100% rename from docs/assets/languages/cpp.svg rename to assets/languages/cpp.svg diff --git a/docs/assets/languages/csharp.svg b/assets/languages/csharp.svg similarity index 100% rename from docs/assets/languages/csharp.svg rename to assets/languages/csharp.svg diff --git a/docs/assets/languages/elixir.png b/assets/languages/elixir.png similarity index 100% rename from docs/assets/languages/elixir.png rename to assets/languages/elixir.png diff --git a/docs/assets/languages/go.svg b/assets/languages/go.svg similarity index 100% rename from docs/assets/languages/go.svg rename to assets/languages/go.svg diff --git a/docs/assets/languages/js.svg b/assets/languages/js.svg similarity index 100% rename from docs/assets/languages/js.svg rename to assets/languages/js.svg diff --git a/docs/assets/languages/php.svg b/assets/languages/php.svg similarity index 100% rename from docs/assets/languages/php.svg rename to assets/languages/php.svg diff --git a/docs/assets/languages/postgres.svg b/assets/languages/postgres.svg similarity index 100% rename from docs/assets/languages/postgres.svg rename to assets/languages/postgres.svg diff --git a/docs/assets/languages/python.svg b/assets/languages/python.svg similarity index 100% rename from docs/assets/languages/python.svg rename to assets/languages/python.svg diff --git a/docs/assets/languages/r.svg b/assets/languages/r.svg similarity index 100% rename from docs/assets/languages/r.svg rename to assets/languages/r.svg diff --git a/docs/assets/languages/ruby.svg b/assets/languages/ruby.svg similarity index 100% rename from docs/assets/languages/ruby.svg rename to assets/languages/ruby.svg diff --git a/docs/assets/languages/rust.svg b/assets/languages/rust.svg similarity index 100% rename from docs/assets/languages/rust.svg rename to assets/languages/rust.svg diff --git a/docs/assets/languages/swift.svg b/assets/languages/swift.svg similarity index 100% rename from docs/assets/languages/swift.svg rename to assets/languages/swift.svg diff --git a/logo.png b/assets/logo.png similarity index 100% rename from logo.png rename to assets/logo.png diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 24aa07d58..75bec4daf 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -13,7 +13,6 @@ jobs: vmImage: "macos-10.14" steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - script: | rustup component add rustfmt @@ -28,7 +27,6 @@ jobs: vmImage: "ubuntu-18.04" steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml @@ -63,7 +61,6 @@ jobs: condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/staging', 'refs/heads/trying') steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml @@ -97,7 +94,6 @@ jobs: condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/staging', 'refs/heads/trying') steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml @@ -129,7 +125,6 @@ jobs: ) steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml @@ -148,10 +143,13 @@ jobs: displayName: Build (Windows) condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) - bash: | + git clone --branch $WAPM_VERSION https://github.com/wasmerio/wapm-cli.git make wapm displayName: Build WAPM condition: | startsWith(variables['Build.SourceBranch'], 'refs/tags') + env: + WAPM_VERSION: 0.4.3 - bash: | make build-install-package cp ./wasmer.tar.gz ./artifacts/$(./scripts/binary-name.sh) @@ -199,7 +197,6 @@ jobs: ) steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml @@ -243,7 +240,6 @@ jobs: condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/staging', 'refs/heads/trying') steps: - checkout: self - submodules: true - template: .azure/install-rust.yml - template: .azure/install-llvm.yml - template: .azure/install-sccache.yml diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index e1d1c4ae3..000000000 --- a/docs/architecture.md +++ /dev/null @@ -1,74 +0,0 @@ -# Wasmer Architecture - -Wasmer uses the following components: - -- Compiler backends: for compiling Wasm binaries to machine code ([more info here](https://github.com/wasmerio/wasmer/tree/master/lib#backends)) -- [wabt](https://github.com/pepyakin/wabt-rs): for transforming `.wast` files to `.wasm` and running WebAssembly spec tests -- [wasmparser](https://github.com/yurydelendik/wasmparser.rs): for parsing the `.wasm` files and translating them into WebAssembly modules - -## How Wasmer works - -The first time you run `wasmer run myfile.wasm`, Wasmer will: - -- Check if is a `.wast` file, and if so, transform it to `.wasm` -- Check that the provided binary is a valid WebAssembly one, i.e. its binary format starts with `\0asm`. -- Parse it with `wasmparser` and generate a `Module` from it -- Generate an `Instance` with the proper `import_object` (that means, if is detected to be an Emscripten file, it will add the Emscripten expected imports) -- Try to call the WebAssembly `start` function, or if it does not exist, try to search for the function that is exported as `main` - -Find a more detailed explanation of the process below: - -### Phase 1: Generating the Module / IR - -As the WebAssembly file is being parsed, it will read the sections in the WebAssembly file (memory, table, function, global and element definitions) using the `Module` (or `ModuleEnvironment`) as the structure to hold this information. - -However, the real IR initialization happens while a function body is being parsed/created, i.e. when the parser reads the section `(func ...)`. -While the function body is being parsed the corresponding `FuncEnvironment` methods will be called. - -So for example, if the function is using a table, the `make_table` method within that `FuncEnvironment` will be called. -Each of this methods will return the corresponding IR representation. - -The `Module` creation will be finished once the parsing is done, and will hold all the function IR as well as the imports/exports. - -### Phase 2: Compiling the Functions - -Now that we have a `Module` (and all its definitions living in `ModuleInfo`) we should be ready to compile its functions. - -Right now, the `Instance` is the one in charge of compiling this functions into machine code. - -When creating the `Instance`, each of the function bodies (IR) will be compiled into machine code that our architecture can understand. -Once we have the compiled values, we will push them to memory and mark them as executable, so we can call them from anywhere in our code. - -#### Relocations - -Sometimes the functions that we generate will need to call other functions, but the generated code has no idea how to link these functions together. - -For example, if a function `A` is calling function `B` (that means is having a `(call b)` on its body) while compiling `A` we will have no idea where the function `B` lives on memory (as `B` is not yet compiled nor pushed into memory). - -For that reason, we will start collecting all the calls that function `A` will need to do under the hood, and save it's offsets. -We do that, so we can patch the function calls after compilation, to point to the correct memory address. - -Note: sometimes this functions rather than living in the same WebAssembly module, they will be provided as import values. - -#### Traps - -There will be other times where the function created will cause a trap (for example, if executing `0 / 0`). -When this happens, we will save the offset of the trap (while the function is being compiled). - -Thanks to that when we execute a function, if it traps (that means a sigaction is called), we would be able to backtrack from a memory address to a specific trap case. - -### Phase 3: Finalizing - -Once all the functions are compiled and patched with the proper relocations addresses, we will initialize the corresponding tables (where we save the pointers to all the exported functions), memories and globals that the instance need. - -Once that's finished, we will have a `Instance` function that will be ready to execute any function we need. - -## Emscripten - -Wasmer's Emscripten integration tries to wrap (and emulate) all the different syscalls that Emscripten needs. -We provide this integration by filling the `import_object` with the Emscripten functions, while instantiating the WebAssembly Instance. - -## WASI - -Wasmer's WASI integration implements all the different syscalls that WASI needs. -We provide this integration by filling the `import_object` with the WASI functions, while instantiating the WebAssembly Instance. diff --git a/docs/debugging.md b/docs/debugging.md deleted file mode 100644 index 8d49d5217..000000000 --- a/docs/debugging.md +++ /dev/null @@ -1,50 +0,0 @@ -# Debugging Wasmer - -## When is this document useful? - -If you're developing wasmer or running into issues, this document will explain to useful techniques and common errors. - -## Tracing syscalls - -To trace syscalls, compile with the `debug` feature (`cargo build --features "debug"`). For even more verbose messages, use the `trace` flag. - -## Tracing calls - -TODO: did we disable tracing calls? if not talk about how to enable it -TODO: someone with more context on the backends mention which backends this works for - -If you'd like to see all calls and you're using emscripten, you can use a symbol map to get better error output with the `em-symbol-map` flag. - -## Common things that can go wrong - -### Missing imports - -If, when attempting to run a wasm module, you get an error about missing imports there are a number of things that could be going wrong. - -The most likely is that we haven't implemented those imports for your ABI. If you're targeting emscripten, this is probably the issue. - -However if that's not the case, then there's a chance that you're using an unsupported ABI (let us know!) or that the wasm is invalid for the detected ABI. (TODO: link to wasm contracts or something) - -### Hitting `undefined` - -If this happens it's because wasmer does not have full support for whatever feature you tried to use. Running with tracing on can help clarify the issue if it's not clear from the message. - -To fix this, file an issue letting us know that wasmer is missing a feature that's important to you. If you'd like, you can try to implement it yourself and send us a PR. - -### No output - -If you're seeing no output from running the wasm module then it may be that: -- this is the intended behavior of the wasm module -- or it's very slow to compile (try compiling with a faster backend like cranelift (the default) or singlepass (requires nightly)) - -### Segfault - -If you're seeing a segfault while developing wasmer, chances are that it's a cache issue. We reset the cache on every version bump, but if you're running it from source then the cache may become invalid, which can lead to segfaults. - -To fix this delete the cache with `wasmer cache clean` or run the command with the `disable-cache` flag (`wasmer run some.wasm --disable-cache`) - -If you're seeing a segfault with a released version of wasmer, please file an issue so we can ship an updated version as soon as possible. - -### Something else - -If none of this has helped with your issue, let us know and we'll do our best to help. diff --git a/docs/docker.md b/docs/docker.md deleted file mode 100644 index 2086284f7..000000000 --- a/docs/docker.md +++ /dev/null @@ -1,39 +0,0 @@ -# Dockerfile Documentation -The `Dockerfile` included in the project root directory could be used for development purposes or to build a small image containing the `wasmer` executable. - -The `wasmer-build-env` stage in the Dockerfile contains the dependencies needed to compile Wasmer including LLVM. - -The `wasmer-debug-env` stage adds the `valgrind` profiling tool to the `wasmer-build-env` stage. - -The `wasmer-build` stage in the Dockerfile will copy the current directory, assuming the build context is the `wasmer` project, and build the project using `cargo build --release`. - -The `wasmer` stage will copy the resulting `wasmer` executable from the `wasmer-build` stage into a new base image to create a smaller image containing `wasmer`. - -## Example Usages - -### Wasmer image -1. From the `wasmer` project directory, build the image: -`docker build -t wasmer --target=wasmer .` - -2. List options: -`docker run wasmer --help` - -3. Mount a directory, and run an example wasm file: -`docker run -v /Users/admin/Documents/wasmer-workspace:/root/wasmer-workspace wasmer run /root/wasmer-workspace/examples/hello.wasm` - -### Profiling -1. Build `wasmer-debug-env`: - `docker build --tag=wasmer-debug-env --target wasmer-debug-env .` - -2. Mount a directory from the host and run interactively: - `docker run -it -v /Users/admin/Documents/wasmer-workspace:/home/circleci/wasmer-workspace wasmer-debug-env /bin/bash` - -3. Inside the container, build `wasmer` and run profiling tool: -``` -cd /home/circleci/wasmer-workspace/wasmer` -cargo build -valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --simulate-cache=yes target/debug/wasmer run test.wasm -``` - -The `callgrind.out` can be viewed with the `qcachegrind` tool on Mac OS (`brew install qcachegrind`). - diff --git a/docs/feature_matrix.md b/docs/feature_matrix.md deleted file mode 100644 index 18d303270..000000000 --- a/docs/feature_matrix.md +++ /dev/null @@ -1,42 +0,0 @@ -# Feature Table - -## Compiler Backend - -|   | Singlepass | Cranelift | LLVM | -| - | :-: | :-: | :-: | -| Caching | ✅ | ✅ | ✅ | -| Emscripten | ✅ | ✅ | ✅ | -| Metering | ✅ | ⬜ | ✅ | -| Multi-value return | ⬜ | ⬜ | ⬜ | -| OSR | 🔄 | ⬜ | 🔄 | -| SIMD | ⬜ | ⬜ | ✅ | -| WASI | ✅ | ✅ | ✅ | -| WASMER_BACKTRACE | ✅ | ⬜ | ⬜ | - -## Operating System -|   | GNU Linux | Mac OSX | Windows NT | -| - | :-: | :-: | :-: | -| Cranelift Backend | ✅ | ✅ | ✅ | -| LLVM Backend | ✅ | ✅ | ✅ | -| Singlepass Backend | ✅ | ✅ | [#347](https://github.com/wasmerio/wasmer/issues/347) | -| WASI | ✅ | ✅ | ✅* | - -* `poll_fd` is not fully implemented for Windows yet - -## Language integration - -TODO: define a set of features that are relevant and mark them here - -Current ideas: - -- Callbacks -- Metering -- Caching - -> TODO: expand this table, it's focused on new features that we haven't implemented yet and doesn't list all language integrations - -|   | Rust | C / C++ | Go | Python | Ruby | -| - | :-: | :-: | :-: | :-: | :-: | -| Terminate in host call | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | -| WASI | ✅ | ✅ | 🔄 | ⬜ | ⬜ | -| WASI FS API | ✅ | ⬜ | ⬜ | ⬜ | ⬜ | diff --git a/Dockerfile.build b/scripts/Dockerfile similarity index 100% rename from Dockerfile.build rename to scripts/Dockerfile diff --git a/build b/scripts/build similarity index 95% rename from build rename to scripts/build index eee434dbb..6c6b07b07 100755 --- a/build +++ b/scripts/build @@ -7,7 +7,7 @@ # To use the script, first make sure Docker is installed. Then build the # sandbox image with: # -# docker build --file Dockerfile.build --tag wasmer-build . +# docker build --file Dockerfile --tag wasmer-build . # # After the sandbox image is built successfully, you can run commands in it # with this script. diff --git a/install.sh b/scripts/install.sh similarity index 100% rename from install.sh rename to scripts/install.sh diff --git a/wapm-cli b/wapm-cli deleted file mode 160000 index 7996b1cb0..000000000 --- a/wapm-cli +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7996b1cb0e8418af5a312f5b033f4fb1b284464a From 2842baca821ae0a4f8980ba2853f93c66e98cea9 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 20 Feb 2020 14:49:55 -0800 Subject: [PATCH 15/22] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 730674401..84da80fbb 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,11 @@

- + + [Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) +

From f078d7d3f4ad1ebd32440ec4095e2f0993d9f0ea Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 20 Feb 2020 14:50:33 -0800 Subject: [PATCH 16/22] Update README.md --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 84da80fbb..882f22c54 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,10 @@ Wasmer logo

-

- [Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) - -

-

+

Build Status From 1901c5088c0318e3da859a0381caa43e8021684b Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 15:05:11 -0800 Subject: [PATCH 17/22] Deleted unused dockerignore --- .dockerignore | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 29fd6ce6b..000000000 --- a/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -# Ignore everything -** -!lib/** -!src/** -!examples/** -!Cargo.toml -!Cargo.lock \ No newline at end of file From 51f906a25a469f6555eaf2e0cd319c54784a9713 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 15:08:26 -0800 Subject: [PATCH 18/22] Fixed docs links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 882f22c54..0df19f587 100644 --- a/README.md +++ b/README.md @@ -98,11 +98,11 @@ Wasmer runtime can be used as a library embedded in different languages, so you **We welcome any form of contribution, especially from new members of our community** 💜 -You can check how to build the Wasmer runtime in [our awesome docs]([https://docs.wasmer.io/ecosystem/wasmer/building-from-source](https://new-docs.wasmer.io/ecosystem/wasmer/building-from-source))! +You can check how to build the Wasmer runtime in [our awesome docs](https://docs.wasmer.io/ecosystem/wasmer/building-from-source)! ### Testing -Test you want? The [Wasmer docs will show you how](https://new-docs.wasmer.io/ecosystem/wasmer/building-from-source/testing). +Test you want? The [Wasmer docs will show you how](https://docs.wasmer.io/ecosystem/wasmer/building-from-source/testing). ## Community From 25eb86afe3bdea9f661805d55420902c86014166 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 15:10:57 -0800 Subject: [PATCH 19/22] Remove make wapm from Makefile --- Makefile | 3 --- azure-pipelines.yml | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Makefile b/Makefile index a7b1039e9..9d85fa499 100644 --- a/Makefile +++ b/Makefile @@ -350,6 +350,3 @@ docs-publish: cd api-docs-repo && git add index.html crates/* c/* cd api-docs-repo && (git diff-index --quiet HEAD || git commit -m "Publishing GitHub Pages") cd api-docs-repo && git push origin gh-pages - -wapm: - cargo build --release --manifest-path wapm-cli/Cargo.toml --features "telemetry update-notifications" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 75bec4daf..25c9cb166 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -144,7 +144,7 @@ jobs: condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) - bash: | git clone --branch $WAPM_VERSION https://github.com/wasmerio/wapm-cli.git - make wapm + cargo build --release --manifest-path wapm-cli/Cargo.toml --features "telemetry update-notifications" displayName: Build WAPM condition: | startsWith(variables['Build.SourceBranch'], 'refs/tags') From 22f8b416676b58913728e5ab6dfc1550eca6167f Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 15:11:52 -0800 Subject: [PATCH 20/22] Improved Homebrew message --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 0df19f587..d3f52fa3b 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,6 @@ curl https://get.wasmer.io -sSfL | sh

Alternative: Install with Homebrew

-If you have [Homebrew](https://brew.sh/) installed in your system: - ```sh brew install wasmer ``` From 903d2f7344304b6f6b4ae0bac5bad9dc5edf3c94 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 20 Feb 2020 15:26:30 -0800 Subject: [PATCH 21/22] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d3f52fa3b..7fedc6999 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,8 @@ Wasmer logo

- -[Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) -

+

Build Status @@ -19,6 +17,8 @@

+[Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) + [Wasmer](https://wasmer.io/) is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/): * *Universal*: Wasmer is available in **Linux, macOS and Windows** (for both x86 and [ARM](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c)) * *Pluggable*: Wasmer can be used from almost **any programming language** From 5455616463383a5886223d0042459610eae0d95a Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 20 Feb 2020 15:31:19 -0800 Subject: [PATCH 22/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fedc6999..57c017ff8 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ [Website](https://wasmer.io) • [Docs](https://docs.wasmer.io/) • [Examples](https://github.com/wasmerio/wasmer/tree/master/examples) • [Blog](https://medium.com/wasmer) • [Slack](https://slack.wasmer.io/) • [Twitter](https://twitter.com/wasmerio) [Wasmer](https://wasmer.io/) is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/): -* *Universal*: Wasmer is available in **Linux, macOS and Windows** (for both x86 and [ARM](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c)) +* *Universal*: Wasmer is available in **Linux, macOS and Windows** (for both Desktop and [ARM](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c)) * *Pluggable*: Wasmer can be used from almost **any programming language** * *Safe*: supporting [WASI](https://github.com/WebAssembly/WASI) and [Emscripten](https://emscripten.org/)