1
0
mirror of https://github.com/fluencelabs/wasmer synced 2025-03-19 17:40:50 +00:00

4477 Commits

Author SHA1 Message Date
Mark McCaskey
176b938cb6
Remove wasmparser dep from singlepass 2019-12-05 11:59:26 -08:00
Mark McCaskey
c7f3abd27e
Merge branch 'master' into deterministic 2019-12-05 11:50:16 -08:00
Mark McCaskey
5da98caf83 Merge branch 'master' into wat 2019-12-04 17:17:00 -08:00
Syrus Akbary
af7a368320
Added docs to Readme and removed WAPM usage 2019-12-04 13:11:11 -08:00
Ivan Enderlin
4ef799f23d feat(runtime-c-api) Support WasiVersion::Latest. 2019-12-04 15:34:56 +01:00
Ivan Enderlin
f0f0657264 doc(changelog) Resolve merge issues. 2019-12-04 15:28:38 +01:00
Ivan Enderlin
4fc6adf9c2 chore(runtime-c-api) Remove a useless format!. 2019-12-04 15:28:38 +01:00
Ivan Enderlin
345511a4f9 fix(runtime-c-api) Fix From<c_uchar> for Version.
0 matches to `Unknown`, 1 matches to `Snapshot0` and 2 matches to
`Snapshot1`.
2019-12-04 15:28:37 +01:00
Ivan Enderlin
90f3c894c1 doc(runtime-c-api) Improve documentation of wasmer_wasi_generate_import_object_for_version. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
0c5021484f fix(runtime-c-api) Use get_wasi_version in non-strict mode. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
4fe8286b81 feat(runtime-c-api) Avoid undefined behavior with user-given version.
When the version has type `Version`, we expect the user to give a
valid `Version` variant. Since the `Version` is basically a `uint8_t`,
the user is able to pass everything she wants, which can create an
undefined behavior on the Rust side.

To avoid such situation, the version has now type `c_uchar` (`unsigned
char` or `uint8_t` on C side —on most platforms). Then the `From`
trait is implemented on `Version`. In case the value is unbound,
`Version::Unknown` is returned.
2019-12-04 15:28:37 +01:00
Ivan Enderlin
b9851f26d4 doc(changelog) Add . 2019-12-04 15:28:37 +01:00
Ivan Enderlin
912713f88f test(runtime-c-api) Test the new WASI version API.
This patch updates `test-wasi-import-object` to test the new
`wasmer_wasi_get_version` &
`wasmer_wasi_generate_import_object_for_version` functions, and the
new `Version` type.
2019-12-04 15:28:37 +01:00
Ivan Enderlin
0391ade76f chore(git) Ignore the object file test-import-object. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
7fb934f5d0 chore(runtime-c-api) Fix CS in CMakeLists.txt. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
e2c353b926 chore(runtime-c-api) Update C/C++ headers. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
ca4a1b41a6 feat(runtime-c-api) Ability to generate ImportObject for a specific WASI version.
This patch introduces 2 new functions:

* `wasmer_wasi_generate_import_object_for_version` and
* `wasmer_wasi_get_version`.

It mimics the current API provided by `wasmer_wasi`, nothing fancy
here. It's just a regular port to C/C++.

Because `wasmer_wasi::get_wasi_version` returns an option, and in
order to simplify the C/C++ API, `wasmer_wasi_get_version` can return
`Version::Unknown` in case of an error. It's up to the user to check
the version is valid (i.e. not unknown).
2019-12-04 15:28:37 +01:00
Ivan Enderlin
fdc3d5107a doc(runtime-c-api) Suggest to test in release mode. 2019-12-04 15:28:37 +01:00
Ivan Enderlin
871db8547c
Merge branch 'master' into fix-wasi-get-version 2019-12-04 15:25:11 +01:00
bors[bot]
e7b39319f4
Merge
1029: feat(wasi) Add the “floating” `WasiVersion::Latest` version. r=Hywan a=Hywan

In addition to `Snapshot0` and `Snapshot1`, I believe it is an
interesting API to provide the `Latest` version, so that the user can
write:

```rust
generate_import_object_for_version(WasiVersion::Latest, …);
```

This is a way to ensure that modules will run only if they come with
the latest WASI version (in case of security issues for instance), by
just updating the runtime.

Note that it can be dangerous if not used carefully, but we assume the
user knows what it does by sticking on a specific “floating” version.

Also note that the `Latest` version is never returned by any API. It
is provided only by the user.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-12-04 13:18:26 +00:00
Ivan Enderlin
9d42af8806 Merge branch 'master' into feat-wasi-version-latest 2019-12-04 14:16:33 +01:00
Ivan Enderlin
c12dd859bb doc(wasi) Improve documentation of WasiVersion::Latest. 2019-12-04 14:12:30 +01:00
Ivan Enderlin
0a24133aab doc(changelog) Update description. 2019-12-04 13:34:25 +01:00
Ivan Enderlin
2b7f0d19cb feat(wasi) Introduce a strict mode for get_wasi_version.
In strict mode, `get_wasi_version` uses the previous behavior, i.e. it
checks that there is only one namespace for all imports, and that this
namespace is a WASI namespace (and uses it to find the WASI version).

In non-strict mode, `get_wasi_version` checks that at least one WASI
namespace exists (and uses it to find the WASI version).

By default, `is_wasi_module` uses the non-strict mode.
2019-12-04 13:29:28 +01:00
Syrus Akbary
df1cf67167
Merge pull request from wasmerio/wat-aaron
Added support for indexed framebuffers in framebuffer files
2019-12-03 18:06:35 -08:00
Aaron Turner
d23ce04b1e Added support for indexed framebuffers in framebuffer files 2019-12-03 17:34:56 -08:00
bors[bot]
7aa044e7ba
Merge
1035: Fix/quiet some rustc warnings. r=nlewycky a=nlewycky

No functionality change.

Remaining warnings are either dead code in examples/parallel-guest, or due to macros in typed_func.rs for which removing the "extra" parentheses breaks the build.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-12-03 01:01:51 +00:00
Nick Lewycky
3381e8867c Fix some assorted warnings. 2019-12-02 17:00:37 -08:00
Mark McCaskey
356720efd2 Add experimental invoke support to WASI in wasmer cli 2019-12-02 16:53:15 -08:00
bors[bot]
183beb769e
Merge
1034: When modifying the value, also update its ExtraInfo. r=nlewycky a=nlewycky

Fixes a debug_assert! on python3.7 and rustpython in wapm.


Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-12-03 00:02:38 +00:00
Mark McCaskey
ab111443be Improve default compiler story for wasmer cli
This commit reenables the clif compiler as the default for wasmer cli,
updates an error message, and adds a compile_error if no backends are enabled.
2019-12-02 15:50:34 -08:00
Nick Lewycky
7c6d73d4d9 Add test for debug-crash.
This also was a wrong-code bug (I think), but we can't yet write tests for those.
2019-12-02 15:49:33 -08:00
Nick Lewycky
ad752d66a7 When modifying the value, also update its ExtraInfo.
Fixes a debug_assert! on python3.7 and rustpython in wapm.
2019-12-02 15:45:12 -08:00
Mark McCaskey
e8b162df06 Fix abort and _abort to be different 2019-12-02 15:32:14 -08:00
Mark McCaskey
cd946f1d27 Fix abort signature in emscripten ABI 2019-12-02 15:09:42 -08:00
bors[bot]
652433eb61
Merge
1031: Improve portability of code by using c_char r=MarkMcCaskey a=MarkMcCaskey

This PR makes emscripten compile on ARM with an up to date nightly compiler

Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-12-02 20:00:08 +00:00
Mark McCaskey
5234897989 Improve portability of code by using c_char 2019-12-02 11:30:30 -08:00
bors[bot]
d639748a20
Merge
1022: Add caching support for Singlepass backend. r=losfair a=losfair

This PR adds caching support for the Singlepass backend.

- [x] Implementation
- [x] AArch64 test

Co-authored-by: losfair <zhy20000919@hotmail.com>
Co-authored-by: Heyang Zhou <zhy20000919@hotmail.com>
2019-12-02 17:56:37 +00:00
losfair
2eb11f5052 Update Cargo.lock 2019-12-03 01:46:13 +08:00
losfair
04d8df0a46 Add comments and remove unneeded statics. 2019-12-03 01:46:06 +08:00
Ivan Enderlin
c916f0edaa doc(changelog) Add . 2019-12-02 15:55:38 +01:00
Ivan Enderlin
a79beede72 feat(wasi) Add the “volatile” WasiVersion::Latest version.
In addition to `Snapshot0` and `Snapshot1`, I believe it is an
interesting API to provide the `Latest` version, so that the user can
write:

```rust
generate_import_object_for_version(WasiVersion::Latest, …);
```

This is a way to ensure that modules will run only if they come with
the latest WASI version (in case of security issues for instance), by
just updating the runtime.

Note that it can be dangerous if not used carefully, but we assume the
user knows what it does by sticking on a specific “floating” version.

Also note that the `Latest` version is never returned by any API. It
is provided only by the user.
2019-12-02 15:53:40 +01:00
Ivan Enderlin
8df0591ee5 doc(changelog) Add . 2019-12-02 15:41:46 +01:00
Ivan Enderlin
7f3680c27a fix(wasi) get_wasi_version is broken with multiple namespaces.
If a module has multiple import namespaces, `get_wasi_version` is
broken because it assumes a module must only have a single namespace.

This patch fixes it by a slower `get_wasi_version` function, but a
correct one. As soon as the `wasi_unstable` or
`wasi_snapshot_preview1` namespace is met, `get_wasi_version` maps it
to the respective `WasiVersion` variant. It assumes however that a
module must hold a unique WASI version.
2019-12-02 15:36:45 +01:00
losfair
063fa211a7 Merge remote-tracking branch 'origin/master' into feature/singlepass-cache 2019-11-29 01:33:29 +08:00
losfair
c3f2481ced Update feature matrix. 2019-11-29 01:32:08 +08:00
losfair
513427be93 Remove singlepass codegen dependence on runtime memory. 2019-11-29 01:30:08 +08:00
bors[bot]
19dfdec236
Merge
1004: Adapt backend usage depending on wasm file executed r=MarkMcCaskey a=d0iasm

Adapt backend usage depending on wasm file executed in issue .
Close  

# Description
Add `auto` backend into a runtime-core and use it as a default backend.
The `auto` backend is equivalent to: 
* singlepass if singlepass is enabled and the wasm file size is larger than 10MiB, or singlepass is enable and the target architecture is aarch64.
* cranelift otherwise.


Co-authored-by: Asami Doi <doiasami1219@gmail.com>
2019-11-27 19:37:04 +00:00
Heyang Zhou
24ead779d6
Remove extra '.'.
Co-Authored-By: nlewycky <nick@wasmer.io>
2019-11-28 03:25:05 +08:00
losfair
c7f4ca5dd3 Enable cache tests for singlepass. 2019-11-28 03:01:09 +08:00