Remove need for HostRef<Engine> (#762)

This commit removes the need to use `HostRef<Engine>` in the Rust API.
Usage is retained in the C API in one location, but otherwise `Engine`
can always be used directly.

This is the first step of progress on #708 for the `Engine` type.
Changes here include:

* `Engine` is now `Clone`, and is documented as being cheap. It's not
  intended that cloning an engine creates a deep copy.
* `Engine` is now both `Send` and `Sync`, and asserted to be so.
* Usage of `Engine` in APIs no longer requires or uses `HostRef`.
This commit is contained in:
Alex Crichton
2020-01-06 15:17:03 -06:00
committed by GitHub
parent ad7d48479e
commit b9dc38f4e1
18 changed files with 56 additions and 28 deletions

View File

@@ -92,7 +92,7 @@ pub fn instantiate(
..Default::default()
});
let engine = wasmtime::HostRef::new(wasmtime::Engine::new(&config));
let engine = wasmtime::Engine::new(&config);
let store = wasmtime::HostRef::new(wasmtime::Store::new(&engine));
let module = wasmtime::HostRef::new(wasmtime::Module::new(&store, wasm_data).map_err(err2py)?);

View File

@@ -56,7 +56,7 @@ fn generate_load(item: &syn::ItemTrait) -> syn::Result<TokenStream> {
multi_value: true,
..Default::default()
});
let engine = HostRef::new(Engine::new(&config));
let engine = Engine::new(&config);
let store = HostRef::new(Store::new(&engine));
let global_exports = store.borrow().global_exports().clone();