Commit Graph

49 Commits

Author SHA1 Message Date
Ivan Enderlin
ea78fe5fa4 test(api) Fix test about FromToNativeWasmType. 2020-07-02 17:19:54 +02:00
Ivan Enderlin
8c937d3db4 Merge branch 'master' into feat-rename-wasmexterntype 2020-07-02 11:23:08 +02:00
Ivan Enderlin
ea0a0ec127 feat(api) Avoid string allocations in FromToNativeWasmType.
When `from_native` or `to_native` fail, panic with a `&'static str`
instead of a `String`. Since this string is always created, it's
better to avoid this allocation for every call.
2020-07-02 11:18:47 +02:00
Syrus Akbary
6bb042e0b0 Merge pull request #132 from wasmerio/feat-api-re-export
feat(api) Re-export `WithEnv` and `WithoutEnv`
2020-06-30 12:42:16 -07:00
Ivan Enderlin
12c04fbd94 test(api) Add tests for the FromToNativeWasmType trait. 2020-06-30 12:09:55 +02:00
Ivan Enderlin
26603a7e0c feat(api) Reimplement WasmExternType as FromToNativeWasmType.
In addition to a more self-explanatory renaming from `WasmExternType`
to `FromToNativeWasmType`, this patch updates the `to_native` and the
`from_native` methods to panic when the values cannot be converted
from one type to another by using their respective `TryInto`
implementations.

For instance, `7i8.to_native()` equals to `7i32`, but
`u32::MAX.to_native()` cannot be converted to `i32`, and so it will
panic with the message:

> cannot convert 4294967295u32 to i32.

The old implementation was returning `-1i32`, which was incorrect.
2020-06-30 12:08:45 +02:00
Ivan Enderlin
3c2e191d6a feat(api) Add the WasmTypeList::from_slice method.
This method creates a `WasmTypeList` from a slice of `i128`, similarly
to what `from_array` does, but without knowing the size ahead of time.
2020-06-26 14:54:32 +02:00
Ivan Enderlin
9b721fab1b feat(api) Re-export WithEnv and WithoutEnv.
It is required for `deprecated/runtime-core/`.
2020-06-25 11:15:43 +02:00
Syrus Akbary
308544a41d Merge branch 'master' into feat-wasm-common-host-function-trap-early 2020-06-22 12:09:34 -07:00
Ivan Enderlin
f7493ff358 doc(api) Update. 2020-06-22 15:26:45 +02:00
Ivan Enderlin
1cd6eb8a21 test(api) Write more test cases for WasmTypeList. 2020-06-22 15:25:10 +02:00
Ivan Enderlin
3b03d7071b doc(api) Improve documentation. 2020-06-22 15:09:18 +02:00
Ivan Enderlin
d1e4f7c5ce feat(api) Improve the impl_traits macro + improve documentation.
The macro has been renamed `impl_host_function`, because it's
basically what it does. It implements other types and traits, but it's
all related to host functions.

The documentation has been improved. The generic parameters have been
renamed to be more self-explanatory. The code has been rewritten a little
bit to be easier to read. etc.
2020-06-22 15:05:55 +02:00
Ivan Enderlin
818706b318 doc(api) Improve documentation of HostFunctionKind and impls. 2020-06-22 14:05:19 +02:00
Ivan Enderlin
f8dfdae520 feat(api) Remove FunctionBody and use VMFunctionBody instead.
Avoid having multiple types for the same purpose.
2020-06-22 14:04:29 +02:00
Ivan Enderlin
a3f22afddc feat(api) Improve doc' + rename HostFunction.to_raw to ….function_body_ptr. 2020-06-22 13:40:22 +02:00
Ivan Enderlin
8479f53329 feat(api) Rename TrapEarly to IntoResult. And improve its doc. 2020-06-22 13:20:02 +02:00
Ivan Enderlin
996135ae31 doc(api) Improve documentation of WasmTypeList. 2020-06-22 13:05:04 +02:00
Ivan Enderlin
ef3e43dcff feat(api) Rewrite the wasm_extern_type macro to avoid repetition. 2020-06-22 11:46:30 +02:00
Ivan Enderlin
58c83734f2 test(api) Remove the function_call test.
This test does nothing. It's not using the `Function` API.
2020-06-22 11:42:42 +02:00
Ivan Enderlin
32e02f32dc test(api) Clean up tests. 2020-06-22 11:42:12 +02:00
Ivan Enderlin
a623b9531e chore(api) Rename inner::Func to inner::Function and improve documentation. 2020-06-22 11:33:49 +02:00
Ivan Enderlin
07aff22c30 feat(api/wasm-common) Move WasmExternType from wasm-common to wasmer.
Because there is a trait implementation conflicts for the
implementations `WasmTypeList` for `$x*` where `$x: WasmExternType`.
2020-06-22 11:10:18 +02:00
Ivan Enderlin
63ec941dac Revert "!temp Remove impl of WasmTypeList for Infallible."
This reverts commit ad7c618193.
2020-06-22 11:05:48 +02:00
Ivan Enderlin
ad7c618193 !temp Remove impl of WasmTypeList for Infallible.
I don't think it is necessary anymore.
2020-06-22 10:48:15 +02:00
Ivan Enderlin
5e26d9a74b !temp Move HostFunction, Func & co. into wasmer.
Because `Func` needs an access to the runtime API (`wasmer-runtime`)
to trap properly, either we move parts of `wasmer-runtime` to
`wasm-common`, or we move parts of `wasm-common` into `wasmer`. I
decided to go with the second approach since `wasmer` is the only
crate to use `HostFunction` & co. It's not “common” by definition, and
it's way easier (for the moment).
2020-06-19 15:20:28 +02:00
Ivan Enderlin
4a5ce43787 feat(api) Function::native returns a Result.
This patch updates `Function::native` to return a `Result` rather than
an `Option`.
2020-06-18 15:28:08 +02:00
Mark McCaskey
cf3a391422 Add comment about derefing typecasted pointer 2020-06-16 13:01:51 -07:00
Mark McCaskey
3cebca05d2 Require Env to be 'static in Function 2020-06-16 12:18:24 -07:00
Syrus
74a1463188 Fixed linting 2020-06-15 19:57:08 -07:00
Syrus
cdb7874bce Make tests pass 2020-06-15 19:48:38 -07:00
Mark McCaskey
0191ffe598 Add wip 2020-06-15 18:05:59 -07:00
Mark McCaskey
0f0a8dde34 Merge branch 'master' into feature/functions-own-their-envs 2020-06-15 16:17:24 -07:00
Syrus
99ed3e889e Simplified has_env structure 2020-06-15 13:22:20 -07:00
Syrus
cd1138d520 Added support for native calls to dynamic functions 2020-06-12 20:50:24 -07:00
Mark McCaskey
4bb0df3d22 First draft of functions owning their envs 2020-06-12 16:26:20 -07:00
Syrus Akbary
d37a4d9d80 Merge pull request #105 from wasmerio/feat-clippy
Makes Clippy happy
2020-06-10 07:57:58 -07:00
Mark McCaskey
3f45582097 Merge branch 'master' into trace-issue 2020-06-09 16:35:37 -07:00
Mark McCaskey
87a7f11b63 Merge branch 'master' into trace-issue 2020-06-09 14:42:01 -07:00
Mark McCaskey
7eb54950f1 Revert changes to Exportable 2020-06-09 13:26:12 -07:00
Ivan Enderlin
91d3182e49 chore(api) Copy type instead of cloning it. 2020-06-09 15:51:46 +02:00
Ivan Enderlin
88ea49564b fix(api) Restore the unimplemented! macro. 2020-06-09 15:50:54 +02:00
Ivan Enderlin
e975925cf2 chore(api) Allow complex types. 2020-06-09 15:47:27 +02:00
Syrus
b57bbb1256 Added traps tests 2020-06-08 19:13:13 -07:00
Mark McCaskey
3c76999925 Implement Exportable for &Ts too (for some T) 2020-06-08 16:26:47 -07:00
Mark McCaskey
8530e5eb55 Implement Exportable for NativeFunc 2020-06-08 16:07:22 -07:00
Mark McCaskey
b46ea5b9cb Get NativeFunc passing basic tests 2020-06-08 12:53:00 -07:00
Nick Lewycky
f94696b2ce Fix repeated typo "funciton". 2020-06-06 17:22:26 -07:00
Ivan Enderlin
0ba966018b feat(api) Split the externals module into sub-modules. 2020-05-28 16:07:17 +02:00