From ad3d361f76fb123633d29d30c2331a7abb03847a Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 22 Feb 2019 12:32:14 -0800 Subject: [PATCH 01/21] add the syscall and create a test --- lib/emscripten/emtests/test_getcwd.c | 10 +++++++++ lib/emscripten/emtests/test_getcwd.out | 1 + lib/emscripten/emtests/test_getcwd.wasm | Bin 0 -> 22468 bytes lib/emscripten/src/lib.rs | 1 + lib/emscripten/src/syscalls/mod.rs | 23 ++++++++++++++++++++ lib/emscripten/tests/emtests/test_getcwd.rs | 9 ++++++++ 6 files changed, 44 insertions(+) create mode 100644 lib/emscripten/emtests/test_getcwd.c create mode 100644 lib/emscripten/emtests/test_getcwd.out create mode 100644 lib/emscripten/emtests/test_getcwd.wasm create mode 100644 lib/emscripten/tests/emtests/test_getcwd.rs diff --git a/lib/emscripten/emtests/test_getcwd.c b/lib/emscripten/emtests/test_getcwd.c new file mode 100644 index 000000000..a3955d470 --- /dev/null +++ b/lib/emscripten/emtests/test_getcwd.c @@ -0,0 +1,10 @@ +#include +#include + +int main() { + const unsigned int size = 256; + char cwd[size] = {}; + char* buf = getcwd(cwd, size); + printf("getcwd\n"); + return 0; +} diff --git a/lib/emscripten/emtests/test_getcwd.out b/lib/emscripten/emtests/test_getcwd.out new file mode 100644 index 000000000..263db4c74 --- /dev/null +++ b/lib/emscripten/emtests/test_getcwd.out @@ -0,0 +1 @@ +getcwd diff --git a/lib/emscripten/emtests/test_getcwd.wasm b/lib/emscripten/emtests/test_getcwd.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5f93e3aa2931553d2a51b3b3910c18d16ab17c6d GIT binary patch literal 22468 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 ImportObject "___syscall168" => func!(crate::syscalls::___syscall168), "___syscall180" => func!(crate::syscalls::___syscall180), "___syscall181" => func!(crate::syscalls::___syscall181), + "___syscall183" => func!(crate::syscalls::___syscall183), "___syscall191" => func!(crate::syscalls::___syscall191), "___syscall192" => func!(crate::syscalls::___syscall192), "___syscall194" => func!(crate::syscalls::___syscall194), diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index ef9ef40ee..c6590cb2d 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -48,6 +48,10 @@ use std::slice; // Other platforms do otherwise. #[cfg(target_os = "darwin")] use libc::SO_NOSIGPIPE; +use crate::utils::copy_cstr_into_wasm; +use crate::env::get_emscripten_data; +use std::ffi::CString; + #[cfg(not(target_os = "darwin"))] const SO_NOSIGPIPE: c_int = 0; @@ -186,6 +190,25 @@ pub fn ___syscall110(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { -1 } +// getcwd +pub fn ___syscall183(ctx: &mut Ctx, buf: u32, _size: u32) -> u32 { + debug!("emscripten::___syscall183"); + use std::env; + let path = env::current_dir(); + match path { + Ok(path_buf) => { + // write path into buffer + let path_string = path_buf.display().to_string(); + let path_c_string = CString::new(path_string).unwrap(); + let offset = unsafe { copy_cstr_into_wasm(ctx, path_c_string.as_ptr()) }; + offset + } + Err(e) => { + unimplemented!() + } + } +} + // mmap2 pub fn ___syscall192(ctx: &mut Ctx, which: c_int, mut varargs: VarArgs) -> c_int { debug!("emscripten::___syscall192 (mmap2) {}", which); diff --git a/lib/emscripten/tests/emtests/test_getcwd.rs b/lib/emscripten/tests/emtests/test_getcwd.rs new file mode 100644 index 000000000..ec770b505 --- /dev/null +++ b/lib/emscripten/tests/emtests/test_getcwd.rs @@ -0,0 +1,9 @@ +#[test] +fn test_getcwd() { + assert_emscripten_output!( + "../../emtests/test_getcwd.wasm", + "getcwd", + vec![], + "../../emtests/test_getcwd.out" + ); +} From 0f9369c67d67a3d4794ad0edc7ceab0190db43d3 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 22 Feb 2019 12:39:19 -0800 Subject: [PATCH 02/21] cargo fmt and better error message --- lib/emscripten/src/syscalls/mod.rs | 8 +++----- lib/emscripten/tests/emtests/mod.rs | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index c6590cb2d..71cd43549 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -46,10 +46,10 @@ use std::slice; // Another conditional constant for name resolution: Macos et iOS use // SO_NOSIGPIPE as a setsockopt flag to disable SIGPIPE emission on socket. // Other platforms do otherwise. +use crate::env::get_emscripten_data; +use crate::utils::copy_cstr_into_wasm; #[cfg(target_os = "darwin")] use libc::SO_NOSIGPIPE; -use crate::utils::copy_cstr_into_wasm; -use crate::env::get_emscripten_data; use std::ffi::CString; #[cfg(not(target_os = "darwin"))] @@ -203,9 +203,7 @@ pub fn ___syscall183(ctx: &mut Ctx, buf: u32, _size: u32) -> u32 { let offset = unsafe { copy_cstr_into_wasm(ctx, path_c_string.as_ptr()) }; offset } - Err(e) => { - unimplemented!() - } + Err(e) => panic!("Failed to read current directory from environment."), } } diff --git a/lib/emscripten/tests/emtests/mod.rs b/lib/emscripten/tests/emtests/mod.rs index 37c88a041..a280fc48a 100644 --- a/lib/emscripten/tests/emtests/mod.rs +++ b/lib/emscripten/tests/emtests/mod.rs @@ -54,6 +54,7 @@ mod test_funcptrfunc; mod test_funcs; mod test_functionpointer_libfunc_varargs; mod test_fwrite_0; +mod test_getcwd; mod test_getgep; mod test_getloadavg; mod test_getopt; From 966be3ee8f7760fffb6e414c577199e2ed480b6f Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 22 Feb 2019 14:54:01 -0800 Subject: [PATCH 03/21] right to the out buffer that was passed in syscall183 --- lib/emscripten/src/syscalls/mod.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 71cd43549..3f310be06 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -48,6 +48,7 @@ use std::slice; // Other platforms do otherwise. use crate::env::get_emscripten_data; use crate::utils::copy_cstr_into_wasm; +use crate::utils::read_string_from_wasm; #[cfg(target_os = "darwin")] use libc::SO_NOSIGPIPE; use std::ffi::CString; @@ -191,20 +192,21 @@ pub fn ___syscall110(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { } // getcwd -pub fn ___syscall183(ctx: &mut Ctx, buf: u32, _size: u32) -> u32 { +pub fn ___syscall183(ctx: &mut Ctx, buf_offset: u32, _size: u32) -> u32 { debug!("emscripten::___syscall183"); use std::env; let path = env::current_dir(); - match path { - Ok(path_buf) => { - // write path into buffer - let path_string = path_buf.display().to_string(); - let path_c_string = CString::new(path_string).unwrap(); - let offset = unsafe { copy_cstr_into_wasm(ctx, path_c_string.as_ptr()) }; - offset + let path_string = path.unwrap().display().to_string(); + let len = path_string.len(); + unsafe { + let pointer_to_buffer = emscripten_memory_pointer!(ctx.memory(0), buf_offset) as *mut libc::c_char; + let slice = slice::from_raw_parts_mut(pointer_to_buffer, len.clone()); + for (byte, loc) in path_string.bytes().zip(slice.iter_mut()) { + *loc = byte as _; } - Err(e) => panic!("Failed to read current directory from environment."), + *pointer_to_buffer.add(len.clone()) = 0; } + buf_offset } // mmap2 From b5056d676acb8f30ae9126cc84dce86e5652e690 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 22 Feb 2019 15:07:55 -0800 Subject: [PATCH 04/21] update wasm file --- lib/emscripten/emtests/test_getcwd.wasm | Bin 22468 -> 45896 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/emscripten/emtests/test_getcwd.wasm b/lib/emscripten/emtests/test_getcwd.wasm index 5f93e3aa2931553d2a51b3b3910c18d16ab17c6d..0cf6f73a2dcc92510cd370ef0a968f67c65463c5 100644 GIT binary patch literal 45896 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 delta 2827 zcmZvee{2-T6~}kxX7A2E_w2np10lZio3o9N*dmz5Ka!Xxi-QxZIHjdXt*PWX#2^ks zV;hlD+MHXQ1c8NIjTNlmf(@p1g{9b>E71Uv|8P`SIH^NvLnBHMKUx$K2{jJ5#8La+ z>}~T;rP1wYzWa9Gn>TZBX8Ip|>Ma&9S~_41gUk$=9l&u%QSVi?lMZv=FS&7wi}7;7x(O}L%Zf}+l=KoUv;qii29bN zKDTU9d3nK-#pUJY+51LVObvVNy62cLRTPxoqM+T&lf}WJU{UV#;%V&U83FK0ZX43D zySQY4h>%yh6bYXo1qkT@uc{H-d9S5Tih6#=QlE+@>NS|%yx&Uy$*f_dX8E+*>O0AY zEtTVch{RHV6`3~sJLCNp{N7u|4SU#vj|kwJi9V#MwT0tT z736H-eO9_XXNX0ItpqpZEQ2fD_Ux7)F!+GkY?r*qY;^NzP`lY0?94_t=##vto563> z_tm)-jD}6-U7%sp)!|A;f$xkAldd9*w3}^p{+Dx%Tgc55md6Ekmh=@AQr$${mVmsQJyGRk73wGCX8ToD<81b%h6bLz=C~( z|rVy8%$&pa0* zj>DOVdM+kIwO6bibCKR z%lg6?pN*)O3ddMNN%$%L9)&2s6H(`3Ge`5dtm4xV)g+(6SI6WyM-ShLe|K?0UKMav z*r|H?v4D>;c=)r(OQ`el(#VYVeqF$IVT%rVL)hqWK3?lj$Xgf>TGbYv``)Cs`b+?} zbxAoVFglpilbO=5J{Q=9&&4<8JpuP9JyRKjKqj&G1>DyYoEQ9Qm?x7#oKtZkHE2O2 zrY&I4Ml{%$BCw9~cqNlRX92zx_JjprYNunClj$i7w;GvFx-erQlQQkXB@3C9Sr@KY z$fR5*&`WmH!VXE-T)1N)lXBaIISZMTyDltP$fV4>&>cc1rOSn$5HczIUFZuTlhUgp zg)|Vt4oUqk42O_O8FXPZgiOka3lkw^QpQ|37eXfGj0;mCWKt$wm@GZ_H&*|Hx5Ml5*EBpIth zQ)zAfyx!G^OncOVL-fML-KkEMene&C^~4tX;FSBpd}1~J=c!1H>kr21MUDsr0=UIV zK5arHoHiR|+Jv;JcfPabQO3X1?`ZJ!?&XJBY(U%p-2`lZGn4YFi4nn7?FmajSy>TP zxAkR_dv)1;$4g~btkh+X2O@rWmjeGCMPv-`zV)h(+l{G&lX8})(2;O_QNFn)`uBb&W&n^{YmWF z{-mQI|NpvhIieO}r!+wme7{|8qMO03x=-_+XxcHF z_IlX?9omWd=QAx|!$tXtUX#7FBpcV3(wY6r+TD7$G{cK0Cu!jOm?- zmx)P?u*WRCPtfK-#$)#)gNw|WEv|b@!%9A8rB%ZX5AVuXKW@Ab2{2BVDsJP= zB`d?}wxclfj3}7yOh( z%pOI6iNpCBGHTk6o&{NX#WEYRWi*f%R~18RSXAvAs$wPT)KDDndhZXdWJT&fLq(62 zNC1#5hX=sOi_*f;h$Yx5!9^;;6FDxKiQQOw-SHqx|KUW3$a)p;uy&U}@QOM-Ue5Om L_3rrd+z|f-xrN`C From 7fb7529b4803ad487650919d5bd981387b63c03d Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Fri, 22 Feb 2019 15:16:07 -0800 Subject: [PATCH 05/21] cargo fmt --- lib/emscripten/src/syscalls/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 3f310be06..2143599f7 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -199,7 +199,8 @@ pub fn ___syscall183(ctx: &mut Ctx, buf_offset: u32, _size: u32) -> u32 { let path_string = path.unwrap().display().to_string(); let len = path_string.len(); unsafe { - let pointer_to_buffer = emscripten_memory_pointer!(ctx.memory(0), buf_offset) as *mut libc::c_char; + let pointer_to_buffer = + emscripten_memory_pointer!(ctx.memory(0), buf_offset) as *mut libc::c_char; let slice = slice::from_raw_parts_mut(pointer_to_buffer, len.clone()); for (byte, loc) in path_string.bytes().zip(slice.iter_mut()) { *loc = byte as _; From ed706133c463edfcf61d5b981752ed00e7d92ec4 Mon Sep 17 00:00:00 2001 From: Andrew Cann Date: Sat, 23 Feb 2019 17:00:03 +0800 Subject: [PATCH 06/21] fix stack overflow in Error's Display impl --- lib/runtime-core/src/error.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index 1f9f60c61..fea5c1e2e 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -365,7 +365,24 @@ impl From for CallError { impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "{}", self) + match self { + Error::CompileError(err) => write!(f, "compile error: {}", err), + Error::LinkError(errs) => { + if errs.len() == 1 { + write!(f, "link error: {}", errs[0]) + } else { + write!(f, "{} link errors:", errs.len())?; + for (i, err) in errs.iter().enumerate() { + write!(f, " ({} of {}) {}", i + 1, errs.len(), err)?; + } + Ok(()) + } + }, + Error::RuntimeError(err) => write!(f, "runtime error: {}", err), + Error::ResolveError(err) => write!(f, "resolve error: {}", err), + Error::CallError(err) => write!(f, "call error: {}", err), + Error::CreationError(err) => write!(f, "creation error: {}", err), + } } } From 2f51694815677da344c9c5e4723179795deac2f6 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 25 Feb 2019 11:46:48 -0800 Subject: [PATCH 07/21] no caching on windows --- src/bin/wasmer.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 6b8c9b54b..a96507f9f 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -1,7 +1,6 @@ extern crate structopt; use std::env; -use std::fs; use std::fs::File; use std::io; use std::io::Read; @@ -14,7 +13,6 @@ use wasmer::webassembly::InstanceABI; use wasmer::*; use wasmer_emscripten; use wasmer_runtime::cache::{Cache as BaseCache, FileSystemCache, WasmHash}; -use wasmer_runtime::error::CacheError; #[derive(Debug, StructOpt)] #[structopt(name = "wasmer", about = "Wasm execution runtime.")] @@ -84,6 +82,12 @@ fn get_cache_dir() -> PathBuf { /// Execute a wasm/wat file fn execute_wasm(options: &Run) -> Result<(), String> { + // force disable caching on windows + #[cfg(target_os = "windows")] + let disable_cache = true; + #[cfg(not(target_os = "windows"))] + let disable_windows = options.disable_cache; + let wasm_path = &options.path; let mut wasm_binary: Vec = read_file_contents(wasm_path).map_err(|err| { @@ -99,7 +103,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { .map_err(|e| format!("Can't convert from wast to wasm: {:?}", e))?; } - let module = if !options.disable_cache { + let module = if !disable_cache { // If we have cache enabled // We generate a hash for the given binary, so we can use it as key @@ -188,8 +192,10 @@ fn main() { CLIOptions::SelfUpdate => { println!("Self update is not supported on Windows. Use install instructions on the Wasmer homepage: https://wasmer.io"); } + #[cfg(not(target_os = "windows"))] CLIOptions::Cache(cache) => match cache { Cache::Clean => { + use std::fs; let cache_dir = get_cache_dir(); fs::remove_dir_all(cache_dir.clone()).expect("Can't remove cache dir"); fs::create_dir(cache_dir.clone()).expect("Can't create cache dir"); @@ -198,5 +204,9 @@ fn main() { println!("{}", get_cache_dir().to_string_lossy()); } }, + #[cfg(target_os = "windows")] + CLIOptions::Cache(_) => { + println!("Caching is disabled for Windows."); + } } } From 9aa63804609a88b92224a7af6d2a31a3ae706d25 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 25 Feb 2019 11:53:15 -0800 Subject: [PATCH 08/21] lol --- src/bin/wasmer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index a96507f9f..d5364504b 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -86,7 +86,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> { #[cfg(target_os = "windows")] let disable_cache = true; #[cfg(not(target_os = "windows"))] - let disable_windows = options.disable_cache; + let disable_cache = options.disable_cache; let wasm_path = &options.path; From c5c967da00628f49f8e9c70be584fa606b78abce Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Mon, 25 Feb 2019 12:03:48 -0800 Subject: [PATCH 09/21] Added parallel compilation (#209) --- Cargo.lock | 1 + lib/clif-backend/Cargo.toml | 1 + lib/clif-backend/src/lib.rs | 1 + lib/clif-backend/src/resolver.rs | 56 +++++++++++++++++--------- lib/runtime-core/src/structures/map.rs | 4 ++ 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b062168f..1b7b19bc5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1220,6 +1220,7 @@ dependencies = [ "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.85 (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.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 701f821fc..06fd397dc 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -19,6 +19,7 @@ wasmparser = "0.23.0" byteorder = "1" nix = "0.13.0" libc = "0.2.48" +rayon = "1.0" # Dependencies for caching. [dependencies.serde] diff --git a/lib/clif-backend/src/lib.rs b/lib/clif-backend/src/lib.rs index df2e4e208..c4abf644f 100644 --- a/lib/clif-backend/src/lib.rs +++ b/lib/clif-backend/src/lib.rs @@ -24,6 +24,7 @@ use wasmer_runtime_core::{ #[macro_use] extern crate serde_derive; +extern crate rayon; extern crate serde; use wasmparser::{self, WasmDecoder}; diff --git a/lib/clif-backend/src/resolver.rs b/lib/clif-backend/src/resolver.rs index 604778f01..53b3a789a 100644 --- a/lib/clif-backend/src/resolver.rs +++ b/lib/clif-backend/src/resolver.rs @@ -7,6 +7,7 @@ use crate::{ }, signal::HandlerData, }; +use rayon::prelude::*; use byteorder::{ByteOrder, LittleEndian}; use cranelift_codegen::{ir, isa, Context}; @@ -92,25 +93,45 @@ impl FuncResolverBuilder { function_bodies: Map, info: &ModuleInfo, ) -> CompileResult<(Self, HandlerData)> { - let mut compiled_functions: Vec> = Vec::with_capacity(function_bodies.len()); - let mut local_relocs = Map::with_capacity(function_bodies.len()); - let mut external_relocs = Map::new(); + let num_func_bodies = function_bodies.len(); + let mut compiled_functions: Vec<(Vec, RelocSink)> = Vec::with_capacity(num_func_bodies); + let mut local_relocs = Map::with_capacity(num_func_bodies); + let mut external_relocs = Map::with_capacity(num_func_bodies); let mut trap_sink = TrapSink::new(); - let mut local_trap_sink = LocalTrapSink::new(); - let mut ctx = Context::new(); + let compiled_functions: Result, (RelocSink, LocalTrapSink))>, CompileError> = + function_bodies + .into_vec() + .par_iter() + .map_init( + || Context::new(), + |ctx, func| { + let mut code_buf = Vec::new(); + ctx.func = func.to_owned(); + let mut reloc_sink = RelocSink::new(); + let mut local_trap_sink = LocalTrapSink::new(); + + ctx.compile_and_emit( + isa, + &mut code_buf, + &mut reloc_sink, + &mut local_trap_sink, + ) + .map_err(|e| CompileError::InternalError { msg: e.to_string() })?; + ctx.clear(); + Ok((code_buf, (reloc_sink, local_trap_sink))) + }, + ) + .collect(); + + let compiled_functions = compiled_functions?; let mut total_size = 0; - - for (_, func) in function_bodies { - ctx.func = func; - let mut code_buf = Vec::new(); - let mut reloc_sink = RelocSink::new(); - - ctx.compile_and_emit(isa, &mut code_buf, &mut reloc_sink, &mut local_trap_sink) - .map_err(|e| CompileError::InternalError { msg: e.to_string() })?; - ctx.clear(); - + // We separate into two iterators, one iterable and one into iterable + let (code_bufs, sinks): (Vec>, Vec<(RelocSink, LocalTrapSink)>) = + compiled_functions.into_iter().unzip(); + for (code_buf, (reloc_sink, mut local_trap_sink)) in code_bufs.iter().zip(sinks.into_iter()) + { // Clear the local trap sink and consolidate all trap info // into a single location. trap_sink.drain_local(total_size, &mut local_trap_sink); @@ -118,7 +139,6 @@ impl FuncResolverBuilder { // Round up each function's size to pointer alignment. total_size += round_up(code_buf.len(), mem::size_of::()); - compiled_functions.push(code_buf); local_relocs.push(reloc_sink.local_relocs.into_boxed_slice()); external_relocs.push(reloc_sink.external_relocs.into_boxed_slice()); } @@ -145,10 +165,10 @@ impl FuncResolverBuilder { *i = 0xCC; } - let mut map = Map::with_capacity(compiled_functions.len()); + let mut map = Map::with_capacity(num_func_bodies); let mut previous_end = 0; - for compiled in compiled_functions.iter() { + for compiled in code_bufs.iter() { let new_end = previous_end + round_up(compiled.len(), mem::size_of::()); unsafe { memory.as_slice_mut()[previous_end..previous_end + compiled.len()] diff --git a/lib/runtime-core/src/structures/map.rs b/lib/runtime-core/src/structures/map.rs index d7177c427..add5b0257 100644 --- a/lib/runtime-core/src/structures/map.rs +++ b/lib/runtime-core/src/structures/map.rs @@ -56,6 +56,10 @@ where pub fn into_boxed_map(self) -> BoxedMap { BoxedMap::new(self.elems.into_boxed_slice()) } + + pub fn into_vec(self) -> Vec { + self.elems + } } impl Map From deac24c0bdef7214b652fdd85076bd7d9141b83b Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 25 Feb 2019 12:06:23 -0800 Subject: [PATCH 10/21] fix windows installer --- src/installer/wasmer.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/installer/wasmer.iss b/src/installer/wasmer.iss index 04850eb7a..f844eb4da 100644 --- a/src/installer/wasmer.iss +++ b/src/installer/wasmer.iss @@ -11,7 +11,7 @@ ChangesEnvironment=yes OutputBaseFilename=WasmerInstaller [Files] -Source: "..\target\release\wasmer.exe"; DestDir: "{app}\bin" +Source: "..\..\target\release\wasmer.exe"; DestDir: "{app}\bin" [Code] const EnvironmentKey = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'; From f9c0e0c07869306b5fbb027210ae062745e908c8 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 25 Feb 2019 12:25:28 -0800 Subject: [PATCH 11/21] Fix formatting --- lib/runtime-core/src/error.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-core/src/error.rs b/lib/runtime-core/src/error.rs index fea5c1e2e..abc69cc5e 100644 --- a/lib/runtime-core/src/error.rs +++ b/lib/runtime-core/src/error.rs @@ -377,7 +377,7 @@ impl std::fmt::Display for Error { } Ok(()) } - }, + } Error::RuntimeError(err) => write!(f, "runtime error: {}", err), Error::ResolveError(err) => write!(f, "resolve error: {}", err), Error::CallError(err) => write!(f, "call error: {}", err), From 53c8603464bd2c50fcb3b83cdbbf954e59f3cfa4 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 25 Feb 2019 13:28:37 -0800 Subject: [PATCH 12/21] Updated crates version to 0.2.0 --- Cargo.lock | 107 +++++++++++++-------------- lib/clif-backend/Cargo.toml | 8 +- lib/emscripten/Cargo.toml | 8 +- lib/runtime-c-api/Cargo.toml | 6 +- lib/runtime-core/Cargo.toml | 5 +- lib/runtime/Cargo.toml | 6 +- lib/spectests/Cargo.toml | 6 +- lib/win-exception-handler/Cargo.toml | 6 +- 8 files changed, 72 insertions(+), 80 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b7b19bc5..2d9f3cca3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,7 +29,7 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -47,7 +47,7 @@ dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -58,7 +58,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -136,7 +136,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -353,7 +353,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -363,7 +363,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -488,12 +488,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.48" -source = "git+https://github.com/rust-lang/libc#42cd3ba27254c423e03f6f4324de57075047f6a0" - -[[package]] -name = "libc" -version = "0.2.48" +version = "0.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -527,7 +522,7 @@ name = "memchr" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -535,7 +530,7 @@ name = "memmap" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -560,7 +555,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -572,7 +567,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -600,7 +595,7 @@ name = "num_cpus" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -617,7 +612,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -635,7 +630,7 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -690,7 +685,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -745,7 +740,7 @@ name = "rand_jitter" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -757,7 +752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -816,7 +811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1043,7 +1038,7 @@ version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1063,7 +1058,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1089,7 +1084,7 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1202,15 +1197,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.2", - "wasmer-emscripten 0.1.0", - "wasmer-runtime 0.1.4", - "wasmer-runtime-core 0.1.2", + "wasmer-clif-backend 0.2.0", + "wasmer-emscripten 0.2.0", + "wasmer-runtime 0.2.0", + "wasmer-runtime-core 0.2.0", ] [[package]] name = "wasmer-clif-backend" -version = "0.1.2" +version = "0.2.0" 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)", @@ -1218,7 +1213,7 @@ dependencies = [ "cranelift-native 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-wasm 0.26.0 (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.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.0 (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.85 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1226,52 +1221,52 @@ dependencies = [ "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.58 (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.2", - "wasmer-win-exception-handler 0.0.1", + "wasmer-runtime-core 0.2.0", + "wasmer-win-exception-handler 0.2.0", "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)", ] [[package]] name = "wasmer-emscripten" -version = "0.1.0" +version = "0.2.0" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (git+https://github.com/rust-lang/libc)", + "libc 0.2.49 (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)", "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.1.2", - "wasmer-runtime-core 0.1.2", + "wasmer-clif-backend 0.2.0", + "wasmer-runtime-core 0.2.0", ] [[package]] name = "wasmer-runtime" -version = "0.1.4" +version = "0.2.0" dependencies = [ "criterion 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.1.2", - "wasmer-runtime-core 0.1.2", + "wasmer-clif-backend 0.2.0", + "wasmer-runtime-core 0.2.0", ] [[package]] name = "wasmer-runtime-c-api" -version = "0.1.4" +version = "0.2.0" dependencies = [ "cbindgen 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime 0.1.4", - "wasmer-runtime-core 0.1.2", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmer-runtime 0.2.0", + "wasmer-runtime-core 0.2.0", ] [[package]] name = "wasmer-runtime-core" -version = "0.1.2" +version = "0.2.0" dependencies = [ "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1280,7 +1275,7 @@ dependencies = [ "hex 0.3.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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "meowhash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1289,29 +1284,28 @@ dependencies = [ "serde-bench 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)", - "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)", ] [[package]] name = "wasmer-spectests" -version = "0.1.2" +version = "0.2.0" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-clif-backend 0.1.2", - "wasmer-runtime-core 0.1.2", + "wasmer-clif-backend 0.2.0", + "wasmer-runtime-core 0.2.0", ] [[package]] name = "wasmer-win-exception-handler" -version = "0.0.1" +version = "0.2.0" dependencies = [ "bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.1.2", + "wasmer-runtime-core 0.2.0", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1331,7 +1325,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1436,8 +1430,7 @@ dependencies = [ "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" -"checksum libc 0.2.48 (git+https://github.com/rust-lang/libc)" = "" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" +"checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" diff --git a/lib/clif-backend/Cargo.toml b/lib/clif-backend/Cargo.toml index 06fd397dc..3ac5105cf 100644 --- a/lib/clif-backend/Cargo.toml +++ b/lib/clif-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-clif-backend" -version = "0.1.2" +version = "0.2.0" description = "Wasmer runtime Cranelift compiler backend" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,7 +8,7 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.1.2" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } cranelift-native = "0.26.0" cranelift-codegen = "0.26.0" cranelift-entity = "0.26.0" @@ -18,7 +18,7 @@ target-lexicon = "0.2.0" wasmparser = "0.23.0" byteorder = "1" nix = "0.13.0" -libc = "0.2.48" +libc = "0.2.49" rayon = "1.0" # Dependencies for caching. @@ -33,7 +33,7 @@ version = "0.0.7" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["errhandlingapi", "minwindef", "minwinbase", "winnt"] } -wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.0.1" } +wasmer-win-exception-handler = { path = "../win-exception-handler", version = "0.2.0" } [features] debug = ["wasmer-runtime-core/debug"] diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index ec5e035d6..1300eb124 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.1.0" +version = "0.2.0" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,9 +9,9 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.1.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } lazy_static = "1.2.0" -libc = { git = "https://github.com/rust-lang/libc" } +libc = "0.2.49" byteorder = "1" time = "0.1.41" @@ -19,7 +19,7 @@ time = "0.1.41" rand = "0.6" [dev-dependencies] -wasmer-clif-backend = { path = "../clif-backend", version = "0.1.0" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } wabt = "0.7.2" [build-dependencies] diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index 692c03cd7..d2b327c22 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.1.4" +version = "0.2.0" description = "Wasmer c-api library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,8 +9,8 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-runtime = { path = "../runtime", version = "0.1.2" } -wasmer-runtime-core = { path = "../runtime-core", version = "0.1.2" } +wasmer-runtime = { path = "../runtime", version = "0.2.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } libc = "0.2" [lib] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index cd0648613..3d61a858c 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.1.2" +version = "0.2.0" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -15,7 +15,7 @@ parking_lot = "0.7.1" lazy_static = "1.2.0" indexmap = "1.0.2" errno = "0.2.4" -libc = "0.2.48" +libc = "0.2.49" hex = "0.3.2" # Dependencies for caching. @@ -41,7 +41,6 @@ features = ["serde"] winapi = { version = "0.3", features = ["memoryapi"] } [dev-dependencies] -wasmer-clif-backend = { path = "../clif-backend", version = "0.1.2" } field-offset = "0.1.1" [features] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index 979fae140..f7aa32cb5 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.1.4" +version = "0.2.0" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -14,11 +14,11 @@ memmap = "0.7.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.1.2" +version = "0.2.0" [dependencies.wasmer-clif-backend] path = "../clif-backend" -version = "0.1.2" +version = "0.2.0" [dev-dependencies] tempfile = "3.0.7" diff --git a/lib/spectests/Cargo.toml b/lib/spectests/Cargo.toml index f69782b40..672013dd9 100644 --- a/lib/spectests/Cargo.toml +++ b/lib/spectests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-spectests" -version = "0.1.2" +version = "0.2.0" description = "Wasmer spectests library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,13 +9,13 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } [build-dependencies] wabt = "0.7.2" [dev-dependencies] -wasmer-clif-backend = { path = "../clif-backend", version = "0.1.2" } +wasmer-clif-backend = { path = "../clif-backend", version = "0.2.0" } wabt = "0.7.2" [features] diff --git a/lib/win-exception-handler/Cargo.toml b/lib/win-exception-handler/Cargo.toml index 043dc3c59..18855212b 100644 --- a/lib/win-exception-handler/Cargo.toml +++ b/lib/win-exception-handler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-win-exception-handler" -version = "0.0.1" +version = "0.2.0" description = "Wasmer runtime exception handling for Windows" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -8,9 +8,9 @@ repository = "https://github.com/wasmerio/wasmer" edition = "2018" [target.'cfg(windows)'.dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.1.2" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } winapi = { version = "0.3", features = ["winbase", "errhandlingapi", "minwindef", "minwinbase", "winnt"] } -libc = "0.2.48" +libc = "0.2.49" [build-dependencies] cmake = "0.1.35" From 2b1aedfbc40152fff7d34614d4686fcb42b598d2 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Mon, 25 Feb 2019 14:48:39 -0800 Subject: [PATCH 13/21] install inno setup in appveyor --- .appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index 488e400fd..4ec05f8c7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -21,6 +21,10 @@ install: - set PATH=%PATH%;%USERPROFILE%\.cargo\bin - rustc -vV - cargo -vV + # Install InnoSetup + - appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/2017-08-22-is.exe + - 2017-08-22-is.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- + - set PATH="C:\Program Files (x86)\Inno Setup 5";%PATH% build_script: - cargo build --verbose From e7d08712b53a01581edae5c220da4bdd2a149a31 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 25 Feb 2019 17:37:33 -0800 Subject: [PATCH 14/21] Use blake2 hashing algorithm --- Cargo.lock | 51 ++++++++++++++++++++++++++++------- lib/runtime-core/Cargo.toml | 4 +-- lib/runtime-core/src/cache.rs | 8 +++--- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d9f3cca3..f8b6f496b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,6 +87,22 @@ name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "blake2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "1.3.1" @@ -305,6 +321,15 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "csv" version = "1.0.5" @@ -539,14 +564,6 @@ name = "memoffset" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "meowhash" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nix" version = "0.12.0" @@ -598,6 +615,11 @@ dependencies = [ "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "opaque-debug" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "owning_ref" version = "0.4.0" @@ -991,6 +1013,11 @@ dependencies = [ "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" version = "0.13.11" @@ -1268,6 +1295,7 @@ dependencies = [ name = "wasmer-runtime-core" version = "0.2.0" dependencies = [ + "blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", @@ -1276,7 +1304,6 @@ dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", - "meowhash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.12.0 (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)", @@ -1384,6 +1411,8 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427" "checksum cbindgen 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32e01024aaf5390d6a8145047371a4f5b0063a14c1e411bc731353bd2278ca44" @@ -1406,6 +1435,7 @@ dependencies = [ "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" "checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" @@ -1437,13 +1467,13 @@ dependencies = [ "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "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 meowhash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b00a85ae2fa3525c3f0e6e7b87bec96ab5587100d7ba7b3e30e1885960a8230b" "checksum nix 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "921f61dc817b379d0834e45d5ec45beaacfae97082090a49c2cf30dcbc30206f" "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 nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f89ef58b3d32420dbd1a43d2f38ae92f6239ef12bb556ab09ca55445f5a67242" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" @@ -1491,6 +1521,7 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum structopt 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "670ad348dc73012fcf78c71f06f9d942232cdd4c859d4b6975e27836c3efc0c3" "checksum structopt-derive 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ef98172b1a00b0bec738508d3726540edcbd186d50dfd326f2b1febbb3559f04" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 3d61a858c..5e89c7cde 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -29,8 +29,8 @@ version = "1.0" version = "0.10" [dependencies.serde-bench] version = "0.0.7" -[dependencies.meowhash] -version = "0.1.2" +[dependencies.blake2] +version = "0.8" [dependencies.digest] version = "0.8.0" [dependencies.hashbrown] diff --git a/lib/runtime-core/src/cache.rs b/lib/runtime-core/src/cache.rs index 4859bd390..d4d01edd9 100644 --- a/lib/runtime-core/src/cache.rs +++ b/lib/runtime-core/src/cache.rs @@ -2,8 +2,7 @@ use crate::{ module::{Module, ModuleInfo}, sys::Memory, }; -use digest::Digest; -use meowhash::MeowHasher; +use blake2::{Blake2b, Digest}; use std::{fmt, io, mem, slice}; #[derive(Debug)] @@ -45,7 +44,10 @@ impl WasmHash { pub fn generate(wasm: &[u8]) -> Self { let mut first_part = [0u8; 32]; let mut second_part = [0u8; 32]; - let generic_array = MeowHasher::digest(wasm); + + let mut hasher = Blake2b::new(); + hasher.input(wasm); + let generic_array = hasher.result(); first_part.copy_from_slice(&generic_array[0..32]); second_part.copy_from_slice(&generic_array[32..64]); From 2d49d58665f6447e1f82939c65ccbd0333b121c0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Mon, 25 Feb 2019 17:43:25 -0800 Subject: [PATCH 15/21] Use blake2b (simd) version instead of blake2 --- Cargo.lock | 56 +++++++++++++---------------------- lib/runtime-core/Cargo.toml | 4 +-- lib/runtime-core/src/cache.rs | 7 ++--- 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8b6f496b..b2222ed55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,6 +16,11 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "arrayref" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arrayvec" version = "0.4.10" @@ -88,21 +93,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "blake2" -version = "0.8.0" +name = "blake2b_simd" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "byteorder" version = "1.3.1" @@ -186,6 +186,11 @@ dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "constant_time_eq" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "cranelift-bforest" version = "0.26.0" @@ -321,15 +326,6 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crypto-mac" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "csv" version = "1.0.5" @@ -615,11 +611,6 @@ dependencies = [ "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "opaque-debug" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "owning_ref" version = "0.4.0" @@ -1013,11 +1004,6 @@ dependencies = [ "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "syn" version = "0.13.11" @@ -1295,7 +1281,7 @@ dependencies = [ name = "wasmer-runtime-core" version = "0.2.0" dependencies = [ - "blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "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)", @@ -1404,6 +1390,7 @@ dependencies = [ [metadata] "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" @@ -1411,8 +1398,7 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum bindgen 0.46.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f7f7f0701772b17de73e4f5cbcb1dd6926f4706cba4c1ab62c5367f8bdc94e1" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce2571a6cd634670daa2977cc894c1cc2ba57c563c498e5a82c35446f34d056e" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427" "checksum cbindgen 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32e01024aaf5390d6a8145047371a4f5b0063a14c1e411bc731353bd2278ca44" @@ -1423,6 +1409,7 @@ dependencies = [ "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "6ec65ee4f9c9d16f335091d23693457ed4928657ba4982289d7fafee03bc614a" +"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum cranelift-bforest 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "40f8ff24e9a6c89b8a846b14df9a34d2cac17cea7bdb5c81ed6b4744ee0e38bf" "checksum cranelift-codegen 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "42f5b809bd885c368e01aeec8fe04f21dcb07569834b907d75b4a7bed8d067eb" "checksum cranelift-codegen-meta 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "014c23ed3ebdc8377d41540af638245207dd169f421df042dfccc867465734ed" @@ -1435,7 +1422,6 @@ dependencies = [ "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" -"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" "checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" @@ -1473,7 +1459,6 @@ dependencies = [ "checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" -"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum page_size 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f89ef58b3d32420dbd1a43d2f38ae92f6239ef12bb556ab09ca55445f5a67242" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" @@ -1521,7 +1506,6 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum structopt 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "670ad348dc73012fcf78c71f06f9d942232cdd4c859d4b6975e27836c3efc0c3" "checksum structopt-derive 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ef98172b1a00b0bec738508d3726540edcbd186d50dfd326f2b1febbb3559f04" -"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 5e89c7cde..00ac57189 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -29,8 +29,8 @@ version = "1.0" version = "0.10" [dependencies.serde-bench] version = "0.0.7" -[dependencies.blake2] -version = "0.8" +[dependencies.blake2b_simd] +version = "0.4.1" [dependencies.digest] version = "0.8.0" [dependencies.hashbrown] diff --git a/lib/runtime-core/src/cache.rs b/lib/runtime-core/src/cache.rs index d4d01edd9..ec2b0b01f 100644 --- a/lib/runtime-core/src/cache.rs +++ b/lib/runtime-core/src/cache.rs @@ -2,7 +2,7 @@ use crate::{ module::{Module, ModuleInfo}, sys::Memory, }; -use blake2::{Blake2b, Digest}; +use blake2b_simd::blake2b; use std::{fmt, io, mem, slice}; #[derive(Debug)] @@ -45,9 +45,8 @@ impl WasmHash { let mut first_part = [0u8; 32]; let mut second_part = [0u8; 32]; - let mut hasher = Blake2b::new(); - hasher.input(wasm); - let generic_array = hasher.result(); + let mut hasher = blake2b(wasm); + let generic_array = hasher.as_bytes(); first_part.copy_from_slice(&generic_array[0..32]); second_part.copy_from_slice(&generic_array[32..64]); From e6d0f91832662dada7a36cbf06e112843a5167a1 Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 26 Feb 2019 01:12:34 -0800 Subject: [PATCH 16/21] Use blake2b SIMD version for increased performance --- lib/runtime-core/src/cache.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/runtime-core/src/cache.rs b/lib/runtime-core/src/cache.rs index ec2b0b01f..339b78fcc 100644 --- a/lib/runtime-core/src/cache.rs +++ b/lib/runtime-core/src/cache.rs @@ -2,7 +2,7 @@ use crate::{ module::{Module, ModuleInfo}, sys::Memory, }; -use blake2b_simd::blake2b; +use blake2b_simd::blake2bp; use std::{fmt, io, mem, slice}; #[derive(Debug)] @@ -45,7 +45,10 @@ impl WasmHash { let mut first_part = [0u8; 32]; let mut second_part = [0u8; 32]; - let mut hasher = blake2b(wasm); + let mut state = blake2bp::State::new(); + state.update(wasm); + + let mut hasher = state.finalize(); let generic_array = hasher.as_bytes(); first_part.copy_from_slice(&generic_array[0..32]); From 204d7a8d17a45ac22c4e19eb8ca4eff0cfa84532 Mon Sep 17 00:00:00 2001 From: Mark Roberts Date: Tue, 26 Feb 2019 20:17:48 +0800 Subject: [PATCH 17/21] Add nginx LICENSE --- examples/nginx/LICENSE | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 examples/nginx/LICENSE diff --git a/examples/nginx/LICENSE b/examples/nginx/LICENSE new file mode 100644 index 000000000..c63e0ba4e --- /dev/null +++ b/examples/nginx/LICENSE @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2002-2019 Igor Sysoev + * Copyright (C) 2011-2019 Nginx, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ From f7197bf456299ffb70f3d755d59f513091b9a2da Mon Sep 17 00:00:00 2001 From: Syrus Date: Tue, 26 Feb 2019 15:39:54 -0800 Subject: [PATCH 18/21] Added debug build --- Cargo.toml | 2 +- Makefile | 5 ++++- lib/runtime/README.md | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 15b09e542..21bbfa60c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,6 @@ glob = "0.2.11" [features] default = ["fast-tests"] -debug = [] +debug = ["wasmer-clif-backend/debug", "wasmer-runtime-core/debug"] # This feature will allow cargo test to run much faster fast-tests = [] diff --git a/Makefile b/Makefile index 2506f196c..74e3428fc 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ capi: # rm -rf artifacts build: - cargo build + cargo build --features debug install: cargo install --path . @@ -47,6 +47,9 @@ release: # brew install mingw-w64 cargo build --release +debug-release: + cargo build --release --features debug + debug-release: cargo build --release --features "debug" diff --git a/lib/runtime/README.md b/lib/runtime/README.md index bd9bb0f0c..5e5542c8d 100644 --- a/lib/runtime/README.md +++ b/lib/runtime/README.md @@ -51,7 +51,7 @@ fn main() -> error::Result<()> { // We're not importing anything, so make an empty import object. let import_object = imports! {}; - let mut instance = instantiate(WASM, import_object)?; + let mut instance = instantiate(WASM, &import_object)?; let values = instance .func("add_one")? From ff5e1320daf3b52902f2fb2f69f4d800f495d8f3 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Wed, 27 Feb 2019 13:54:28 -0800 Subject: [PATCH 19/21] Fix casting errors cause io issues (#222) --- lib/emscripten/src/syscalls/mod.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/emscripten/src/syscalls/mod.rs b/lib/emscripten/src/syscalls/mod.rs index 2143599f7..7c5ee578b 100644 --- a/lib/emscripten/src/syscalls/mod.rs +++ b/lib/emscripten/src/syscalls/mod.rs @@ -71,10 +71,10 @@ pub fn ___syscall3(ctx: &mut Ctx, which: i32, mut varargs: VarArgs) -> i32 { debug!("emscripten::___syscall3 (read) {}", which); let fd: i32 = varargs.get(ctx); let buf: u32 = varargs.get(ctx); - let count = varargs.get(ctx); + let count: i32 = varargs.get(ctx); debug!("=> fd: {}, buf_offset: {}, count: {}", fd, buf, count); let buf_addr = emscripten_memory_pointer!(ctx.memory(0), buf) as *mut c_void; - let ret = unsafe { read(fd, buf_addr, count) }; + let ret = unsafe { read(fd, buf_addr, count as _) }; debug!("=> ret: {}", ret); ret as _ } @@ -84,10 +84,10 @@ pub fn ___syscall4(ctx: &mut Ctx, which: c_int, mut varargs: VarArgs) -> c_int { debug!("emscripten::___syscall4 (write) {}", which); let fd: i32 = varargs.get(ctx); let buf: u32 = varargs.get(ctx); - let count = varargs.get(ctx); + let count: i32 = varargs.get(ctx); debug!("=> fd: {}, buf: {}, count: {}", fd, buf, count); let buf_addr = emscripten_memory_pointer!(ctx.memory(0), buf) as *const c_void; - unsafe { write(fd, buf_addr, count) as i32 } + unsafe { write(fd, buf_addr, count as _) as i32 } } /// close @@ -241,10 +241,10 @@ pub fn ___syscall140(ctx: &mut Ctx, which: i32, mut varargs: VarArgs) -> i32 { // -> c_int debug!("emscripten::___syscall140 (lseek) {}", which); let fd: i32 = varargs.get(ctx); - let offset = varargs.get(ctx); + let offset: i32 = varargs.get(ctx); let whence: i32 = varargs.get(ctx); debug!("=> fd: {}, offset: {}, whence = {}", fd, offset, whence); - unsafe { lseek(fd, offset, whence) as _ } + unsafe { lseek(fd, offset as _, whence) as _ } } /// readv From 95062d524ac56ce3229c2dc28248489c12954a63 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Wed, 27 Feb 2019 14:20:53 -0800 Subject: [PATCH 20/21] commit virtual memory before copying (#212) --- lib/runtime-core/src/sys/windows/memory.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/runtime-core/src/sys/windows/memory.rs b/lib/runtime-core/src/sys/windows/memory.rs index d47388170..3ca86bec9 100644 --- a/lib/runtime-core/src/sys/windows/memory.rs +++ b/lib/runtime-core/src/sys/windows/memory.rs @@ -33,7 +33,7 @@ impl Memory { let protect = protection.to_protect_const(); - let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, MEM_RESERVE, protect) }; + let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, MEM_RESERVE | MEM_COMMIT, protect) }; if ptr.is_null() { Err("unable to allocate memory".to_string()) @@ -57,7 +57,14 @@ impl Memory { let size = round_up_to_page_size(size, page_size::get()); - let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, MEM_RESERVE, PAGE_NOACCESS) }; + let ptr = unsafe { + VirtualAlloc( + ptr::null_mut(), + size, + MEM_RESERVE | MEM_COMMIT, + PAGE_NOACCESS, + ) + }; if ptr.is_null() { Err(MemoryCreationError::VirtualMemoryAllocationFailed( From 60f8f15db37b004e005a368c23b343f0095aac97 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 27 Feb 2019 17:20:49 -0800 Subject: [PATCH 21/21] Updated version to 0.2.1 --- Cargo.lock | 30 +++++++++++++++--------------- Cargo.toml | 2 +- lib/emscripten/Cargo.toml | 4 ++-- lib/runtime-c-api/Cargo.toml | 6 +++--- lib/runtime-core/Cargo.toml | 2 +- lib/runtime/Cargo.toml | 4 ++-- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2222ed55..6940f529c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1205,15 +1205,15 @@ dependencies = [ [[package]] name = "wasmer" -version = "0.2.0" +version = "0.2.1" 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.2.0", - "wasmer-emscripten 0.2.0", - "wasmer-runtime 0.2.0", - "wasmer-runtime-core 0.2.0", + "wasmer-emscripten 0.2.1", + "wasmer-runtime 0.2.1", + "wasmer-runtime-core 0.2.1", ] [[package]] @@ -1234,7 +1234,7 @@ dependencies = [ "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.58 (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.2.0", + "wasmer-runtime-core 0.2.1", "wasmer-win-exception-handler 0.2.0", "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)", @@ -1242,7 +1242,7 @@ dependencies = [ [[package]] name = "wasmer-emscripten" -version = "0.2.0" +version = "0.2.1" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1252,34 +1252,34 @@ dependencies = [ "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.2.0", - "wasmer-runtime-core 0.2.0", + "wasmer-runtime-core 0.2.1", ] [[package]] name = "wasmer-runtime" -version = "0.2.0" +version = "0.2.1" dependencies = [ "criterion 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.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.7 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-runtime-core 0.2.0", + "wasmer-runtime-core 0.2.1", ] [[package]] name = "wasmer-runtime-c-api" -version = "0.2.0" +version = "0.2.1" dependencies = [ "cbindgen 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime 0.2.0", - "wasmer-runtime-core 0.2.0", + "wasmer-runtime 0.2.1", + "wasmer-runtime-core 0.2.1", ] [[package]] name = "wasmer-runtime-core" -version = "0.2.0" +version = "0.2.1" dependencies = [ "blake2b_simd 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1307,7 +1307,7 @@ version = "0.2.0" dependencies = [ "wabt 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-backend 0.2.0", - "wasmer-runtime-core 0.2.0", + "wasmer-runtime-core 0.2.1", ] [[package]] @@ -1318,7 +1318,7 @@ dependencies = [ "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-runtime-core 0.2.0", + "wasmer-runtime-core 0.2.1", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/Cargo.toml b/Cargo.toml index 21bbfa60c..85dddd1ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer" -version = "0.2.0" +version = "0.2.1" authors = ["The Wasmer Engineering Team "] edition = "2018" repository = "https://github.com/wasmerio/wasmer" diff --git a/lib/emscripten/Cargo.toml b/lib/emscripten/Cargo.toml index 1300eb124..62fb40c5a 100644 --- a/lib/emscripten/Cargo.toml +++ b/lib/emscripten/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-emscripten" -version = "0.2.0" +version = "0.2.1" description = "Wasmer runtime emscripten implementation library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,7 +9,7 @@ edition = "2018" build = "build/mod.rs" [dependencies] -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } lazy_static = "1.2.0" libc = "0.2.49" byteorder = "1" diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index d2b327c22..3a88431f7 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-c-api" -version = "0.2.0" +version = "0.2.1" description = "Wasmer c-api library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -9,8 +9,8 @@ edition = "2018" readme = "README.md" [dependencies] -wasmer-runtime = { path = "../runtime", version = "0.2.0" } -wasmer-runtime-core = { path = "../runtime-core", version = "0.2.0" } +wasmer-runtime = { path = "../runtime", version = "0.2.1" } +wasmer-runtime-core = { path = "../runtime-core", version = "0.2.1" } libc = "0.2" [lib] diff --git a/lib/runtime-core/Cargo.toml b/lib/runtime-core/Cargo.toml index 00ac57189..c6ac22f40 100644 --- a/lib/runtime-core/Cargo.toml +++ b/lib/runtime-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime-core" -version = "0.2.0" +version = "0.2.1" description = "Wasmer runtime core library" license = "MIT" authors = ["The Wasmer Engineering Team "] diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index f7aa32cb5..3ad8cbadc 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasmer-runtime" -version = "0.2.0" +version = "0.2.1" description = "Wasmer runtime library" license = "MIT" authors = ["The Wasmer Engineering Team "] @@ -14,7 +14,7 @@ memmap = "0.7.0" [dependencies.wasmer-runtime-core] path = "../runtime-core" -version = "0.2.0" +version = "0.2.1" [dependencies.wasmer-clif-backend] path = "../clif-backend"