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
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,9 +59,10 @@ 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
@ -80,7 +86,7 @@ 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.
@ -89,7 +95,6 @@ You should change the installation to install the "Add python.exe to Path" featu
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).
## Building
Wasmer is built with [Cargo](https://crates.io/), the Rust package manager.
@ -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"]