Commit Graph

1398 Commits

Author SHA1 Message Date
bors[bot]
c101498aa9 Merge #271
271: feat: Implement `wasmer_module_serialize` and `wasmer_module_deserialize` functions in `runtime-c-api` r=Hywan a=Hywan

This PR implements 5 new functions in the `runtime-c-api` crate:

  1. `wasmer_module_serialize` to serialize a module into a `wasmer_serialized_module_t` type,
  2. `wasmer_module_deserialize` to deserialize a serialized module,
  3. `wasmer_serialized_module_bytes` to read the bytes in the `wasmer_serialized_module_t` type into a `wasmer_byte_array`,
  4. `wasmer_serialized_module_from_bytes` to transform a `wasmer_byte_array` into a `wasmer_serialized_module_t`,
  4. `wasmer_serialized_module_destroy` to destroy a `wasmer_serialized_module_t`.

Documentation and a test suite have been added.

We need to change the visibility of the `wasmer_runtime::default_compiler` function to public, since it is used in `runtime-c-api`.

The new test suite `test-module-serialize` does a full roundtrip: A module is compiled, then serialized, then deserialized, to finally be instantiated and a function is called on it.

Thoughts?

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-19 15:36:06 +00:00
Ivan Enderlin
c0f4b6a87c
Merge branch 'master' into feat-runtime-c-api-cache 2019-03-19 16:35:32 +01:00
Ivan Enderlin
c98b283ce4
Merge branch 'master' into feat-runtime-c-api-cache 2019-03-19 16:28:23 +01:00
Ivan Enderlin
57a82fa5cf fix(runtime-c-api) wasmer_serialized_module_from_bytes accepts bytes + length instead of wasmer_byte_array. 2019-03-19 16:24:59 +01:00
bors[bot]
456f58605f Merge #280
280: feat(runtime-c-api) Mirrors the `debug` and `llvm` features r=Hywan a=Hywan

`wasmer-runtime` has a `debug` and a `llvm` feature. Let's mirror
them in `wasmer-runtime-c-api` so that the user can, for instance,
compile with the LLVM backend.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-19 15:19:48 +00:00
Ivan Enderlin
44373aae94 feat(runtime-c-api) Mirrors the debug and llvm features.
`wasmer-runtime` has a `debug` and a `llvm` features. Let's mirror
them in `wasmer-runtime-c-api` so that the user can, for instance,
compile with the LLVM backend.
2019-03-19 11:12:19 +01:00
Ivan Enderlin
46edd20725 feat(runtime-c-api) Add the wasmer_serialized_module_from_bytes function.
This function is required to transform a `wasmer_byte_array` into a
`wasmer_serialized_module_t`. This is the complementary function of
`wasmer_serialized_module_bytes`.
2019-03-19 10:51:43 +01:00
Ivan Enderlin
5e31a1b6d1 feat(runtime-c-api) Introduce the wasmer_serialized_module_t struct type.
The `wasmer_module_serialize` function now computes a
`wasmer_serialized_module_t` value. The `wasmer_module_deserialize`
function takes this value as an input. Same for
`wasmer_serialized_module_destroy`.

The new function `wasmer_serialized_module_bytes` allows to read the
bytes inside the `wasmer_serialized_mdule_t` structure.
2019-03-19 10:04:31 +01:00
Brandon Fish
f402c320e2
Merge pull request #279 from wasmerio/fix/update-circle-bencmark-build-image
Update circleci benchmark build image
2019-03-18 19:59:38 -05:00
Brandon Fish
b18619cd66 Update circleci benchmark build image 2019-03-18 19:56:48 -05:00
bors[bot]
949deb7359 Merge #277
277: Trigger benchmark build after master branch builds complete r=bjfish a=bjfish



Co-authored-by: Brandon Fish <brandon.j.fish@gmail.com>
2019-03-19 00:27:53 +00:00
Ivan Enderlin
f049e9b0b3 fix(runtime-c-api) Remove explicity drop.
When the value goes out-of-scope, `drop` is called utomatically.
2019-03-18 16:09:02 +01:00
Ivan Enderlin
6f04f1ad88 Merge branch 'feat-runtime-c-api-cache' of github.com:Hywan/wasmer into feat-runtime-c-api-cache 2019-03-18 16:05:59 +01:00
Ivan Enderlin
6605a02316 feat(runtime-c-api) Add the wasmer_module_serialization_destroy function. 2019-03-18 16:05:04 +01:00
Brandon Fish
560619793a Remove dependency on test 2019-03-17 14:49:05 -05:00
Brandon Fish
d7778245a7 Trigger benchmark build after master branch builds complete 2019-03-17 14:42:20 -05:00
Ivan Enderlin
212591b908
Merge branch 'master' into feat-runtime-c-api-cache 2019-03-16 14:10:44 +01:00
bors[bot]
cade9a666f Merge #273
273: Fix warnings on windows build r=xmclark a=xmclark

Another developer recently went through and fixed many warnings that were polluting the build:

https://github.com/wasmerio/wasmer/pull/265
https://github.com/wasmerio/wasmer/pull/264
https://github.com/wasmerio/wasmer/pull/263
https://github.com/wasmerio/wasmer/pull/266

This was super great 💟 and it encouraged me to do the same. 

This PR addresses warnings emitted on the windows build. Many warnings from the emscripten and clif-backend module are fixed. 

Co-authored-by: Mackenzie Clark <mackenzie.a.z.c@gmail.com>
2019-03-15 21:46:50 +00:00
Mackenzie Clark
c46ff0dcfc
Merge branch 'master' into fix/windows-warnings-cargo-build 2019-03-15 14:20:34 -07:00
Mackenzie Clark
14104c2c8b fix lots of warnings
fix warnings
2019-03-15 14:10:17 -07:00
bors[bot]
7a709c5501 Merge #264
264: fix(runtime-core) `SharedMemory.desc` is never used, remove it r=xmclark a=Hywan

This patch removes the `desc` field of `SharedMemory`. This field is
never used. Maybe it will be used in the future when the
implementations will be written, but so far, it only generates
warnings.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-15 20:55:37 +00:00
Ivan Enderlin
aac5c88b58 doc(runtime-c-api) Update the documentation of wasmer_module_deserialize. 2019-03-15 12:18:52 +01:00
Ivan Enderlin
082c93ceba chore(runtime-c-api) Fix a merging error. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
2368ce3a20 chore(runtime-c-api) Regenerate the wasmer.hh? files. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
c8872f1a6f test(runtime-c-api) Test the new wasmer_module_(de)?serialize functions.
This test suite compiles a module, then serializes it, deserializes
it, and continues by creating an instance and calling a function on
it. It allows to test the entire roundtrip.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
f2760249b6 fix(runtime-c-api) Reorganize the tests by alphabetic order. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
c142e16d12 feat(runtime-c-api) Implement the wasmer_module_(de)?serialize functions.
This patch implements 2 functions:

  1. `wasmer_module_serialize`, and
  2. `wasmer_module_deserialize`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
f57f8bc0cb fix(runtime-c-api) Use imported symbols.
`std::slice` is already imported. This patch then rewrites `::std::slice::` into `slice::`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
92ff24f5a2 feat(runtime) Make default_compiler public.
This is required to be able to deserialize a serialized module in
`runtime-c-api`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
2e45431876
Merge branch 'master' into fix-runtime-core-shared-memory-descriptor 2019-03-15 09:57:23 +01:00
Ivan Enderlin
61a203438a feat(runtime-core) SharedMemory.desc is not used… yet! 2019-03-15 09:09:24 +01:00
bors[bot]
b0b0a17d6e Merge #270
270: feat(runtime-c-api) `wasmer_validate` expects a `*const uint8_t` r=Hywan a=Hywan

This patch updates the first argument of `wasmer_validate` from `*mut
uint8_t` to `*const uint8_t`. Indeed, the
`wasmer-runtime-core::validate` function doesn't expect a mutable
slice, so it's not required to expect a mutable array from C.

Also, it's likely for the Wasm bytes to be stored in the
`wasmer_byte_array` structure. The first field `bytes` is defined as
`*const uint8_t`. So this patch avoids a cast when writing a C++
program.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-15 08:01:57 +00:00
Ivan Enderlin
a98c1c87bf
Merge branch 'master' into feat-runtime-c-api-validate 2019-03-14 14:15:48 +01:00
Ivan Enderlin
5b98ee732c feat(runtime-c-api) wasmer_validate expects a *const uint8_t.
This patch updates the first argument of `wasmer_validate` from `*mut
uint8_t` to `*const uint8_t`. Indeed, the
`wasmer-runtime-core::validate` function doesn't expect a mutable
slice, so it's not required to expect a mutable array from C.

Also, it's likely for the Wasm bytes to be stored in the
`wasmer_byte_array` structure. The first field `bytes` is defined as
`*const uint8_t`. So this patch avoids a cast when writing a C++
program.
2019-03-14 12:33:40 +01:00
bors[bot]
093757519e Merge #262
262: create an llvm flag r=lachlansneff a=xmclark

Some users may not care about building for the LLVM backend, so it may be useful to isolate it with a feature flag. Building should now only build the cranelift backend and does not require any LLVM setup. 

Co-authored-by: Mackenzie Clark <mackenzie.a.z.c@gmail.com>
Co-authored-by: Lachlan Sneff <lachlan.sneff@gmail.com>
2019-03-13 19:30:38 +00:00
Lachlan Sneff
cd767bc1a7
Merge branch 'master' into fix/llvm-feature-flag 2019-03-13 12:22:21 -07:00
Ivan Enderlin
20d1023abe fix(emscripten) Various warning fixes and cleanups (#266)
* fix(emscripten) Remove unused imports.

This patch removes unused imports reported by `rustc` as warnings.

* fix(emscripten) Allow unreachable patterns in `_clock_gettime`.

The compiler thinks `CLOCK_MONOTONIC_COARSE` is unreachable, which is
not always the case. Add an attribute to allow unreachable patterns to
remove the warning.

* fix(emscripten) Rename unused variables.

This patch renames various unused variables by appending an underscore
to them.

* fix(emscripten) Declare `table` as immutable.

The `table` variable in `EmscriptenGlobals::new` was declared as
mutable, but it's never mutated.

* fix(emscripten) Remove an unnecessary `unsafe` block.

* fix(emscripten) Remove duplicate definition of `SO_NOSIGPIPE`.

The `SO_NOSIGPIPE` constant is defined in `syscalls/mod.rs` and
`syscalls/unix.rs`. It's never used in the first case. We can safely
remove it in this file, and keep it in `unix.rs`.

* fix(emscripten) `read_string_from_wasm` is used only on Windows.

Mark `read_string_from_wasm` as possible deadcode, since it's used
only on Windows.

* fix(emscripten) Remove `DYNAMICTOP_PTR_DIFF`, `stacktop`, `stack_max`,
`dynamic_base` and `dynamic_ptr`.

Four functions and one constant are used together but never used
inside or outside this file. They are deadcode.

* fix(emscripten) Remove `infinity` and `nan` fields of `EmscriptenGlobalsData`.

Those fields are never used.

* fix(emscripten) Allow non snake case in `emscripten_target.rs`.

Many functions in this file don't follow the snake case style for Rust
function names. The reason is that we want the names to match the
emscripten symbol names; even if a mapping is done in `lib.rs`, it's
easier to get the same names.

* fix(emscripten) Rename `STATIC_TOP` to `static_top`.

This variable is not a constant.
2019-03-12 14:00:33 -07:00
Syrus
ef69f6151c Run test-and-build always on master 2019-03-12 10:07:23 -07:00
bors[bot]
d304bb4238 Merge #263 #265
263: fix(runtime-core) Remove unused imports r=Hywan a=Hywan

This patch removes unused imports as reported by `rustc` as warnings.

265: fix(clif-backend) Remove unused imports r=Hywan a=Hywan

This patch removes unused imports reported by `rustc` as warnings.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-12 13:09:26 +00:00
Ivan Enderlin
2c8fc5238d fix(clif-backend) Remove unused imports.
This patch removes unused imports reported by `rustc` as warnings.
2019-03-12 10:03:55 +01:00
Ivan Enderlin
6e62ea7cfb fix(runtime-core) Remove unused imports.
This patch removes unused imports as reported by `rustc` as warnings.
2019-03-12 09:51:54 +01:00
bors[bot]
97187f6d21 Merge #261
261: feat(runtime-c-api) Add an API to update `vm::Ctx.data` r=Hywan a=Hywan

This patch adds 2 functions for the runtime C API, respectively
`wasmer_instance_context_data_set` and
`wasmer_instance_context_data_get`. The goal is to modify the
`vm::Ctx.data` field in the `runtime-core` library.

Since all imported functions receive this context, that's the
simplest way to pass dynamic data to them.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
Co-authored-by: Syrus Akbary <me@syrusakbary.com>
2019-03-12 08:30:24 +00:00
Ivan Enderlin
5db05fd609
Merge branch 'master' into feat-runtime-c-api-instance-context-data 2019-03-12 09:02:05 +01:00
Ivan Enderlin
9bcd59a4c4 Merge branch 'feat-runtime-c-api-instance-context-data' of github.com:Hywan/wasmer into feat-runtime-c-api-instance-context-data 2019-03-12 09:00:54 +01:00
Ivan Enderlin
a390a28384 fix(runtime-c-api) Fix Clippy errors. 2019-03-12 08:58:22 +01:00
bors[bot]
b27163d98f Merge #260
260: fix(runtime-c-api) Fix the `imports` length. r=Hywan a=Hywan

`imports` contains `func_import`, `global_import`, `memory_import` and
`table_import`, so 4 items. This patch updates the length of `imports`
when calling the `wasmer_instantiate` function.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
Co-authored-by: Syrus Akbary <me@syrusakbary.com>
2019-03-12 00:01:47 +00:00
Mackenzie Clark
033a2e71bd fix compiler error on windows 2019-03-11 10:25:45 -07:00
Syrus Akbary
87fb082993
Merge branch 'master' into fix-runtime-c-api-test-imports 2019-03-11 10:09:15 -07:00
Syrus Akbary
7242149b46
Merge branch 'master' into feat-runtime-c-api-instance-context-data 2019-03-11 10:09:02 -07:00
Mackenzie Clark
9c2a141d6e
Merge branch 'master' into fix/llvm-feature-flag 2019-03-11 10:05:10 -07:00