Commit Graph

339 Commits

Author SHA1 Message Date
Manos Pitsidianakis
feee4e3587 Move wasmer_compiler errors to wasmer_types error module 2022-06-16 16:57:45 +03:00
Manos Pitsidianakis
e9d54e130c Remove engine-dylib 2022-06-16 16:57:45 +03:00
Manos Pitsidianakis
44a80604ab compiler-cranelift: Fix typo in enum variant 2022-06-14 11:15:00 +03:00
Wolfgang Silbermayr
5339f7cdae Fix clippy lints
Fixes: #2926
2022-06-09 16:05:53 +02:00
Manos Pitsidianakis
00f9a3c8d7 Remove loupe dependency
Closes #2731
Closes #2744
2022-06-08 14:12:49 +03:00
Manos Pitsidianakis
33654c1a1d Release version 2.3.0 2022-06-06 22:27:57 +03:00
ptitSeb
3d5415dcb9 Added cranelift to build-wasmer-wasm 2022-05-24 16:33:11 +02:00
ptitSeb
1607a02535 Make linter happy 2022-05-24 16:33:11 +02:00
ptitSeb
b5d7f11d20 Make rayon optional in cranelift compiler 2022-05-24 16:33:11 +02:00
ptitSeb
3d7ae9e21f Moved LibCall enum to wasmer_types, and compiler is no longer dependant of wasmer_vm 2022-05-03 09:32:34 +02:00
Manos Pitsidianakis
77af8ba634 Fix some clippy lints
Before:
```
% make lint 2>&1 | grep warnings | sort | uniq
error: could not compile `wasmer-cli` due to previous error; 25 warnings emitted
warning: `compiler-test-derive` (lib) generated 8 warnings
warning: `test-generator` (lib) generated 4 warnings
warning: `wasi-test-generator` (bin "wasi-test-generator") generated 8 warnings
warning: `wasmer-cache` (lib) generated 4 warnings
warning: `wasmer-cli` (lib) generated 25 warnings
warning: `wasmer-compiler-cranelift` (lib) generated 50 warnings
warning: `wasmer-compiler-singlepass` (lib) generated 228 warnings
warning: `wasmer-compiler` (lib) generated 3 warnings
warning: `wasmer-emscripten` (lib) generated 182 warnings
warning: `wasmer-engine-dummy` (lib) generated 6 warnings
warning: `wasmer-engine-dylib` (lib) generated 37 warnings
warning: `wasmer-engine-staticlib` (lib) generated 16 warnings
warning: `wasmer-engine-staticlib` (lib) generated 7 warnings
warning: `wasmer-engine-universal` (lib) generated 11 warnings
warning: `wasmer-engine` (lib) generated 15 warnings
warning: `wasmer-object` (lib) generated 5 warnings
warning: `wasmer-types` (lib) generated 31 warnings
warning: `wasmer-vfs` (lib) generated 4 warnings
warning: `wasmer-vm` (lib) generated 40 warnings
warning: `wasmer-wasi-experimental-io-devices` (lib) generated 11 warnings
warning: `wasmer-wasi-types` (lib) generated 3 warnings
warning: `wasmer-wasi` (lib) generated 13 warnings
warning: `wasmer-wast` (lib) generated 11 warnings
warning: `wasmer` (lib) generated 54 warnings
```

After:
```
warning: `wasmer-cli` (lib) generated 16 warnings
warning: `wasmer-compiler-cranelift` (lib) generated 48 warnings
warning: `wasmer-compiler-singlepass` (lib) generated 213 warnings
warning: `wasmer-emscripten` (lib) generated 170 warnings
warning: `wasmer-engine-dummy` (lib) generated 6 warnings
warning: `wasmer-engine-dylib` (lib) generated 4 warnings
warning: `wasmer-engine-staticlib` (lib) generated 14 warnings
warning: `wasmer-engine-staticlib` (lib) generated 5 warnings
warning: `wasmer-engine-universal` (lib) generated 9 warnings
warning: `wasmer-engine` (lib) generated 12 warnings
warning: `wasmer-object` (lib) generated 3 warnings
warning: `wasmer-types` (lib) generated 7 warnings
warning: `wasmer-vm` (lib) generated 36 warnings
warning: `wasmer-wasi-experimental-io-devices` (lib) generated 6 warnings
warning: `wasmer-wasi-types` (lib) generated 3 warnings
warning: `wasmer-wasi` (lib) generated 9 warnings
warning: `wasmer-wast` (lib) generated 9 warnings
warning: `wasmer` (lib) generated 42 warnings
```
2022-04-20 18:25:04 +03:00
Amanieu d'Antras
4c946257cf Update Cranelift to 0.82 2022-04-06 16:23:32 +01:00
Amanieu d'Antras
3ad9552e2e Update wasmparser to 0.83 2022-04-06 16:23:32 +01:00
bors[bot]
fc794ab4e3 Merge #2807
2807: Run Wasm code on a separate stack r=Amanieu a=Amanieu

This uses the [corosensei](https://crates.io/crates/corosensei) crate to
run Wasm code on a separate stack from the main thread stack.

In trap handlers for stack overflows and memory out of bounds accesses,
we can now check whether we are executing on the Wasm stack and reset
execution back to the main thread stack when returning from the trap
handler.

When Wasm code needs to perform an operation which may modify internal
data structures (e.g. growing a memory) then execution must switch back
to the main thread stack using on_host_stack. This is necessary to avoid
leaving internal data structure in an inconsistent state when a stack
overflow happens.

In the future, this can also be used to suspend execution of a Wasm
module (#1127) by modeling it as an async function call.

Fixes #2757
Fixes #2562


Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2022-03-16 13:24:50 +00:00
Amanieu d'Antras
fe9d2d8d22 Release version 2.2.1 2022-03-15 11:02:31 +00:00
Amanieu d'Antras
657bbae518 Remove the custom probestack trampoline in compiler-cranelift
This is now handled by the generic trampoline code in the engine.
2022-03-14 22:14:22 +00:00
Amanieu d'Antras
4dd1634218 Release version 2.2.0 2022-02-28 17:19:14 +00:00
Amanieu d'Antras
15f9d2646f Release version 2.2.0-rc1 2022-02-15 19:10:24 +00:00
Amanieu d'Antras
4e27e1164c Release version 2.2.0-rc1 2022-01-27 23:59:27 +00:00
Amanieu d'Antras
ffb9cd33b9 Use trampolines for all libcalls in engine-universal and engine-dylib
In both of these engines, the compiled code may be loaded in memory far
from the Wasmer runtime which means that libcalls may not be reachable
through the normal relocation types. Instead a trampoline is needed to
allow reaching any address in the 64-bit address space.

In the case of engine-dylib, this is even worse since the symbols are
not exported by the executable without some special linker flags. The
solution here is to manually patch in the addresses at load time into
a data table of function pointers.
2022-01-20 11:47:20 +00:00
Amanieu d'Antras
fb7a572415 Use exact version for Wasmer crate dependencies
We don't guarantee API compatibility between internal Wasmer crates when
making minor version bumps.
2022-01-19 21:35:09 +00:00
Amanieu d'Antras
ebcea4a5c4 Release v2.1.1 2021-12-21 12:19:50 +01:00
Amanieu d'Antras
c650ffea33 Version 2.1.0 2021-11-30 23:46:54 +00:00
bors[bot]
8f2e49d528 Merge #2693
2693: Add extra validation to compilers & engines r=ptitSeb a=Amanieu

- Cranelift and singlepass now properly cross-compile with no dependency on the host target.
- Staticlib engine now panics if you try to run a freshly compiled module.
- CPU features used when a module was compiled are now checked against the host CPU features during instantiation.

Fixes #1567
Fixes #2590 

Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2021-11-23 19:48:25 +00:00
Amanieu d'Antras
5312521688 Apply review feedback 2021-11-23 16:29:36 +00:00
Amanieu d'Antras
cb88b6db62 Avoid depending on the host target in compilers 2021-11-23 15:19:32 +00:00
Amanieu d'Antras
4944ddf754 Fix cranelift build without unwind 2021-11-22 21:46:39 +00:00
Amanieu d'Antras
57f876b922 Make DWARF frametable generation deterministic in Cranelift 2021-11-22 15:30:15 +00:00
ptitSeb
20f0c66fe6 feat(compiler) Added Trampolines and more Relocations for Arm64 (llvm-universal on linux-aarch64 are OK now) 2021-10-05 14:08:55 +02:00
ptitSeb
5a742cef9e fix(compiler) Only use the trampoline for probestack on linux x86_64, not macos 2021-09-02 11:57:34 +02:00
ptitSeb
14f8ffe8a4 fix(compiler) added the jmp address to the data of the custom section of the probestack trampoline 2021-09-02 11:22:38 +02:00
ptitSeb
db7042ea14 fix(compiler) Added comment to trampoline x86_64 code 2021-09-01 16:59:22 +02:00
ptitSeb
bc8dd5cd50 fix(compiler) Fix comment 2021-09-01 14:03:30 +02:00
ptitSeb
cb61a632c8 fix(compiler) Fix lint 2021-09-01 14:03:12 +02:00
ptitSeb
42cc25b788 fix(compiler) more conditional to limit probestack trampoline to x86_64 build 2021-09-01 13:49:22 +02:00
ptitSeb
6c6df4a213 fix(compiler) Only create probstack custom section when building on x86_64 2021-09-01 13:34:29 +02:00
Syrus Akbary
6d912f8ec5 Use custom probestack trampoline as a custom section 2021-09-01 12:04:21 +02:00
Syrus Akbary
f7dcb02a79 Updated version 2021-08-21 10:21:37 +01:00
Syrus Akbary
a5612aee81 Trying to fix issue with dynamic memory 2021-08-10 12:37:25 -07:00
Syrus Akbary
1e980b82f7 Fixed dependencies a bit more 2021-08-10 11:47:44 -07:00
Syrus Akbary
005d129529 Update all packages 2021-08-10 11:40:38 -07:00
Syrus Akbary
98481f51fe Move ModuleInfo to wasmer-types 2021-07-16 15:42:39 -07:00
Mark McCaskey
0c0fdad3d2 Prepare for 2.0.0 release 2021-06-15 11:26:46 -07:00
Mark McCaskey
80a8658e5a Prepare for 2.0.0-rc2 release 2021-06-03 09:19:16 -07:00
Mark McCaskey
cfc1a5fc26 Fix typo 2.0.0-rc -> 2.0.0-rc1 2021-06-02 08:32:46 -07:00
Mark McCaskey
2897a5b05e Bump version number to 2.0.0-rc1 2021-06-02 08:21:34 -07:00
jubianchi
6a99268895 feat(llvm): Make NaN canonicalization configurable
compiler-llvm now uses the experimental.constrained intrinsics to ensure
correct behavior on FP operations when full-canonicalization is
disabled.

This patch requires TheDan64/inkwell#247
2021-05-28 11:40:10 +02:00
Ivan Enderlin
e5a784a006 feat: Rename wasmer-engine-jit to wasmer-engine-universal.
This (small) patch renames the `wasmer-engine-jit` crate into
`wasmer-engine-universal`.
2021-05-25 16:12:06 +02:00
Syrus Akbary
51d0b7d57c Use only latest gimli version 2021-05-24 10:52:33 -07:00
Syrus Akbary
e3a18c08ff Use latest cranelift 2021-05-24 10:50:08 -07:00