Merge branch 'master' into feature/improve-importing

This commit is contained in:
Lachlan Sneff 2019-01-29 10:28:18 -08:00 committed by GitHub
commit 5aa7d71ede
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 50 additions and 39 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
lib/emscripten/emtests/* linguist-vendored
lib/runtime-core/spectests/* linguist-vendored

24
Cargo.lock generated
View File

@ -684,15 +684,15 @@ dependencies = [
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"structopt 0.2.14 (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.1.1",
"wasmer-clif-backend 0.1.2",
"wasmer-emscripten 0.1.0",
"wasmer-runtime 0.1.1",
"wasmer-runtime-core 0.1.1",
"wasmer-runtime 0.1.4",
"wasmer-runtime-core 0.1.2",
]
[[package]]
name = "wasmer-clif-backend"
version = "0.1.1"
version = "0.1.2"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -702,7 +702,7 @@ dependencies = [
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-runtime-core 0.1.1",
"wasmer-runtime-core 0.1.2",
"wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -716,21 +716,21 @@ dependencies = [
"libc 0.2.48 (git+https://github.com/rust-lang/libc)",
"time 0.1.42 (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.1.1",
"wasmer-runtime-core 0.1.1",
"wasmer-clif-backend 0.1.2",
"wasmer-runtime-core 0.1.2",
]
[[package]]
name = "wasmer-runtime"
version = "0.1.1"
version = "0.1.4"
dependencies = [
"wasmer-clif-backend 0.1.1",
"wasmer-runtime-core 0.1.1",
"wasmer-clif-backend 0.1.2",
"wasmer-runtime-core 0.1.2",
]
[[package]]
name = "wasmer-runtime-core"
version = "0.1.1"
version = "0.1.2"
dependencies = [
"errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"field-offset 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -740,7 +740,7 @@ dependencies = [
"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)",
"wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
"wasmer-clif-backend 0.1.1",
"wasmer-clif-backend 0.1.2",
"wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]

View File

@ -3,6 +3,9 @@
<p align="center">
<a href="https://circleci.com/gh/wasmerio/wasmer/"><img src="https://img.shields.io/circleci/project/github/wasmerio/wasmer/master.svg" alt="Build Status"></a>
<a href="https://github.com/wasmerio/wasmer/blob/master/LICENSE"><img src="https://img.shields.io/github/license/wasmerio/wasmer.svg" alt="License"></a>
<a href="https://spectrum.chat/wasmer">
<img alt="Join the Wasmer Community" src="https://withspectrum.github.io/badge/badge.svg" />
</a>
</p>
## Introduction
@ -15,6 +18,8 @@ Install Wasmer with:
curl https://get.wasmer.io -sSfL | sh
```
_**NEW ✨**: Now you can also embed Wasmer in your Rust application, check our [example repo](https://github.com/wasmerio/wasmer-rust-example) to see how to do it!_
### Usage
`wasmer` can execute both the standard binary format (`.wasm`) and the text
@ -54,15 +59,16 @@ curl https://sh.rustup.rs -sSf | sh
### Other dependencies
Please select your operating system:
* [macOS](#macos)
* [Debian-based Linuxes](#debian-based-linuxes)
* [Microsoft Windows](#windows-msvc)
- [macOS](#macos)
- [Debian-based Linuxes](#debian-based-linuxes)
- [Microsoft Windows](#windows-msvc)
#### macOS
If you have [homebrew](https://brew.sh/) installed:
``` sh
```sh
brew install cmake
```
@ -74,21 +80,20 @@ sudo port install cmake
#### Debian-based Linuxes
``` sh
```sh
sudo apt install cmake
```
#### Windows (MSVC)
Right now Windows support is *highly experimental*.
Right now Windows support is _highly experimental_.
We are working on this so Wasmer can soon be released for Windows.
1. Install Python for Windows (https://www.python.org/downloads/release/python-2714/). The Windows x86-64 MSI installer is fine.
You should change the installation to install the "Add python.exe to Path" feature.
You should change the installation to install the "Add python.exe to Path" feature.
2. Install Git for Windows (https://git-scm.com/download/win). DO allow it to add git.exe to the PATH (default
settings for the installer are fine).
settings for the installer are fine).
## Building
@ -106,7 +111,7 @@ cargo install --path .
## Testing
Thanks to [spectests](https://github.com/wasmerio/wasmer/tree/master/spectests) we can assure 100% compatibility with the WebAssembly spec test suite.
Thanks to [spectests](https://github.com/wasmerio/wasmer/tree/master/lib/runtime-core/spectests) we can assure 100% compatibility with the WebAssembly spec test suite.
Tests can be run with:
@ -135,7 +140,7 @@ Below are some of the goals (written with order) of this project:
- [x] It should be 100% compatible with the [WebAssembly Spectest](https://github.com/wasmerio/wasmer/tree/master/spectests)
- [x] It should be fast _(partially achieved)_
- [ ] Support Emscripten calls _(on the works)_
- [ ] Support Emscripten calls _(in the works)_
- [ ] Support Rust ABI calls
- [ ] Support GO ABI calls

View File

@ -1,6 +1,6 @@
[package]
name = "wasmer-clif-backend"
version = "0.1.1"
version = "0.1.2"
description = "Wasmer runtime Cranelift compiler backend"
license = "MIT"
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer"
edition = "2018"
[dependencies]
wasmer-runtime-core = { path = "../runtime-core", version = "0.1.1" }
wasmer-runtime-core = { path = "../runtime-core", version = "0.1.2" }
cranelift-native = "0.26.0"
cranelift-codegen = "0.26.0"
cranelift-entity = "0.26.0"

View File

@ -86,14 +86,10 @@ impl Module {
isa: &isa::TargetIsa,
functions: Map<LocalFuncIndex, ir::Function>,
) -> CompileResult<ModuleInner> {
// we have to deduplicate `module.func_assoc`
// let func_assoc = &mut self.module.func_assoc;
// let sig_registry = &self.module.sig_registry;
// func_assoc.iter_mut().for_each(|(_, sig_index)| {
// *sig_index = sig_registry.lookup_deduplicated_sigindex(*sig_index);
// });
let imported_functions_len = self.module.imported_functions.len();
let (func_resolver_builder, handler_data) =
FuncResolverBuilder::new(isa, functions, imported_functions_len)?;
let (func_resolver_builder, handler_data) = FuncResolverBuilder::new(isa, functions)?;
self.module.func_resolver = Box::new(func_resolver_builder.finalize()?);
let trampolines = Trampolines::new(isa, &self.module);

View File

@ -14,7 +14,7 @@ use wasmer_runtime_core::{
sys::{Memory, Protect},
},
error::{CompileError, CompileResult},
structures::Map,
structures::{Map, TypedIndex},
types::LocalFuncIndex,
vm, vmcalls,
};
@ -23,12 +23,14 @@ use wasmer_runtime_core::{
pub struct FuncResolverBuilder {
resolver: FuncResolver,
relocations: Map<LocalFuncIndex, Vec<Relocation>>,
import_len: usize,
}
impl FuncResolverBuilder {
pub fn new(
isa: &isa::TargetIsa,
function_bodies: Map<LocalFuncIndex, ir::Function>,
import_len: usize,
) -> CompileResult<(Self, HandlerData)> {
let mut compiled_functions: Vec<Vec<u8>> = Vec::with_capacity(function_bodies.len());
let mut relocations = Map::with_capacity(function_bodies.len());
@ -100,6 +102,7 @@ impl FuncResolverBuilder {
Self {
resolver: FuncResolver { map, memory },
relocations,
import_len,
},
handler_data,
))
@ -113,6 +116,10 @@ impl FuncResolverBuilder {
// This will always be an internal function
// because imported functions are not
// called in this way.
// Adjust from wasm-wide function index to index of locally-defined functions only.
let local_func_index =
LocalFuncIndex::new(local_func_index.index() - self.import_len);
self.resolver.lookup(local_func_index).unwrap().as_ptr() as isize
}
RelocationType::LibCall(libcall) => match libcall {

View File

@ -1,6 +1,6 @@
[package]
name = "wasmer-runtime-core"
version = "0.1.1"
version = "0.1.2"
description = "Wasmer runtime core library"
license = "MIT"
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
@ -26,7 +26,7 @@ errno = "0.2.4"
wabt = "0.7.2"
[dev-dependencies]
wasmer-clif-backend = { path = "../clif-backend", version = "0.1.1" }
wasmer-clif-backend = { path = "../clif-backend", version = "0.1.2" }
wabt = "0.7.2"
field-offset = "0.1.1"

View File

@ -40,7 +40,7 @@ macro_rules! __export_func_convert_type {
Type::I64
};
(u64) => {
Type::I32
Type::I64
};
(f32) => {
Type::F32

View File

@ -1,15 +1,16 @@
[package]
name = "wasmer-runtime"
version = "0.1.1"
version = "0.1.4"
description = "Wasmer runtime library"
license = "MIT"
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
repository = "https://github.com/wasmerio/wasmer"
edition = "2018"
readme = "README.md"
[dependencies]
wasmer-runtime-core = { path = "../runtime-core", version = "0.1.1" }
wasmer-clif-backend = { path = "../clif-backend", version = "0.1.1", optional = true }
wasmer-runtime-core = { path = "../runtime-core", version = "0.1.2" }
wasmer-clif-backend = { path = "../clif-backend", version = "0.1.2", optional = true }
[features]
default = ["wasmer-clif-backend"]