mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-12 13:55:33 +00:00
Merge branch 'master' into command/dash
This commit is contained in:
commit
5c20bbfe44
@ -49,8 +49,9 @@ install:
|
|||||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- git submodule update --init
|
|
||||||
- cargo build --release --verbose
|
- cargo build --release --verbose
|
||||||
|
- git submodule init
|
||||||
|
- git submodule update
|
||||||
# Cache wapm cli target in dir above to prevent breaking git submodule on windows
|
# Cache wapm cli target in dir above to prevent breaking git submodule on windows
|
||||||
- if not exist wapm-cli-target mkdir wapm-cli-target
|
- if not exist wapm-cli-target mkdir wapm-cli-target
|
||||||
- move wapm-cli-target wapm-cli
|
- move wapm-cli-target wapm-cli
|
||||||
|
@ -111,6 +111,10 @@ jobs:
|
|||||||
name: Debug flag checked
|
name: Debug flag checked
|
||||||
command: |
|
command: |
|
||||||
cargo check --features "debug" --release
|
cargo check --features "debug" --release
|
||||||
|
- run:
|
||||||
|
name: Check
|
||||||
|
command: |
|
||||||
|
make check
|
||||||
- run:
|
- run:
|
||||||
name: Release
|
name: Release
|
||||||
command: make release-fast
|
command: make release-fast
|
||||||
@ -163,6 +167,11 @@ jobs:
|
|||||||
ulimit -n 8000
|
ulimit -n 8000
|
||||||
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
|
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
|
||||||
make test
|
make test
|
||||||
|
- run:
|
||||||
|
name: Check
|
||||||
|
command: |
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
|
make check
|
||||||
- run:
|
- run:
|
||||||
name: Release
|
name: Release
|
||||||
command: |
|
command: |
|
||||||
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@ -1,7 +1,3 @@
|
|||||||
[submodule "wapm-cli"]
|
[submodule "wapm-cli"]
|
||||||
path = wapm-cli
|
path = wapm-cli
|
||||||
url = https://github.com/wasmerio/wapm-cli.git
|
url = https://github.com/wasmerio/wapm-cli.git
|
||||||
[submodule "lib/clif-backend/cranelift"]
|
|
||||||
path = lib/clif-backend/cranelift
|
|
||||||
url = https://github.com/wasmerio/cranelift
|
|
||||||
branch = wasmer
|
|
||||||
|
@ -5,6 +5,9 @@ All PRs to the Wasmer repository must add to this file.
|
|||||||
Blocks of changes will separated by version increments.
|
Blocks of changes will separated by version increments.
|
||||||
|
|
||||||
## **[Unreleased]**
|
## **[Unreleased]**
|
||||||
|
- [#554](https://github.com/wasmerio/wasmer/pull/554) Finish implementation of `wasi::fd_seek`, fix bug in filestat
|
||||||
|
|
||||||
|
## 0.5.5
|
||||||
- [#541](https://github.com/wasmerio/wasmer/pull/541) Fix dependency graph by making separate test crates; ABI implementations should not depend on compilers. Add Cranelift fork as git submodule of clif-backend
|
- [#541](https://github.com/wasmerio/wasmer/pull/541) Fix dependency graph by making separate test crates; ABI implementations should not depend on compilers. Add Cranelift fork as git submodule of clif-backend
|
||||||
- [#537](https://github.com/wasmerio/wasmer/pull/537) Add hidden flag (`--cache-key`) to use prehashed key into the compiled wasm cache and change compiler backend-specific caching to use directories
|
- [#537](https://github.com/wasmerio/wasmer/pull/537) Add hidden flag (`--cache-key`) to use prehashed key into the compiled wasm cache and change compiler backend-specific caching to use directories
|
||||||
- [#536](https://github.com/wasmerio/wasmer/pull/536) ~Update cache to use compiler backend name in cache key~
|
- [#536](https://github.com/wasmerio/wasmer/pull/536) ~Update cache to use compiler backend name in cache key~
|
||||||
|
245
Cargo.lock
generated
245
Cargo.lock
generated
@ -245,20 +245,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-bforest"
|
name = "cranelift-bforest"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-entity 0.31.0",
|
"cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen"
|
name = "cranelift-codegen"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-bforest 0.31.0",
|
"cranelift-bforest 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-codegen-meta 0.31.0",
|
"cranelift-codegen-meta 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-entity 0.31.0",
|
"cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -266,49 +267,26 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-meta"
|
name = "cranelift-codegen-meta"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-entity 0.31.0",
|
"cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-entity"
|
name = "cranelift-entity"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
[[package]]
|
|
||||||
name = "cranelift-frontend"
|
|
||||||
version = "0.31.0"
|
|
||||||
dependencies = [
|
|
||||||
"cranelift-codegen 0.31.0",
|
|
||||||
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-native"
|
name = "cranelift-native"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen 0.31.0",
|
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cranelift-wasm"
|
|
||||||
version = "0.31.0"
|
|
||||||
dependencies = [
|
|
||||||
"cranelift-codegen 0.31.0",
|
|
||||||
"cranelift-entity 0.31.0",
|
|
||||||
"cranelift-frontend 0.31.0",
|
|
||||||
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "criterion"
|
name = "criterion"
|
||||||
version = "0.2.11"
|
version = "0.2.11"
|
||||||
@ -548,16 +526,6 @@ dependencies = [
|
|||||||
"serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashbrown"
|
|
||||||
version = "0.5.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashmap_core"
|
|
||||||
version = "0.1.10"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "heck"
|
name = "heck"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@ -712,19 +680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.12.0"
|
version = "0.14.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nix"
|
|
||||||
version = "0.13.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1421,7 +1377,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer"
|
name = "wasmer"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1430,55 +1386,79 @@ dependencies = [
|
|||||||
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"structopt 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
"structopt 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-dev-utils 0.5.4",
|
"wasmer-dev-utils 0.5.5",
|
||||||
"wasmer-emscripten 0.5.4",
|
"wasmer-emscripten 0.5.5",
|
||||||
"wasmer-emscripten-tests 0.5.4",
|
"wasmer-emscripten-tests 0.5.5",
|
||||||
"wasmer-kernel-loader 0.1.0",
|
"wasmer-kernel-loader 0.1.0",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-middleware-common 0.5.4",
|
"wasmer-middleware-common 0.5.5",
|
||||||
"wasmer-runtime 0.5.4",
|
"wasmer-runtime 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
"wasmer-wasi 0.5.4",
|
"wasmer-wasi 0.5.5",
|
||||||
"wasmer-wasi-tests 0.5.4",
|
"wasmer-wasi-tests 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-clif-backend"
|
name = "wasmer-clif-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-codegen 0.31.0",
|
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-entity 0.31.0",
|
"cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-frontend 0.31.0",
|
"cranelift-native 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cranelift-native 0.31.0",
|
|
||||||
"cranelift-wasm 0.31.0",
|
|
||||||
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_bytes 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-clif-fork-frontend 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-win-exception-handler 0.5.4",
|
"wasmer-clif-fork-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"wasmer-runtime-core 0.5.5",
|
||||||
|
"wasmer-win-exception-handler 0.5.5",
|
||||||
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasmer-clif-fork-frontend"
|
||||||
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasmer-clif-fork-wasm"
|
||||||
|
version = "0.31.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"wasmer-clif-fork-frontend 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-dev-utils"
|
name = "wasmer-dev-utils"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-emscripten"
|
name = "wasmer-emscripten"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1486,21 +1466,21 @@ dependencies = [
|
|||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-emscripten-tests"
|
name = "wasmer-emscripten-tests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-dev-utils 0.5.4",
|
"wasmer-dev-utils 0.5.5",
|
||||||
"wasmer-emscripten 0.5.4",
|
"wasmer-emscripten 0.5.5",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1508,12 +1488,12 @@ name = "wasmer-kernel-loader"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-llvm-backend"
|
name = "wasmer-llvm-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"capstone 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1522,56 +1502,56 @@ dependencies = [
|
|||||||
"inkwell 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm7-0)",
|
"inkwell 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm7-0)",
|
||||||
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-middleware-common"
|
name = "wasmer-middleware-common"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-runtime"
|
name = "wasmer-runtime"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-runtime-c-api"
|
name = "wasmer-runtime-c-api"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cbindgen 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cbindgen 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime 0.5.4",
|
"wasmer-runtime 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-runtime-core"
|
name = "wasmer-runtime-core"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1585,7 +1565,7 @@ dependencies = [
|
|||||||
"indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1600,7 +1580,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-singlepass-backend"
|
name = "wasmer-singlepass-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1609,26 +1589,26 @@ dependencies = [
|
|||||||
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-spectests"
|
name = "wasmer-spectests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-wasi"
|
name = "wasmer-wasi"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"generational-arena 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -1636,32 +1616,32 @@ dependencies = [
|
|||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-wasi-tests"
|
name = "wasmer-wasi-tests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-clif-backend 0.5.4",
|
"wasmer-clif-backend 0.5.5",
|
||||||
"wasmer-dev-utils 0.5.4",
|
"wasmer-dev-utils 0.5.5",
|
||||||
"wasmer-llvm-backend 0.5.4",
|
"wasmer-llvm-backend 0.5.5",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"wasmer-singlepass-backend 0.5.4",
|
"wasmer-singlepass-backend 0.5.5",
|
||||||
"wasmer-wasi 0.5.4",
|
"wasmer-wasi 0.5.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasmer-win-exception-handler"
|
name = "wasmer-win-exception-handler"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"cmake 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cmake 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.57 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"wasmer-runtime-core 0.5.4",
|
"wasmer-runtime-core 0.5.5",
|
||||||
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1669,9 +1649,6 @@ dependencies = [
|
|||||||
name = "wasmparser"
|
name = "wasmparser"
|
||||||
version = "0.32.1"
|
version = "0.32.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
|
||||||
"hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "which"
|
name = "which"
|
||||||
@ -1768,6 +1745,11 @@ dependencies = [
|
|||||||
"checksum cmake 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "2ca4386c8954b76a8415b63959337d940d724b336cabd3afe189c2b51a7e1ff0"
|
"checksum cmake 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "2ca4386c8954b76a8415b63959337d940d724b336cabd3afe189c2b51a7e1ff0"
|
||||||
"checksum colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6cdb90b60f2927f8d76139c72dbde7e10c3a2bc47c8594c9c7a66529f2687c03"
|
"checksum colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6cdb90b60f2927f8d76139c72dbde7e10c3a2bc47c8594c9c7a66529f2687c03"
|
||||||
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
|
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
|
||||||
|
"checksum cranelift-bforest 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "409f92af3dd276e112b72873a3ef02613e3c5f55b81d5d5d04f3157d4f8b8c54"
|
||||||
|
"checksum cranelift-codegen 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b303542a56fba4cbaeea099fb30ed078b50de0e765fd69f7f5f410adbe31d95b"
|
||||||
|
"checksum cranelift-codegen-meta 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0fee15ed430092a6d14b7c6d627540bef732509b8097ae31e4e35526edaa129c"
|
||||||
|
"checksum cranelift-entity 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "739222c3740e4a8d6f0375bd95caba9b6c11afcba9f0e1d4f944d6bd99f84600"
|
||||||
|
"checksum cranelift-native 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce451162d18b7d82118e23ea7e12f7d8b98557549404bd71215548de79eb0736"
|
||||||
"checksum criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394"
|
"checksum criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394"
|
||||||
"checksum criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e"
|
"checksum criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e"
|
||||||
"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3"
|
"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3"
|
||||||
@ -1793,8 +1775,6 @@ dependencies = [
|
|||||||
"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
|
"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
|
||||||
"checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d"
|
"checksum goblin 0.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "84473a5302fa5094d3d9911c2f312f522f9a37462a777f195f63fae1bf7faf4d"
|
||||||
"checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da"
|
"checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da"
|
||||||
"checksum hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353"
|
|
||||||
"checksum hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8e04cb7a5051270ef3fa79f8c7604d581ecfa73d520e74f554e45541c4b5881a"
|
|
||||||
"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
|
"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
|
||||||
"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
|
"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
|
||||||
"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
|
"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
|
||||||
@ -1814,8 +1794,7 @@ dependencies = [
|
|||||||
"checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff"
|
"checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff"
|
||||||
"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
|
"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
|
||||||
"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
|
"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
|
||||||
"checksum nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "921f61dc817b379d0834e45d5ec45beaacfae97082090a49c2cf30dcbc30206f"
|
"checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce"
|
||||||
"checksum nix 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46f0f3210768d796e8fa79ec70ee6af172dacbe7147f5e69be5240a47778302b"
|
|
||||||
"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
|
"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
|
||||||
"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
|
"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
|
||||||
"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
|
"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
|
||||||
@ -1901,6 +1880,8 @@ dependencies = [
|
|||||||
"checksum wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "74e463a508e390cc7447e70f640fbf44ad52e1bd095314ace1fdf99516d32add"
|
"checksum wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "74e463a508e390cc7447e70f640fbf44ad52e1bd095314ace1fdf99516d32add"
|
||||||
"checksum wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a6265b25719e82598d104b3717375e37661d41753e2c84cde3f51050c7ed7e3c"
|
"checksum wabt-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a6265b25719e82598d104b3717375e37661d41753e2c84cde3f51050c7ed7e3c"
|
||||||
"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
|
"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
|
||||||
|
"checksum wasmer-clif-fork-frontend 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "620fd484c3348e4bb565d861cddb0c05170337aaa152b6ba61620d054ab17cd9"
|
||||||
|
"checksum wasmer-clif-fork-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5e42fa4281de137d5a23b8197d29c218212077c6d55d0dfed7bb80c76308ba4"
|
||||||
"checksum wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)" = "22d1801de30f112ddaf665291097694ee33a36d1cb414b53a921d05b3519674a"
|
"checksum wasmparser 0.32.1 (registry+https://github.com/rust-lang/crates.io-index)" = "22d1801de30f112ddaf665291097694ee33a36d1cb414b53a921d05b3519674a"
|
||||||
"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164"
|
"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164"
|
||||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer"
|
name = "wasmer"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
repository = "https://github.com/wasmerio/wasmer"
|
repository = "https://github.com/wasmerio/wasmer"
|
||||||
@ -67,14 +67,14 @@ rustc_version = "0.2.3"
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["fast-tests", "wasi"]
|
default = ["fast-tests", "wasi"]
|
||||||
"loader:kernel" = ["wasmer-kernel-loader"]
|
"loader-kernel" = ["wasmer-kernel-loader"]
|
||||||
debug = ["wasmer-runtime-core/debug"]
|
debug = ["wasmer-runtime-core/debug"]
|
||||||
trace = ["wasmer-runtime-core/trace"]
|
trace = ["wasmer-runtime-core/trace"]
|
||||||
extra-debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"]
|
extra-debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"]
|
||||||
# This feature will allow cargo test to run much faster
|
# This feature will allow cargo test to run much faster
|
||||||
fast-tests = []
|
fast-tests = []
|
||||||
"backend:llvm" = ["wasmer-llvm-backend", "wasmer-runtime-core/backend:llvm"]
|
"backend-llvm" = ["wasmer-llvm-backend", "wasmer-runtime-core/backend-llvm"]
|
||||||
"backend:singlepass" = ["wasmer-singlepass-backend", "wasmer-runtime-core/backend:singlepass"]
|
"backend-singlepass" = ["wasmer-singlepass-backend", "wasmer-runtime-core/backend-singlepass"]
|
||||||
wasi = ["wasmer-wasi"]
|
wasi = ["wasmer-wasi"]
|
||||||
# vfs = ["wasmer-runtime-abi"]
|
# vfs = ["wasmer-runtime-abi"]
|
||||||
|
|
||||||
|
11
Makefile
11
Makefile
@ -112,13 +112,16 @@ lint:
|
|||||||
precommit: lint test
|
precommit: lint test
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
cargo build --release --features backend:singlepass,debug,trace
|
cargo build --release --features backend-singlepass,debug,trace
|
||||||
|
|
||||||
install:
|
install:
|
||||||
cargo install --path .
|
cargo install --path .
|
||||||
|
|
||||||
|
check:
|
||||||
|
cargo check --release --features backend-singlepass,backend-llvm,loader-kernel
|
||||||
|
|
||||||
release:
|
release:
|
||||||
cargo build --release --features backend:singlepass,backend:llvm,loader:kernel
|
cargo build --release --features backend-singlepass,backend-llvm,loader-kernel
|
||||||
|
|
||||||
# Only one backend (cranelift)
|
# Only one backend (cranelift)
|
||||||
release-fast:
|
release-fast:
|
||||||
@ -127,10 +130,10 @@ release-fast:
|
|||||||
cargo build --release
|
cargo build --release
|
||||||
|
|
||||||
release-singlepass:
|
release-singlepass:
|
||||||
cargo build --release --features backend:singlepass
|
cargo build --release --features backend-singlepass
|
||||||
|
|
||||||
release-llvm:
|
release-llvm:
|
||||||
cargo build --release --features backend:llvm
|
cargo build --release --features backend-llvm
|
||||||
|
|
||||||
bench:
|
bench:
|
||||||
cargo bench --all
|
cargo bench --all
|
||||||
|
4
fuzz/.gitignore
vendored
Normal file
4
fuzz/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
target
|
||||||
|
corpus
|
||||||
|
artifacts
|
21
fuzz/Cargo.toml
Normal file
21
fuzz/Cargo.toml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
[package]
|
||||||
|
name = "wasmer-fuzz"
|
||||||
|
version = "0.0.1"
|
||||||
|
authors = ["Automatically generated"]
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
cargo-fuzz = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
wasmer-runtime = { path = "../lib/runtime" }
|
||||||
|
libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git" }
|
||||||
|
|
||||||
|
# Prevent this from interfering with workspaces
|
||||||
|
[workspace]
|
||||||
|
members = ["."]
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "simple_instantiate"
|
||||||
|
path = "fuzz_targets/simple_instantiate.rs"
|
38
fuzz/README.md
Normal file
38
fuzz/README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
This directory contains the fuzz tests for wasmer. To fuzz, we use the `cargo-fuzz` package.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
You may need to install the `cargo-fuzz` package to get the `cargo fuzz` subcommand. Use
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ cargo install cargo-fuzz
|
||||||
|
```
|
||||||
|
|
||||||
|
`cargo-fuzz` is documented in the [Rust Fuzz Book](https://rust-fuzz.github.io/book/cargo-fuzz.html).
|
||||||
|
|
||||||
|
## Running a fuzzer
|
||||||
|
|
||||||
|
Once `cargo-fuzz` is installed, you can run the `simple_instantiate` fuzzer with
|
||||||
|
```sh
|
||||||
|
cargo fuzz run simple_instantiate
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see output that looks something like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
INFO: Seed: 3276026494
|
||||||
|
INFO: 8 files found in wasmer/fuzz/corpus/simple_instantiate
|
||||||
|
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
|
||||||
|
INFO: seed corpus: files: 8 min: 1b max: 1b total: 8b rss: 133Mb
|
||||||
|
#9 INITED ft: 3 corp: 3/3b lim: 4 exec/s: 0 rss: 142Mb
|
||||||
|
#23 NEW ft: 4 corp: 4/5b lim: 4 exec/s: 0 rss: 142Mb L: 2/2 MS: 4 ChangeByte-InsertByte-ShuffleBytes-ChangeBit-
|
||||||
|
#25 NEW ft: 5 corp: 5/6b lim: 4 exec/s: 0 rss: 142Mb L: 1/2 MS: 2 ChangeBinInt-ChangeBit-
|
||||||
|
#27 NEW ft: 6 corp: 6/9b lim: 4 exec/s: 0 rss: 142Mb L: 3/3 MS: 2 InsertByte-ChangeByte-
|
||||||
|
#190 REDUCE ft: 6 corp: 6/7b lim: 4 exec/s: 0 rss: 142Mb L: 1/2 MS: 3 ChangeBit-EraseBytes-CrossOver-
|
||||||
|
#205 REDUCE ft: 7 corp: 7/11b lim: 4 exec/s: 0 rss: 142Mb L: 4/4 MS: 5 ShuffleBytes-CrossOver-InsertByte-ChangeBinInt-CrossOver-
|
||||||
|
```
|
||||||
|
It will continue to generate random inputs forever, until it finds a bug or is terminated. The testcases for bugs it finds go into `fuzz/artifacts/simple_instantiate` and you can rerun the fuzzer on a single input by passing it on the command line `cargo fuzz run simple_instantiate my_testcase.wasm`.
|
||||||
|
|
||||||
|
## Trophy case
|
||||||
|
|
||||||
|
- [x] https://github.com/wasmerio/wasmer/issues/558
|
13
fuzz/fuzz_targets/simple_instantiate.rs
Normal file
13
fuzz/fuzz_targets/simple_instantiate.rs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#![no_main]
|
||||||
|
#[macro_use] extern crate libfuzzer_sys;
|
||||||
|
extern crate wasmer_runtime;
|
||||||
|
|
||||||
|
use wasmer_runtime::{
|
||||||
|
instantiate,
|
||||||
|
imports,
|
||||||
|
};
|
||||||
|
|
||||||
|
fuzz_target!(|data: &[u8]| {
|
||||||
|
let import_object = imports! {};
|
||||||
|
instantiate(data, &import_object);
|
||||||
|
});
|
10
install.sh
10
install.sh
@ -365,10 +365,14 @@ wasmer_download() {
|
|||||||
|
|
||||||
# determine install directory if required
|
# determine install directory if required
|
||||||
if [ -z "$INSTALL_DIRECTORY" ]; then
|
if [ -z "$INSTALL_DIRECTORY" ]; then
|
||||||
# findWasmerBinDirectory INSTALL_DIRECTORY
|
if [ -z "$WASMER_DIR" ]; then
|
||||||
INSTALL_DIRECTORY="$HOME/.wasmer"
|
# If WASMER_DIR is not present
|
||||||
|
INSTALL_DIRECTORY="$HOME/.wasmer"
|
||||||
|
else
|
||||||
|
# If WASMER_DIR is present
|
||||||
|
INSTALL_DIRECTORY="${WASMER_DIR}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
WASMER=INSTALL_DIRECTORY
|
|
||||||
|
|
||||||
# assemble expected release artifact name
|
# assemble expected release artifact name
|
||||||
BINARY="wasmer-${OS}-${ARCH}.tar.gz"
|
BINARY="wasmer-${OS}-${ARCH}.tar.gz"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-clif-backend"
|
name = "wasmer-clif-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime Cranelift compiler backend"
|
description = "Wasmer runtime Cranelift compiler backend"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -8,17 +8,17 @@ repository = "https://github.com/wasmerio/wasmer"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
cranelift-native = { path = "cranelift/cranelift-native", version = "0.31" }
|
cranelift-native = { version = "0.31" }
|
||||||
cranelift-codegen = { path = "cranelift/cranelift-codegen", version = "0.31" }
|
cranelift-codegen = { version = "0.31" }
|
||||||
cranelift-entity = { path = "cranelift/cranelift-entity", version = "0.31" }
|
cranelift-entity = { version = "0.31" }
|
||||||
cranelift-frontend = { path = "cranelift/cranelift-frontend", version = "0.31" }
|
cranelift-frontend = { package = "wasmer-clif-fork-frontend", version = "0.31" }
|
||||||
cranelift-wasm = { path = "cranelift/cranelift-wasm", version = "0.31" }
|
cranelift-wasm = { package = "wasmer-clif-fork-wasm", version = "0.31" }
|
||||||
hashbrown = "0.1"
|
hashbrown = "0.1"
|
||||||
target-lexicon = "0.4.0"
|
target-lexicon = "0.4.0"
|
||||||
wasmparser = "0.32.1"
|
wasmparser = "0.32.1"
|
||||||
byteorder = "1"
|
byteorder = "1"
|
||||||
nix = "0.13.0"
|
nix = "0.14.0"
|
||||||
libc = "0.2.49"
|
libc = "0.2.49"
|
||||||
rayon = "1.0"
|
rayon = "1.0"
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ version = "0.0.7"
|
|||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] }
|
winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] }
|
||||||
wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.5.4" }
|
wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.5.5" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
debug = ["wasmer-runtime-core/debug"]
|
debug = ["wasmer-runtime-core/debug"]
|
||||||
|
@ -1 +0,0 @@
|
|||||||
Subproject commit 19b19f171cf4511660c5f2097af41a9b49774825
|
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-dev-utils"
|
name = "wasmer-dev-utils"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime core library"
|
description = "Wasmer runtime core library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-emscripten-tests"
|
name = "wasmer-emscripten-tests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Tests for our Emscripten implementation"
|
description = "Tests for our Emscripten implementation"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -9,15 +9,15 @@ publish = false
|
|||||||
build = "build/mod.rs"
|
build = "build/mod.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-emscripten = { path = "../emscripten", version = "0.5.4" }
|
wasmer-emscripten = { path = "../emscripten", version = "0.5.5" }
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.4" }
|
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.5" }
|
||||||
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.4", optional = true }
|
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.5", optional = true }
|
||||||
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.4", optional = true }
|
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.5", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
wabt = "0.7.2"
|
wabt = "0.7.2"
|
||||||
wasmer-dev-utils = { path = "../dev-utils", version = "0.5.4"}
|
wasmer-dev-utils = { path = "../dev-utils", version = "0.5.5"}
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
glob = "0.2.11"
|
glob = "0.2.11"
|
||||||
@ -25,4 +25,4 @@ glob = "0.2.11"
|
|||||||
[features]
|
[features]
|
||||||
clif = []
|
clif = []
|
||||||
llvm = ["wasmer-llvm-backend"]
|
llvm = ["wasmer-llvm-backend"]
|
||||||
singlepass = ["wasmer-singlepass-backend"]
|
singlepass = ["wasmer-singlepass-backend"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-emscripten"
|
name = "wasmer-emscripten"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime emscripten implementation library"
|
description = "Wasmer runtime emscripten implementation library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -13,10 +13,10 @@ hashbrown = "0.1"
|
|||||||
lazy_static = "1.2.0"
|
lazy_static = "1.2.0"
|
||||||
libc = "0.2.49"
|
libc = "0.2.49"
|
||||||
time = "0.1.41"
|
time = "0.1.41"
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
rand = "0.6"
|
rand = "0.6"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
debug = ["wasmer-runtime-core/debug"]
|
debug = ["wasmer-runtime-core/debug"]
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-llvm-backend"
|
name = "wasmer-llvm-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
authors = ["Lachlan Sneff <lachlan.sneff@gmail.com>"]
|
authors = ["Lachlan Sneff <lachlan.sneff@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" }
|
inkwell = { git = "https://github.com/wasmerio/inkwell", branch = "llvm7-0" }
|
||||||
wasmparser = "0.32.1"
|
wasmparser = "0.32.1"
|
||||||
hashbrown = "0.1.8"
|
hashbrown = "0.1.8"
|
||||||
smallvec = "0.6.8"
|
smallvec = "0.6.8"
|
||||||
goblin = "0.0.20"
|
goblin = "0.0.20"
|
||||||
libc = "0.2.49"
|
libc = "0.2.49"
|
||||||
nix = "0.13.0"
|
nix = "0.14.0"
|
||||||
capstone = { version = "0.5.0", optional = true }
|
capstone = { version = "0.5.0", optional = true }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
@ -60,106 +60,37 @@ fn type_to_llvm(intrinsics: &Intrinsics, ty: Type) -> BasicTypeEnum {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn trap_if_not_representatable_as_int(
|
fn trap_if_not_representable_as_int(
|
||||||
builder: &Builder,
|
builder: &Builder,
|
||||||
intrinsics: &Intrinsics,
|
intrinsics: &Intrinsics,
|
||||||
context: &Context,
|
context: &Context,
|
||||||
function: &FunctionValue,
|
function: &FunctionValue,
|
||||||
lower_bounds: f64,
|
lower_bound: f64,
|
||||||
upper_bound: f64,
|
upper_bound: f64,
|
||||||
value: FloatValue,
|
value: FloatValue,
|
||||||
) {
|
) {
|
||||||
enum FloatSize {
|
let float_ty = value.get_type();
|
||||||
Bits32,
|
|
||||||
Bits64,
|
let lower_bound = float_ty.const_float(lower_bound);
|
||||||
}
|
let upper_bound = float_ty.const_float(upper_bound);
|
||||||
|
|
||||||
|
// The 'U' in the float predicate is short for "unordered" which means that
|
||||||
|
// the comparison will compare true if either operand is a NaN. Thus, NaNs
|
||||||
|
// are out of bounds.
|
||||||
|
let above_upper_bound_cmp =
|
||||||
|
builder.build_float_compare(FloatPredicate::UGT, value, upper_bound, "above_upper_bound");
|
||||||
|
let below_lower_bound_cmp =
|
||||||
|
builder.build_float_compare(FloatPredicate::ULT, value, lower_bound, "below_lower_bound");
|
||||||
|
let out_of_bounds = builder.build_or(
|
||||||
|
above_upper_bound_cmp,
|
||||||
|
below_lower_bound_cmp,
|
||||||
|
"out_of_bounds",
|
||||||
|
);
|
||||||
|
|
||||||
let failure_block = context.append_basic_block(function, "conversion_failure_block");
|
let failure_block = context.append_basic_block(function, "conversion_failure_block");
|
||||||
let continue_block = context.append_basic_block(function, "conversion_success_block");
|
let continue_block = context.append_basic_block(function, "conversion_success_block");
|
||||||
|
|
||||||
let float_ty = value.get_type();
|
builder.build_conditional_branch(out_of_bounds, &failure_block, &continue_block);
|
||||||
let (int_ty, float_ptr_ty, float_size) = if float_ty == intrinsics.f32_ty {
|
|
||||||
(intrinsics.i32_ty, intrinsics.f32_ptr_ty, FloatSize::Bits32)
|
|
||||||
} else if float_ty == intrinsics.f64_ty {
|
|
||||||
(intrinsics.i64_ty, intrinsics.f64_ptr_ty, FloatSize::Bits64)
|
|
||||||
} else {
|
|
||||||
unreachable!()
|
|
||||||
};
|
|
||||||
|
|
||||||
let (exponent, invalid_exponent) = {
|
|
||||||
let float_bits = {
|
|
||||||
let space = builder.build_alloca(int_ty, "space");
|
|
||||||
let float_ptr = builder.build_pointer_cast(space, float_ptr_ty, "float_ptr");
|
|
||||||
builder.build_store(float_ptr, value);
|
|
||||||
builder.build_load(space, "float_bits").into_int_value()
|
|
||||||
};
|
|
||||||
|
|
||||||
let (shift_amount, exponent_mask, invalid_exponent) = match float_size {
|
|
||||||
FloatSize::Bits32 => (23, 0b01111111100000000000000000000000, 0b11111111),
|
|
||||||
FloatSize::Bits64 => (
|
|
||||||
52,
|
|
||||||
0b0111111111110000000000000000000000000000000000000000000000000000,
|
|
||||||
0b11111111111,
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
builder.build_and(
|
|
||||||
float_bits,
|
|
||||||
int_ty.const_int(exponent_mask, false),
|
|
||||||
"masked_bits",
|
|
||||||
);
|
|
||||||
|
|
||||||
(
|
|
||||||
builder.build_right_shift(
|
|
||||||
float_bits,
|
|
||||||
int_ty.const_int(shift_amount, false),
|
|
||||||
false,
|
|
||||||
"exponent",
|
|
||||||
),
|
|
||||||
invalid_exponent,
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
let is_invalid_float = builder.build_or(
|
|
||||||
builder.build_int_compare(
|
|
||||||
IntPredicate::EQ,
|
|
||||||
exponent,
|
|
||||||
int_ty.const_int(invalid_exponent, false),
|
|
||||||
"is_not_normal",
|
|
||||||
),
|
|
||||||
builder.build_or(
|
|
||||||
builder.build_float_compare(
|
|
||||||
FloatPredicate::ULT,
|
|
||||||
value,
|
|
||||||
float_ty.const_float(lower_bounds),
|
|
||||||
"less_than_lower_bounds",
|
|
||||||
),
|
|
||||||
builder.build_float_compare(
|
|
||||||
FloatPredicate::UGT,
|
|
||||||
value,
|
|
||||||
float_ty.const_float(upper_bound),
|
|
||||||
"greater_than_upper_bounds",
|
|
||||||
),
|
|
||||||
"float_not_in_bounds",
|
|
||||||
),
|
|
||||||
"is_invalid_float",
|
|
||||||
);
|
|
||||||
|
|
||||||
let is_invalid_float = builder
|
|
||||||
.build_call(
|
|
||||||
intrinsics.expect_i1,
|
|
||||||
&[
|
|
||||||
is_invalid_float.as_basic_value_enum(),
|
|
||||||
intrinsics.i1_ty.const_int(0, false).as_basic_value_enum(),
|
|
||||||
],
|
|
||||||
"is_invalid_float_expect",
|
|
||||||
)
|
|
||||||
.try_as_basic_value()
|
|
||||||
.left()
|
|
||||||
.unwrap()
|
|
||||||
.into_int_value();
|
|
||||||
|
|
||||||
builder.build_conditional_branch(is_invalid_float, &failure_block, &continue_block);
|
|
||||||
builder.position_at_end(&failure_block);
|
builder.position_at_end(&failure_block);
|
||||||
builder.build_call(
|
builder.build_call(
|
||||||
intrinsics.throw_trap,
|
intrinsics.throw_trap,
|
||||||
@ -1726,7 +1657,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I32TruncSF32 => {
|
Operator::I32TruncSF32 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1741,7 +1672,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I32TruncSF64 => {
|
Operator::I32TruncSF64 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1762,7 +1693,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I64TruncSF32 => {
|
Operator::I64TruncSF32 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1777,7 +1708,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I64TruncSF64 => {
|
Operator::I64TruncSF64 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1798,7 +1729,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I32TruncUF32 => {
|
Operator::I32TruncUF32 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1813,7 +1744,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I32TruncUF64 => {
|
Operator::I32TruncUF64 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1834,7 +1765,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I64TruncUF32 => {
|
Operator::I64TruncUF32 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1849,7 +1780,7 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I64TruncUF64 => {
|
Operator::I64TruncUF64 => {
|
||||||
let v1 = state.pop1()?.into_float_value();
|
let v1 = state.pop1()?.into_float_value();
|
||||||
trap_if_not_representatable_as_int(
|
trap_if_not_representable_as_int(
|
||||||
builder,
|
builder,
|
||||||
intrinsics,
|
intrinsics,
|
||||||
context,
|
context,
|
||||||
@ -1904,43 +1835,23 @@ impl FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator {
|
|||||||
}
|
}
|
||||||
Operator::I32ReinterpretF32 => {
|
Operator::I32ReinterpretF32 => {
|
||||||
let v = state.pop1()?;
|
let v = state.pop1()?;
|
||||||
let space =
|
let ret = builder.build_bitcast(v, intrinsics.i32_ty, &state.var_name());
|
||||||
builder.build_alloca(intrinsics.i32_ty.as_basic_type_enum(), &state.var_name());
|
state.push1(ret);
|
||||||
let f32_space =
|
|
||||||
builder.build_pointer_cast(space, intrinsics.f32_ptr_ty, &state.var_name());
|
|
||||||
builder.build_store(f32_space, v);
|
|
||||||
let int = builder.build_load(space, &state.var_name());
|
|
||||||
state.push1(int);
|
|
||||||
}
|
}
|
||||||
Operator::I64ReinterpretF64 => {
|
Operator::I64ReinterpretF64 => {
|
||||||
let v = state.pop1()?;
|
let v = state.pop1()?;
|
||||||
let space =
|
let ret = builder.build_bitcast(v, intrinsics.i64_ty, &state.var_name());
|
||||||
builder.build_alloca(intrinsics.i64_ty.as_basic_type_enum(), &state.var_name());
|
state.push1(ret);
|
||||||
let f64_space =
|
|
||||||
builder.build_pointer_cast(space, intrinsics.f64_ptr_ty, &state.var_name());
|
|
||||||
builder.build_store(f64_space, v);
|
|
||||||
let int = builder.build_load(space, &state.var_name());
|
|
||||||
state.push1(int);
|
|
||||||
}
|
}
|
||||||
Operator::F32ReinterpretI32 => {
|
Operator::F32ReinterpretI32 => {
|
||||||
let v = state.pop1()?;
|
let v = state.pop1()?;
|
||||||
let space =
|
let ret = builder.build_bitcast(v, intrinsics.f32_ty, &state.var_name());
|
||||||
builder.build_alloca(intrinsics.f32_ty.as_basic_type_enum(), &state.var_name());
|
state.push1(ret);
|
||||||
let i32_space =
|
|
||||||
builder.build_pointer_cast(space, intrinsics.i32_ptr_ty, &state.var_name());
|
|
||||||
builder.build_store(i32_space, v);
|
|
||||||
let f = builder.build_load(space, &state.var_name());
|
|
||||||
state.push1(f);
|
|
||||||
}
|
}
|
||||||
Operator::F64ReinterpretI64 => {
|
Operator::F64ReinterpretI64 => {
|
||||||
let v = state.pop1()?;
|
let v = state.pop1()?;
|
||||||
let space =
|
let ret = builder.build_bitcast(v, intrinsics.f64_ty, &state.var_name());
|
||||||
builder.build_alloca(intrinsics.f64_ty.as_basic_type_enum(), &state.var_name());
|
state.push1(ret);
|
||||||
let i64_space =
|
|
||||||
builder.build_pointer_cast(space, intrinsics.i64_ptr_ty, &state.var_name());
|
|
||||||
builder.build_store(i64_space, v);
|
|
||||||
let f = builder.build_load(space, &state.var_name());
|
|
||||||
state.push1(f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************
|
/***************************
|
||||||
@ -2607,13 +2518,19 @@ impl ModuleCodeGenerator<LLVMFunctionCodeGenerator, LLVMBackend, CodegenError>
|
|||||||
if cfg!(test) {
|
if cfg!(test) {
|
||||||
pass_manager.add_verifier_pass();
|
pass_manager.add_verifier_pass();
|
||||||
}
|
}
|
||||||
pass_manager.add_function_inlining_pass();
|
pass_manager.add_lower_expect_intrinsic_pass();
|
||||||
pass_manager.add_promote_memory_to_register_pass();
|
pass_manager.add_scalar_repl_aggregates_pass();
|
||||||
|
pass_manager.add_instruction_combining_pass();
|
||||||
pass_manager.add_cfg_simplification_pass();
|
pass_manager.add_cfg_simplification_pass();
|
||||||
pass_manager.add_aggressive_inst_combiner_pass();
|
pass_manager.add_gvn_pass();
|
||||||
pass_manager.add_merged_load_store_motion_pass();
|
pass_manager.add_jump_threading_pass();
|
||||||
pass_manager.add_new_gvn_pass();
|
pass_manager.add_correlated_value_propagation_pass();
|
||||||
pass_manager.add_aggressive_dce_pass();
|
pass_manager.add_sccp_pass();
|
||||||
|
pass_manager.add_instruction_combining_pass();
|
||||||
|
pass_manager.add_reassociate_pass();
|
||||||
|
pass_manager.add_cfg_simplification_pass();
|
||||||
|
pass_manager.add_bit_tracking_dce_pass();
|
||||||
|
pass_manager.add_slp_vectorize_pass();
|
||||||
pass_manager.run_on_module(&self.module);
|
pass_manager.run_on_module(&self.module);
|
||||||
|
|
||||||
// self.module.print_to_stderr();
|
// self.module.print_to_stderr();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-middleware-common"
|
name = "wasmer-middleware-common"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
repository = "https://github.com/wasmerio/wasmer"
|
repository = "https://github.com/wasmerio/wasmer"
|
||||||
description = "Wasmer runtime common middlewares"
|
description = "Wasmer runtime common middlewares"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
@ -9,9 +9,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core" }
|
wasmer-runtime-core = { path = "../runtime-core" }
|
||||||
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.4" }
|
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.5" }
|
||||||
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.4", optional = true }
|
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.5", optional = true }
|
||||||
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.4", optional = true }
|
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.5", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
wabt = "0.7.4"
|
wabt = "0.7.4"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-runtime-abi"
|
name = "wasmer-runtime-abi"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime core library"
|
description = "Wasmer runtime core library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-runtime-c-api"
|
name = "wasmer-runtime-c-api"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer C API library"
|
description = "Wasmer C API library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -16,11 +16,11 @@ libc = "0.2"
|
|||||||
|
|
||||||
[dependencies.wasmer-runtime]
|
[dependencies.wasmer-runtime]
|
||||||
path = "../runtime"
|
path = "../runtime"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
|
|
||||||
[dependencies.wasmer-runtime-core]
|
[dependencies.wasmer-runtime-core]
|
||||||
path = "../runtime-core"
|
path = "../runtime-core"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
debug = ["wasmer-runtime/debug"]
|
debug = ["wasmer-runtime/debug"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-runtime-core"
|
name = "wasmer-runtime-core"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime core library"
|
description = "Wasmer runtime core library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nix = "0.12.0"
|
nix = "0.14.0"
|
||||||
page_size = "0.4.1"
|
page_size = "0.4.1"
|
||||||
wasmparser = "0.32.1"
|
wasmparser = "0.32.1"
|
||||||
parking_lot = "0.7.1"
|
parking_lot = "0.7.1"
|
||||||
@ -55,5 +55,5 @@ cc = "1.0"
|
|||||||
debug = []
|
debug = []
|
||||||
trace = ["debug"]
|
trace = ["debug"]
|
||||||
# backend flags used in conditional compilation of Backend::variants
|
# backend flags used in conditional compilation of Backend::variants
|
||||||
"backend:singlepass" = []
|
"backend-singlepass" = []
|
||||||
"backend:llvm" = []
|
"backend-llvm" = []
|
||||||
|
@ -33,9 +33,9 @@ impl Backend {
|
|||||||
pub fn variants() -> &'static [&'static str] {
|
pub fn variants() -> &'static [&'static str] {
|
||||||
&[
|
&[
|
||||||
"cranelift",
|
"cranelift",
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
"singlepass",
|
"singlepass",
|
||||||
#[cfg(feature = "backend:llvm")]
|
#[cfg(feature = "backend-llvm")]
|
||||||
"llvm",
|
"llvm",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -117,6 +117,7 @@ pub struct CompilerConfig {
|
|||||||
pub symbol_map: Option<HashMap<u32, String>>,
|
pub symbol_map: Option<HashMap<u32, String>>,
|
||||||
pub memory_bound_check_mode: MemoryBoundCheckMode,
|
pub memory_bound_check_mode: MemoryBoundCheckMode,
|
||||||
pub enforce_stack_check: bool,
|
pub enforce_stack_check: bool,
|
||||||
|
pub track_state: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Compiler {
|
pub trait Compiler {
|
||||||
|
@ -111,7 +111,13 @@ impl ModuleStateMap {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
match fsm.call_offsets.get(&(ip - base)) {
|
match fsm.call_offsets.get(&(ip - base)) {
|
||||||
Some(x) => Some((fsm, fsm.diffs[x.diff_id].build_state(fsm))),
|
Some(x) => {
|
||||||
|
if x.diff_id < fsm.diffs.len() {
|
||||||
|
Some((fsm, fsm.diffs[x.diff_id].build_state(fsm)))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +138,13 @@ impl ModuleStateMap {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
match fsm.trappable_offsets.get(&(ip - base)) {
|
match fsm.trappable_offsets.get(&(ip - base)) {
|
||||||
Some(x) => Some((fsm, fsm.diffs[x.diff_id].build_state(fsm))),
|
Some(x) => {
|
||||||
|
if x.diff_id < fsm.diffs.len() {
|
||||||
|
Some((fsm, fsm.diffs[x.diff_id].build_state(fsm)))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -149,7 +161,13 @@ impl ModuleStateMap {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
match fsm.loop_offsets.get(&(ip - base)) {
|
match fsm.loop_offsets.get(&(ip - base)) {
|
||||||
Some(x) => Some((fsm, fsm.diffs[x.diff_id].build_state(fsm))),
|
Some(x) => {
|
||||||
|
if x.diff_id < fsm.diffs.len() {
|
||||||
|
Some((fsm, fsm.diffs[x.diff_id].build_state(fsm)))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-runtime"
|
name = "wasmer-runtime"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime library"
|
description = "Wasmer runtime library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -9,17 +9,17 @@ edition = "2018"
|
|||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.4", optional = true }
|
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.5", optional = true }
|
||||||
lazy_static = "1.2.0"
|
lazy_static = "1.2.0"
|
||||||
memmap = "0.7.0"
|
memmap = "0.7.0"
|
||||||
|
|
||||||
[dependencies.wasmer-runtime-core]
|
[dependencies.wasmer-runtime-core]
|
||||||
path = "../runtime-core"
|
path = "../runtime-core"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
|
|
||||||
[dependencies.wasmer-clif-backend]
|
[dependencies.wasmer-clif-backend]
|
||||||
path = "../clif-backend"
|
path = "../clif-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-singlepass-backend"
|
name = "wasmer-singlepass-backend"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
repository = "https://github.com/wasmerio/wasmer"
|
repository = "https://github.com/wasmerio/wasmer"
|
||||||
description = "Wasmer runtime single pass compiler backend"
|
description = "Wasmer runtime single pass compiler backend"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
@ -8,13 +8,13 @@ authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
wasmparser = "0.32.1"
|
wasmparser = "0.32.1"
|
||||||
dynasm = "0.3.2"
|
dynasm = "0.3.2"
|
||||||
dynasmrt = "0.3.1"
|
dynasmrt = "0.3.1"
|
||||||
lazy_static = "1.2.0"
|
lazy_static = "1.2.0"
|
||||||
byteorder = "1"
|
byteorder = "1"
|
||||||
nix = "0.13.0"
|
nix = "0.14.0"
|
||||||
libc = "0.2.49"
|
libc = "0.2.49"
|
||||||
smallvec = "0.6.9"
|
smallvec = "0.6.9"
|
||||||
hashbrown = "0.1"
|
hashbrown = "0.1"
|
||||||
|
@ -317,6 +317,7 @@ pub struct CodegenError {
|
|||||||
struct CodegenConfig {
|
struct CodegenConfig {
|
||||||
memory_bound_check_mode: MemoryBoundCheckMode,
|
memory_bound_check_mode: MemoryBoundCheckMode,
|
||||||
enforce_stack_check: bool,
|
enforce_stack_check: bool,
|
||||||
|
track_state: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
|
impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
|
||||||
@ -366,7 +367,8 @@ impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
|
|||||||
|
|
||||||
begin_label_info.1 = Some(begin_offset);
|
begin_label_info.1 = Some(begin_offset);
|
||||||
let begin_label = begin_label_info.0;
|
let begin_label = begin_label_info.0;
|
||||||
let machine = Machine::new();
|
let mut machine = Machine::new();
|
||||||
|
machine.track_state = self.config.as_ref().unwrap().track_state;
|
||||||
|
|
||||||
dynasm!(
|
dynasm!(
|
||||||
assembler
|
assembler
|
||||||
@ -532,6 +534,7 @@ impl ModuleCodeGenerator<X64FunctionCode, X64ExecutionContext, CodegenError>
|
|||||||
self.config = Some(Arc::new(CodegenConfig {
|
self.config = Some(Arc::new(CodegenConfig {
|
||||||
memory_bound_check_mode: config.memory_bound_check_mode,
|
memory_bound_check_mode: config.memory_bound_check_mode,
|
||||||
enforce_stack_check: config.enforce_stack_check,
|
enforce_stack_check: config.enforce_stack_check,
|
||||||
|
track_state: config.track_state,
|
||||||
}));
|
}));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -641,6 +644,13 @@ impl X64FunctionCode {
|
|||||||
BothToGPR,
|
BothToGPR,
|
||||||
}
|
}
|
||||||
let mode = match (src, dst) {
|
let mode = match (src, dst) {
|
||||||
|
(Location::GPR(_), Location::GPR(_))
|
||||||
|
if (op as *const u8 == Assembler::emit_imul as *const u8) =>
|
||||||
|
{
|
||||||
|
RelaxMode::Direct
|
||||||
|
}
|
||||||
|
_ if (op as *const u8 == Assembler::emit_imul as *const u8) => RelaxMode::BothToGPR,
|
||||||
|
|
||||||
(Location::Memory(_, _), Location::Memory(_, _)) => RelaxMode::SrcToGPR,
|
(Location::Memory(_, _), Location::Memory(_, _)) => RelaxMode::SrcToGPR,
|
||||||
(Location::Imm64(_), Location::Imm64(_)) | (Location::Imm64(_), Location::Imm32(_)) => {
|
(Location::Imm64(_), Location::Imm64(_)) | (Location::Imm64(_), Location::Imm32(_)) => {
|
||||||
RelaxMode::BothToGPR
|
RelaxMode::BothToGPR
|
||||||
@ -653,7 +663,6 @@ impl X64FunctionCode {
|
|||||||
RelaxMode::SrcToGPR
|
RelaxMode::SrcToGPR
|
||||||
}
|
}
|
||||||
(_, Location::XMM(_)) => RelaxMode::SrcToGPR,
|
(_, Location::XMM(_)) => RelaxMode::SrcToGPR,
|
||||||
_ if (op as *const u8 == Assembler::emit_imul as *const u8) => RelaxMode::BothToGPR, // TODO: optimize this
|
|
||||||
_ => RelaxMode::Direct,
|
_ => RelaxMode::Direct,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1588,6 +1597,9 @@ impl X64FunctionCode {
|
|||||||
fsm: &mut FunctionStateMap,
|
fsm: &mut FunctionStateMap,
|
||||||
control_stack: &mut [ControlFrame],
|
control_stack: &mut [ControlFrame],
|
||||||
) -> usize {
|
) -> usize {
|
||||||
|
if !m.track_state {
|
||||||
|
return ::std::usize::MAX;
|
||||||
|
}
|
||||||
let last_frame = control_stack.last_mut().unwrap();
|
let last_frame = control_stack.last_mut().unwrap();
|
||||||
let mut diff = m.state.diff(&last_frame.state);
|
let mut diff = m.state.diff(&last_frame.state);
|
||||||
diff.last = Some(last_frame.state_diff_id);
|
diff.last = Some(last_frame.state_diff_id);
|
||||||
@ -1763,7 +1775,7 @@ impl FunctionCodeGenerator<CodegenError> for X64FunctionCode {
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.insert(a.get_offset(), callback);
|
.insert(a.get_offset(), callback);
|
||||||
}
|
}
|
||||||
InternalEvent::FunctionBegin(_) | InternalEvent::FunctionEnd => {},
|
InternalEvent::FunctionBegin(_) | InternalEvent::FunctionEnd => {}
|
||||||
InternalEvent::GetInternal(idx) => {
|
InternalEvent::GetInternal(idx) => {
|
||||||
let idx = idx as usize;
|
let idx = idx as usize;
|
||||||
assert!(idx < INTERNALS_SIZE);
|
assert!(idx < INTERNALS_SIZE);
|
||||||
@ -1814,7 +1826,11 @@ impl FunctionCodeGenerator<CodegenError> for X64FunctionCode {
|
|||||||
),
|
),
|
||||||
Location::GPR(tmp),
|
Location::GPR(tmp),
|
||||||
);
|
);
|
||||||
let loc = get_location_released(a, &mut self.machine, self.value_stack.pop().unwrap());
|
let loc = get_location_released(
|
||||||
|
a,
|
||||||
|
&mut self.machine,
|
||||||
|
self.value_stack.pop().unwrap(),
|
||||||
|
);
|
||||||
|
|
||||||
// Move internal into storage.
|
// Move internal into storage.
|
||||||
Self::emit_relaxed_binop(
|
Self::emit_relaxed_binop(
|
||||||
@ -1826,8 +1842,7 @@ impl FunctionCodeGenerator<CodegenError> for X64FunctionCode {
|
|||||||
Location::Memory(tmp, (idx * 8) as i32),
|
Location::Memory(tmp, (idx * 8) as i32),
|
||||||
);
|
);
|
||||||
self.machine.release_temp_gpr(tmp);
|
self.machine.release_temp_gpr(tmp);
|
||||||
}
|
} //_ => unimplemented!(),
|
||||||
//_ => unimplemented!(),
|
|
||||||
}
|
}
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
@ -2405,7 +2420,14 @@ impl FunctionCodeGenerator<CodegenError> for X64FunctionCode {
|
|||||||
loc_b,
|
loc_b,
|
||||||
);
|
);
|
||||||
a.emit_jmp(Condition::NotEqual, normal_path);
|
a.emit_jmp(Condition::NotEqual, normal_path);
|
||||||
a.emit_mov(Size::S64, Location::Imm64(0), ret);
|
Self::emit_relaxed_binop(
|
||||||
|
a,
|
||||||
|
&mut self.machine,
|
||||||
|
Assembler::emit_mov,
|
||||||
|
Size::S64,
|
||||||
|
Location::Imm64(0),
|
||||||
|
ret,
|
||||||
|
);
|
||||||
a.emit_jmp(Condition::None, end);
|
a.emit_jmp(Condition::None, end);
|
||||||
|
|
||||||
a.emit_label(normal_path);
|
a.emit_label(normal_path);
|
||||||
@ -4519,9 +4541,14 @@ impl FunctionCodeGenerator<CodegenError> for X64FunctionCode {
|
|||||||
|a, m, addr| {
|
|a, m, addr| {
|
||||||
match ret {
|
match ret {
|
||||||
Location::GPR(_) => {}
|
Location::GPR(_) => {}
|
||||||
_ => {
|
Location::Memory(base, offset) => {
|
||||||
a.emit_mov(Size::S64, Location::Imm64(0), ret);
|
a.emit_mov(
|
||||||
|
Size::S32,
|
||||||
|
Location::Imm32(0),
|
||||||
|
Location::Memory(base, offset + 4),
|
||||||
|
); // clear upper bits
|
||||||
}
|
}
|
||||||
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
Self::emit_relaxed_binop(
|
Self::emit_relaxed_binop(
|
||||||
a,
|
a,
|
||||||
|
@ -13,6 +13,7 @@ pub struct Machine {
|
|||||||
stack_offset: MachineStackOffset,
|
stack_offset: MachineStackOffset,
|
||||||
save_area_offset: Option<MachineStackOffset>,
|
save_area_offset: Option<MachineStackOffset>,
|
||||||
pub state: MachineState,
|
pub state: MachineState,
|
||||||
|
pub(crate) track_state: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Machine {
|
impl Machine {
|
||||||
@ -23,6 +24,7 @@ impl Machine {
|
|||||||
stack_offset: MachineStackOffset(0),
|
stack_offset: MachineStackOffset(0),
|
||||||
save_area_offset: None,
|
save_area_offset: None,
|
||||||
state: x64::new_machine_state(),
|
state: x64::new_machine_state(),
|
||||||
|
track_state: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-spectests"
|
name = "wasmer-spectests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer spectests library"
|
description = "Wasmer spectests library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -9,10 +9,10 @@ edition = "2018"
|
|||||||
build = "build/mod.rs"
|
build = "build/mod.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.4" }
|
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.5" }
|
||||||
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.4", optional = true }
|
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.5", optional = true }
|
||||||
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.4", optional = true }
|
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.5", optional = true }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
wabt = "0.7.2"
|
wabt = "0.7.2"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-wasi-tests"
|
name = "wasmer-wasi-tests"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Tests for our WASI implementation"
|
description = "Tests for our WASI implementation"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -9,19 +9,19 @@ publish = false
|
|||||||
build = "build/mod.rs"
|
build = "build/mod.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
wasmer-wasi = { path = "../wasi", version = "0.5.4" }
|
wasmer-wasi = { path = "../wasi", version = "0.5.5" }
|
||||||
# hack to get tests to work
|
# hack to get tests to work
|
||||||
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.4", optional = true }
|
wasmer-singlepass-backend = { path = "../singlepass-backend", version = "0.5.5", optional = true }
|
||||||
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.4", optional = true }
|
wasmer-llvm-backend = { path = "../llvm-backend", version = "0.5.5", optional = true }
|
||||||
|
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
glob = "0.2.11"
|
glob = "0.2.11"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.4" }
|
wasmer-clif-backend = { path = "../clif-backend", version = "0.5.5" }
|
||||||
wasmer-dev-utils = { path = "../dev-utils", version = "0.5.4"}
|
wasmer-dev-utils = { path = "../dev-utils", version = "0.5.5"}
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
clif = []
|
clif = []
|
||||||
|
@ -32,7 +32,6 @@ pub fn compile(file: &str, ignores: &HashSet<String>) -> Option<String> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Command::new("rustc")
|
Command::new("rustc")
|
||||||
.arg("+nightly")
|
|
||||||
.arg(file)
|
.arg(file)
|
||||||
.arg("-o")
|
.arg("-o")
|
||||||
.arg(&normalized_name)
|
.arg(&normalized_name)
|
||||||
@ -85,7 +84,7 @@ pub fn compile(file: &str, ignores: &HashSet<String>) -> Option<String> {
|
|||||||
out_str.push_str("vec![");
|
out_str.push_str("vec![");
|
||||||
for (alias, real_dir) in args.mapdir {
|
for (alias, real_dir) in args.mapdir {
|
||||||
out_str.push_str(&format!(
|
out_str.push_str(&format!(
|
||||||
"(\"{}\".to_string(), \"{}\".to_string()),",
|
"(\"{}\".to_string(), ::std::path::PathBuf::from(\"{}\")),",
|
||||||
alias, real_dir
|
alias, real_dir
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
13
lib/wasi-tests/tests/wasitests/fseek.rs
Normal file
13
lib/wasi-tests/tests/wasitests/fseek.rs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#[test]
|
||||||
|
fn test_fseek() {
|
||||||
|
assert_wasi_output!(
|
||||||
|
"../../wasitests/fseek.wasm",
|
||||||
|
"fseek",
|
||||||
|
vec![(
|
||||||
|
".".to_string(),
|
||||||
|
::std::path::PathBuf::from("wasitests/test_fs/hamlet")
|
||||||
|
),],
|
||||||
|
vec![],
|
||||||
|
"../../wasitests/fseek.out"
|
||||||
|
);
|
||||||
|
}
|
@ -3,7 +3,10 @@ fn test_mapdir() {
|
|||||||
assert_wasi_output!(
|
assert_wasi_output!(
|
||||||
"../../wasitests/mapdir.wasm",
|
"../../wasitests/mapdir.wasm",
|
||||||
"mapdir",
|
"mapdir",
|
||||||
vec![],
|
vec![(
|
||||||
|
".".to_string(),
|
||||||
|
::std::path::PathBuf::from("wasitests/test_fs/hamlet")
|
||||||
|
),],
|
||||||
vec![],
|
vec![],
|
||||||
"../../wasitests/mapdir.out"
|
"../../wasitests/mapdir.out"
|
||||||
);
|
);
|
||||||
|
@ -9,6 +9,7 @@ mod create_dir;
|
|||||||
mod envvar;
|
mod envvar;
|
||||||
mod file_metadata;
|
mod file_metadata;
|
||||||
mod fs_sandbox_test;
|
mod fs_sandbox_test;
|
||||||
|
mod fseek;
|
||||||
mod hello;
|
mod hello;
|
||||||
mod mapdir;
|
mod mapdir;
|
||||||
mod quine;
|
mod quine;
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
11
lib/wasi-tests/wasitests/fseek.out
Normal file
11
lib/wasi-tests/wasitests/fseek.out
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
SCENE III. A room in Polonius' h
|
||||||
|
ouse.
|
||||||
|
|
||||||
|
Enter LAERTES and OPH
|
||||||
|
And, sister, as the winds gi
|
||||||
|
r talk with the Lord Hamlet.
|
||||||
|
|
||||||
|
uits,
|
||||||
|
Breathing like sanctif
|
||||||
|
is is for all:
|
||||||
|
I would not,
|
47
lib/wasi-tests/wasitests/fseek.rs
Normal file
47
lib/wasi-tests/wasitests/fseek.rs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Args:
|
||||||
|
// mapdir: .:wasitests/test_fs/hamlet
|
||||||
|
|
||||||
|
use std::fs;
|
||||||
|
use std::io::{Read, Seek, SeekFrom};
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
#[cfg(not(target_os = "wasi"))]
|
||||||
|
let mut base = PathBuf::from("wasitests/test_fs/hamlet");
|
||||||
|
#[cfg(target_os = "wasi")]
|
||||||
|
let mut base = PathBuf::from(".");
|
||||||
|
|
||||||
|
base.push("act1/scene3.txt");
|
||||||
|
|
||||||
|
let mut file = fs::File::open(&base).expect("Could not open file");
|
||||||
|
|
||||||
|
let mut buffer = [0u8; 32];
|
||||||
|
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
|
||||||
|
assert_eq!(file.seek(SeekFrom::Start(123)).unwrap(), 123);
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
|
||||||
|
assert_eq!(file.seek(SeekFrom::End(-123)).unwrap(), 6617);
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
|
||||||
|
assert_eq!(file.seek(SeekFrom::Current(-250)).unwrap(), 6399);
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
|
||||||
|
assert_eq!(file.seek(SeekFrom::Current(50)).unwrap(), 6481);
|
||||||
|
assert_eq!(file.read(&mut buffer).unwrap(), 32);
|
||||||
|
let str_val = std::str::from_utf8(&buffer[..]).unwrap();
|
||||||
|
println!("{}", str_val);
|
||||||
|
}
|
BIN
lib/wasi-tests/wasitests/fseek.wasm
Executable file
BIN
lib/wasi-tests/wasitests/fseek.wasm
Executable file
Binary file not shown.
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
"wasitests/test_fs/hamlet/README.md"
|
"./README.md"
|
||||||
"wasitests/test_fs/hamlet/act1"
|
"./act1"
|
||||||
"wasitests/test_fs/hamlet/act2"
|
"./act2"
|
||||||
"wasitests/test_fs/hamlet/act3"
|
"./act3"
|
||||||
"wasitests/test_fs/hamlet/act4"
|
"./act4"
|
||||||
"wasitests/test_fs/hamlet/act5"
|
"./act5"
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
#[cfg(not(target = "wasi"))]
|
// #[cfg(not(target_os = "wasi"))]
|
||||||
let read_dir = fs::read_dir("wasitests/test_fs/hamlet").unwrap();
|
// let read_dir = fs::read_dir("wasitests/test_fs/hamlet").unwrap();
|
||||||
#[cfg(target = "wasi")]
|
// #[cfg(target_os = "wasi")]
|
||||||
let read_dir = fs::read_dir(".").unwrap();
|
let read_dir = fs::read_dir(".").unwrap();
|
||||||
let mut out = vec![];
|
let mut out = vec![];
|
||||||
for entry in read_dir {
|
for entry in read_dir {
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-wasi"
|
name = "wasmer-wasi"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime WASI implementation library"
|
description = "Wasmer runtime WASI implementation library"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
libc = "0.2.50"
|
libc = "0.2.50"
|
||||||
rand = "0.6.5"
|
rand = "0.6.5"
|
||||||
# wasmer-runtime-abi = { path = "../runtime-abi" }
|
# wasmer-runtime-abi = { path = "../runtime-abi" }
|
||||||
@ -18,4 +18,4 @@ log = "0.4.6"
|
|||||||
byteorder = "1.3.1"
|
byteorder = "1.3.1"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = "0.3"
|
winapi = "0.3"
|
||||||
|
@ -903,7 +903,28 @@ pub fn fd_seek(
|
|||||||
// TODO: handle case if fd is a dir?
|
// TODO: handle case if fd is a dir?
|
||||||
match whence {
|
match whence {
|
||||||
__WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64,
|
__WASI_WHENCE_CUR => fd_entry.offset = (fd_entry.offset as i64 + offset) as u64,
|
||||||
__WASI_WHENCE_END => unimplemented!("__WASI__WHENCE_END in wasi::fd_seek"),
|
__WASI_WHENCE_END => {
|
||||||
|
use std::io::SeekFrom;
|
||||||
|
match state.fs.inodes[fd_entry.inode].kind {
|
||||||
|
Kind::File { ref mut handle } => {
|
||||||
|
let end = wasi_try!(handle.seek(SeekFrom::End(0)).ok().ok_or(__WASI_EIO));
|
||||||
|
// TODO: handle case if fd_entry.offset uses 64 bits of a u64
|
||||||
|
fd_entry.offset = (end as i64 + offset) as u64;
|
||||||
|
}
|
||||||
|
Kind::Symlink { .. } => {
|
||||||
|
unimplemented!("wasi::fd_seek not implemented for symlinks")
|
||||||
|
}
|
||||||
|
Kind::Dir { .. } => {
|
||||||
|
// TODO: check this
|
||||||
|
return __WASI_EINVAL;
|
||||||
|
}
|
||||||
|
Kind::Buffer { .. } => {
|
||||||
|
// seeking buffers probably makes sense
|
||||||
|
// TODO: implement this
|
||||||
|
return __WASI_EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
__WASI_WHENCE_SET => fd_entry.offset = offset as u64,
|
__WASI_WHENCE_SET => fd_entry.offset = offset as u64,
|
||||||
_ => return __WASI_EINVAL,
|
_ => return __WASI_EINVAL,
|
||||||
}
|
}
|
||||||
@ -1235,6 +1256,7 @@ pub fn path_filestat_get(
|
|||||||
let last_segment = path_vec.last().unwrap();
|
let last_segment = path_vec.last().unwrap();
|
||||||
cumulative_path.push(last_segment);
|
cumulative_path.push(last_segment);
|
||||||
|
|
||||||
|
// read it from wasi FS cache first, otherwise check host system
|
||||||
if entries.contains_key(last_segment) {
|
if entries.contains_key(last_segment) {
|
||||||
state.fs.inodes[entries[last_segment]].stat
|
state.fs.inodes[entries[last_segment]].stat
|
||||||
} else {
|
} else {
|
||||||
@ -1244,7 +1266,25 @@ pub fn path_filestat_get(
|
|||||||
}
|
}
|
||||||
let final_path_metadata =
|
let final_path_metadata =
|
||||||
wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_EIO));
|
wasi_try!(cumulative_path.metadata().map_err(|_| __WASI_EIO));
|
||||||
wasi_try!(get_stat_for_kind(&state.fs.inodes[inode].kind).ok_or(__WASI_EIO))
|
let kind = if final_path_metadata.is_file() {
|
||||||
|
let file =
|
||||||
|
wasi_try!(std::fs::File::open(&cumulative_path).ok().ok_or(__WASI_EIO));
|
||||||
|
Kind::File {
|
||||||
|
handle: WasiFile::HostFile(file),
|
||||||
|
}
|
||||||
|
} else if final_path_metadata.is_dir() {
|
||||||
|
Kind::Dir {
|
||||||
|
parent: Some(inode),
|
||||||
|
// TODO: verify that this doesn't cause issues with relative paths
|
||||||
|
path: cumulative_path.clone(),
|
||||||
|
entries: Default::default(),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// TODO: check this
|
||||||
|
return __WASI_EINVAL;
|
||||||
|
};
|
||||||
|
|
||||||
|
wasi_try!(get_stat_for_kind(&kind).ok_or(__WASI_EIO))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wasmer-win-exception-handler"
|
name = "wasmer-win-exception-handler"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "Wasmer runtime exception handling for Windows"
|
description = "Wasmer runtime exception handling for Windows"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
|
||||||
@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.4" }
|
wasmer-runtime-core = { path = "../runtime-core", version = "0.5.5" }
|
||||||
winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] }
|
winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] }
|
||||||
libc = "0.2.49"
|
libc = "0.2.49"
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ extern crate structopt;
|
|||||||
|
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
use wasmer_singlepass_backend::SinglePassCompiler;
|
use wasmer_singlepass_backend::SinglePassCompiler;
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
use std::os::unix::net::{UnixListener, UnixStream};
|
use std::os::unix::net::{UnixListener, UnixStream};
|
||||||
|
|
||||||
#[derive(Debug, StructOpt)]
|
#[derive(Debug, StructOpt)]
|
||||||
@ -24,14 +24,14 @@ struct Listen {
|
|||||||
socket: String,
|
socket: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
const CMD_RUN_CODE: u32 = 0x901;
|
const CMD_RUN_CODE: u32 = 0x901;
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
const CMD_READ_MEMORY: u32 = 0x902;
|
const CMD_READ_MEMORY: u32 = 0x902;
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
const CMD_WRITE_MEMORY: u32 = 0x903;
|
const CMD_WRITE_MEMORY: u32 = 0x903;
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
fn handle_client(mut stream: UnixStream) {
|
fn handle_client(mut stream: UnixStream) {
|
||||||
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
|
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
@ -54,6 +54,7 @@ fn handle_client(mut stream: UnixStream) {
|
|||||||
symbol_map: None,
|
symbol_map: None,
|
||||||
memory_bound_check_mode: MemoryBoundCheckMode::Disable,
|
memory_bound_check_mode: MemoryBoundCheckMode::Disable,
|
||||||
enforce_stack_check: true,
|
enforce_stack_check: true,
|
||||||
|
track_state: false,
|
||||||
},
|
},
|
||||||
&SinglePassCompiler::new(),
|
&SinglePassCompiler::new(),
|
||||||
)
|
)
|
||||||
@ -131,7 +132,7 @@ fn handle_client(mut stream: UnixStream) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
fn run_listen(opts: Listen) {
|
fn run_listen(opts: Listen) {
|
||||||
let listener = UnixListener::bind(&opts.socket).unwrap();
|
let listener = UnixListener::bind(&opts.socket).unwrap();
|
||||||
use std::thread;
|
use std::thread;
|
||||||
@ -154,7 +155,7 @@ fn run_listen(opts: Listen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
fn main() {
|
fn main() {
|
||||||
let options = CLIOptions::from_args();
|
let options = CLIOptions::from_args();
|
||||||
match options {
|
match options {
|
||||||
@ -164,7 +165,7 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "loader:kernel"))]
|
#[cfg(not(feature = "loader-kernel"))]
|
||||||
fn main() {
|
fn main() {
|
||||||
panic!("Kwasm loader is not enabled during compilation.");
|
panic!("Kwasm loader is not enabled during compilation.");
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ use structopt::StructOpt;
|
|||||||
|
|
||||||
use wasmer::*;
|
use wasmer::*;
|
||||||
use wasmer_clif_backend::CraneliftCompiler;
|
use wasmer_clif_backend::CraneliftCompiler;
|
||||||
#[cfg(feature = "backend:llvm")]
|
#[cfg(feature = "backend-llvm")]
|
||||||
use wasmer_llvm_backend::LLVMCompiler;
|
use wasmer_llvm_backend::LLVMCompiler;
|
||||||
use wasmer_runtime::{
|
use wasmer_runtime::{
|
||||||
cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH},
|
cache::{Cache as BaseCache, FileSystemCache, WasmHash, WASMER_VERSION_HASH},
|
||||||
@ -27,7 +27,7 @@ use wasmer_runtime_core::{
|
|||||||
debug,
|
debug,
|
||||||
loader::{Instance as LoadedInstance, LocalLoader},
|
loader::{Instance as LoadedInstance, LocalLoader},
|
||||||
};
|
};
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
use wasmer_singlepass_backend::SinglePassCompiler;
|
use wasmer_singlepass_backend::SinglePassCompiler;
|
||||||
#[cfg(feature = "wasi")]
|
#[cfg(feature = "wasi")]
|
||||||
use wasmer_wasi;
|
use wasmer_wasi;
|
||||||
@ -112,10 +112,16 @@ struct Run {
|
|||||||
)]
|
)]
|
||||||
loader: Option<LoaderName>,
|
loader: Option<LoaderName>,
|
||||||
|
|
||||||
#[cfg(feature = "backend:singlepass")]
|
/// Path to previously saved instance image to resume.
|
||||||
|
#[cfg(feature = "backend-singlepass")]
|
||||||
#[structopt(long = "resume")]
|
#[structopt(long = "resume")]
|
||||||
resume: Option<String>,
|
resume: Option<String>,
|
||||||
|
|
||||||
|
/// Whether or not state tracking should be disabled during compilation.
|
||||||
|
/// State tracking is necessary for tier switching and backtracing.
|
||||||
|
#[structopt(long = "no-track-state")]
|
||||||
|
no_track_state: bool,
|
||||||
|
|
||||||
/// The command name is a string that will override the first argument passed
|
/// The command name is a string that will override the first argument passed
|
||||||
/// to the wasm program. This is used in wapm to provide nicer output in
|
/// to the wasm program. This is used in wapm to provide nicer output in
|
||||||
/// help commands and error messages of the running wasm program
|
/// help commands and error messages of the running wasm program
|
||||||
@ -137,7 +143,7 @@ struct Run {
|
|||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
enum LoaderName {
|
enum LoaderName {
|
||||||
Local,
|
Local,
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
Kernel,
|
Kernel,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,7 +151,7 @@ impl LoaderName {
|
|||||||
pub fn variants() -> &'static [&'static str] {
|
pub fn variants() -> &'static [&'static str] {
|
||||||
&[
|
&[
|
||||||
"local",
|
"local",
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
"kernel",
|
"kernel",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -156,7 +162,7 @@ impl FromStr for LoaderName {
|
|||||||
fn from_str(s: &str) -> Result<LoaderName, String> {
|
fn from_str(s: &str) -> Result<LoaderName, String> {
|
||||||
match s.to_lowercase().as_str() {
|
match s.to_lowercase().as_str() {
|
||||||
"local" => Ok(LoaderName::Local),
|
"local" => Ok(LoaderName::Local),
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
"kernel" => Ok(LoaderName::Kernel),
|
"kernel" => Ok(LoaderName::Kernel),
|
||||||
_ => Err(format!("The loader {} doesn't exist", s)),
|
_ => Err(format!("The loader {} doesn't exist", s)),
|
||||||
}
|
}
|
||||||
@ -315,25 +321,27 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let compiler: Box<dyn Compiler> = match options.backend {
|
let compiler: Box<dyn Compiler> = match options.backend {
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
Backend::Singlepass => Box::new(SinglePassCompiler::new()),
|
Backend::Singlepass => Box::new(SinglePassCompiler::new()),
|
||||||
#[cfg(not(feature = "backend:singlepass"))]
|
#[cfg(not(feature = "backend-singlepass"))]
|
||||||
Backend::Singlepass => return Err("The singlepass backend is not enabled".to_string()),
|
Backend::Singlepass => return Err("The singlepass backend is not enabled".to_string()),
|
||||||
Backend::Cranelift => Box::new(CraneliftCompiler::new()),
|
Backend::Cranelift => Box::new(CraneliftCompiler::new()),
|
||||||
#[cfg(feature = "backend:llvm")]
|
#[cfg(feature = "backend-llvm")]
|
||||||
Backend::LLVM => Box::new(LLVMCompiler::new()),
|
Backend::LLVM => Box::new(LLVMCompiler::new()),
|
||||||
#[cfg(not(feature = "backend:llvm"))]
|
#[cfg(not(feature = "backend-llvm"))]
|
||||||
Backend::LLVM => return Err("the llvm backend is not enabled".to_string()),
|
Backend::LLVM => return Err("the llvm backend is not enabled".to_string()),
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "loader:kernel")]
|
let track_state = !options.no_track_state;
|
||||||
|
|
||||||
|
#[cfg(feature = "loader-kernel")]
|
||||||
let is_kernel_loader = if let Some(LoaderName::Kernel) = options.loader {
|
let is_kernel_loader = if let Some(LoaderName::Kernel) = options.loader {
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(not(feature = "loader:kernel"))]
|
#[cfg(not(feature = "loader-kernel"))]
|
||||||
let is_kernel_loader = false;
|
let is_kernel_loader = false;
|
||||||
|
|
||||||
let module = if is_kernel_loader {
|
let module = if is_kernel_loader {
|
||||||
@ -343,6 +351,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
symbol_map: em_symbol_map,
|
symbol_map: em_symbol_map,
|
||||||
memory_bound_check_mode: MemoryBoundCheckMode::Disable,
|
memory_bound_check_mode: MemoryBoundCheckMode::Disable,
|
||||||
enforce_stack_check: true,
|
enforce_stack_check: true,
|
||||||
|
track_state,
|
||||||
},
|
},
|
||||||
&*compiler,
|
&*compiler,
|
||||||
)
|
)
|
||||||
@ -352,6 +361,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
&wasm_binary[..],
|
&wasm_binary[..],
|
||||||
CompilerConfig {
|
CompilerConfig {
|
||||||
symbol_map: em_symbol_map,
|
symbol_map: em_symbol_map,
|
||||||
|
track_state,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
&*compiler,
|
&*compiler,
|
||||||
@ -397,6 +407,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
&wasm_binary[..],
|
&wasm_binary[..],
|
||||||
CompilerConfig {
|
CompilerConfig {
|
||||||
symbol_map: em_symbol_map,
|
symbol_map: em_symbol_map,
|
||||||
|
track_state,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
&*compiler,
|
&*compiler,
|
||||||
@ -440,7 +451,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
.load(LocalLoader)
|
.load(LocalLoader)
|
||||||
.expect("Can't use the local loader"),
|
.expect("Can't use the local loader"),
|
||||||
),
|
),
|
||||||
#[cfg(feature = "loader:kernel")]
|
#[cfg(feature = "loader-kernel")]
|
||||||
LoaderName::Kernel => Box::new(
|
LoaderName::Kernel => Box::new(
|
||||||
instance
|
instance
|
||||||
.load(::wasmer_kernel_loader::KernelLoader)
|
.load(::wasmer_kernel_loader::KernelLoader)
|
||||||
@ -501,7 +512,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
|
|
||||||
let start: Func<(), ()> = instance.func("_start").map_err(|e| format!("{:?}", e))?;
|
let start: Func<(), ()> = instance.func("_start").map_err(|e| format!("{:?}", e))?;
|
||||||
|
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
unsafe {
|
unsafe {
|
||||||
if options.backend == Backend::Singlepass {
|
if options.backend == Backend::Singlepass {
|
||||||
use wasmer_runtime_core::fault::{catch_unsafe_unwind, ensure_sighandler};
|
use wasmer_runtime_core::fault::{catch_unsafe_unwind, ensure_sighandler};
|
||||||
@ -608,18 +619,18 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
struct InteractiveShellContext {
|
struct InteractiveShellContext {
|
||||||
image: Option<wasmer_runtime_core::state::InstanceImage>,
|
image: Option<wasmer_runtime_core::state::InstanceImage>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
enum ShellExitOperation {
|
enum ShellExitOperation {
|
||||||
ContinueWith(wasmer_runtime_core::state::InstanceImage),
|
ContinueWith(wasmer_runtime_core::state::InstanceImage),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "backend:singlepass")]
|
#[cfg(feature = "backend-singlepass")]
|
||||||
fn interactive_shell(mut ctx: InteractiveShellContext) -> ShellExitOperation {
|
fn interactive_shell(mut ctx: InteractiveShellContext) -> ShellExitOperation {
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
PREVIOUS_VERSION='0.5.3'
|
PREVIOUS_VERSION='0.5.4'
|
||||||
NEXT_VERSION='0.5.4'
|
NEXT_VERSION='0.5.5'
|
||||||
|
|
||||||
# quick hack
|
# quick hack
|
||||||
fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/"
|
fd Cargo.toml --exec sed -i '' "s/version = \"$PREVIOUS_VERSION\"/version = \"$NEXT_VERSION\"/"
|
||||||
|
Loading…
Reference in New Issue
Block a user