5424 Commits

Author SHA1 Message Date
Jack O'Connor
566d2f7467 update blake3 to version 0.3.0
Version 0.3 switched to using assembly implementations by default, which
both perform better and build more quickly. This invokes the C compiler
from build.rs. If Wasmer would prefer to avoid that build dependency, we
could enable the new `pure` feature.
2020-03-30 11:19:39 -04:00
Ivan Enderlin
154dcba42c feat(interface-types) Implement Serde deserializing for WIT records to Rust values.
WIT values are native Rust values. But records are represented as a
vector of WIT values. In order to provide a super neat API to the
user, Serde is used to deserialize this vector of WIT values to a
large variety of Rust values.
2020-03-30 15:42:35 +02:00
Ivan Enderlin
a99ae6bdb2 feat(interface-types) Add the Record WIT value. 2020-03-30 08:32:31 +02:00
nlewycky
c4c4adb7bf
Merge branch 'master' into feature/llvm-target-triple 2020-03-28 11:55:37 -07:00
Syrus Akbary
baa74d7385
Merge pull request #1335 from Hywan/fix-runtime-c-api-1314
fix(runtime-c-api) Change mutability of `memory` to`const` in `wasmer_memory_data_length`
2020-03-28 10:41:33 -07:00
Syrus Akbary
b7ad8b2c7a
Merge pull request #1337 from Hywan/fix-interface-types-remove-as
feat(interface-types) Better handling of i32 to usize casts
2020-03-28 10:41:06 -07:00
Nick Lewycky
5b7a06c07b Use the inkwell package on crates.io!! 2020-03-27 15:47:50 -07:00
Mark McCaskey
7cd9e82015 Simplify ImportType 2020-03-27 14:00:02 -07:00
Nick Lewycky
5bd6b161d5 Create a valid target triple in the LLVM Module. 2020-03-27 13:54:18 -07:00
Mark McCaskey
a0dca15fbc Add misc. fixes and updates from feedback 2020-03-27 13:25:51 -07:00
Ivan Enderlin
2276d16f36
Merge branch 'master' into fix-runtime-c-api-1314 2020-03-27 07:48:23 +01:00
Ivan Enderlin
baeeea1535 doc(changelog) Fix typo. 2020-03-27 07:47:03 +01:00
Mark McCaskey
3eff8c1973 Convert usages of Instance::{func,dyn_func} to exports.get 2020-03-26 18:13:45 -07:00
Mark McCaskey
2fb8f8197b Deprecate Instance::func and Instance::dyn_func 2020-03-26 17:11:37 -07:00
Mark McCaskey
a18371eb91 Implement instance.exports field syntax 2020-03-26 16:24:23 -07:00
Ivan Enderlin
bd9226eb68 feat(interface-types) Introduce RecordType for InterfaceType and Type.
The `Type::Record` variant now is defined by `RecordType`. In
addition, `InterfaceType` has a new variant: `Record`, that is also
defined by `RecordType`. Encoders and decoders are updated to consider
`RecordType`, which removes code duplication and simplify code.
2020-03-26 13:35:24 +01:00
Ivan Enderlin
3c02c501ed chore(interface-types) Move the instruction.rs module in instructions/mod.rs. 2020-03-26 11:24:10 +01:00
Ivan Enderlin
734795c1f4 test(interface-types) Test Type::Record. 2020-03-26 11:18:24 +01:00
Ivan Enderlin
bbb4f1fc0f feat(interface-types) Introduce the record type.
This patch updates the `Type` type to be an enum with 2 variants:
`Function` and `Record`, resp. to represent:

1. `(@interface type (func (param i32 i32) (result string)))`
2. `(@interface type (record string i32))`

This patch updates the binary encoder and decoder, along with the WAT
encoder and decoder.
2020-03-26 10:54:58 +01:00
Ivan Enderlin
6e5d9624f1 feat(interface-types) Simplify code by implementing From<TryFromIntError>. 2020-03-26 10:49:49 +01:00
Ivan Enderlin
25cd6cd24a feat(interface-types) Add the NegativeValue instruction error. 2020-03-26 08:31:06 +01:00
Ivan Enderlin
f3be7981d2 test(interface-types) Test negative pointer or length in string.lift_memory. 2020-03-26 08:30:32 +01:00
Ivan Enderlin
86b545fd49 fix(interface-types) Avoid integer overflows in string instructions. 2020-03-26 08:27:51 +01:00
Syrus Akbary
531ec45f34
Merge pull request #1329 from Hywan/feat-interface-types-new-types-and-instructions
feat(interface-types) New numbers and strings instructions
2020-03-26 00:02:31 -07:00
Ivan Enderlin
0e70e538cc fix(interface-types) Instruction::CallCore.function_index is a u32. 2020-03-26 07:53:44 +01:00
Ivan Enderlin
b0879d1d12 fix(interface-types) Cast index to usize to compare index to length.
The index is bound to `u32::max_value()`. The invocation inputs'
length is bound to `usize::max_value()`, which can be
`u64::max_value`. Consequently, casting the invocation inputs' length
to `u32` can lead to an integer overflow. It is better to cast `index`
to `usize` when comparing with the invocation inputs' length.
2020-03-26 07:46:59 +01:00
Ivan Enderlin
f71872c365 doc(changelog) Add #1335. 2020-03-26 07:35:54 +01:00
Ivan Enderlin
6eaf87d651 chore(runtime-c-api) Update C/C++ headers. 2020-03-26 07:32:57 +01:00
Ivan Enderlin
9826ff3813 fix(runtime-c-api) Change mutability of memory for const in wasmer_memory_data_length. 2020-03-26 07:30:34 +01:00
Ivan Enderlin
4a86cd16f9
Merge branch 'master' into feat-interface-types-new-types-and-instructions 2020-03-26 07:26:37 +01:00
Mark McCaskey
c14c88fb72 Improve high level API test 2020-03-25 16:14:04 -07:00
Mark McCaskey
cc13e45215 Add skeleton of external API and tests 2020-03-24 18:59:09 -07:00
bors[bot]
4e53f9e9c6
Merge #1332
1332: Add `CompilerConfig` opt to disable IR verification in debug mode r=MarkMcCaskey a=MarkMcCaskey

Resolves #1330 

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Mark McCaskey <mark@wasmer.io>
2020-03-25 01:26:27 +00:00
Mark McCaskey
697da669a1 Minor code update, move conditional block inwards 2020-03-24 16:00:32 -07:00
Mark McCaskey
ce1b1f67cf Update opt name in CompilerConfig, enable IR verification in spectests 2020-03-24 15:46:58 -07:00
Mark McCaskey
403e14bc1e Add CompilerConifg opt to disable IR verification in debug mode 2020-03-24 14:52:02 -07:00
Ivan Enderlin
b251d6d7b4 doc(changelog) Add #1329. 2020-03-24 15:42:40 +01:00
Ivan Enderlin
ffe7f765a2 doc(interface-types) Add strign.size in the list of supported instructions. 2020-03-24 15:35:01 +01:00
Ivan Enderlin
38f62392ff feat(interface-types) Implement the string.size instruction. 2020-03-24 15:33:42 +01:00
Ivan Enderlin
daef7b0bfd feat(interface-types) Add the Stackable::peek1 method.
This method allows to peek the last item on the stack (if any) by
reference.
2020-03-24 15:32:54 +01:00
Ivan Enderlin
7f2273b32b doc(interface-types) Add string.* instructions. 2020-03-24 13:29:38 +01:00
Ivan Enderlin
ec7aebe7e1 feat(interface-types) Implement the string.(lift|lower)_memory instructions.
The `string.lift_memory` instruction replaces `memory-to-string`, and
`string.lower_memory` replaces `string-to-memory`.
2020-03-24 13:25:06 +01:00
Ivan Enderlin
afbeb5d230 feat(interface-types) Rename lowering_lifting module to numbers. 2020-03-24 13:10:21 +01:00
Ivan Enderlin
6fcd45bce3 doc(interface-types) Add links to WIT instructions. 2020-03-24 12:48:33 +01:00
Ivan Enderlin
cd58af2633 doc(interface-types) Update supported instructions. 2020-03-24 12:47:39 +01:00
Ivan Enderlin
50201a5e0b feat(interface-types) Implement [siu](NN|MM).from_* instructions.
Basically the `x-to-y` instructions have been renamed `y.from_x`. This
patch updates the instruction. The binary representation isn't
specified yet, so it's just arbitrary values.
2020-03-24 12:43:57 +01:00
bors[bot]
56aec04d1d
Merge #1327
1327: fix(interface-types) Stack pops items in the same order than Wasm invocation rule r=Hywan a=Hywan

This PR fixes the items order when popped from the stack. It matches [the Wasm invocation rule](https://webassembly.github.io/spec/core/exec/instructions.html#invocation-of-function-address).

Not that it is more performant in our case, since we use the `drain` API rather than `drain` + `rev`.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2020-03-24 09:49:42 +00:00
Mark McCaskey
d8bd258ef2 Add skeleton of exported api 2020-03-23 17:53:01 -07:00
bors[bot]
4703e78250
Merge #1292
1292: Experimental Support for Android (x86_64 and AArch64) r=syrusakbary a=igrep

# Description

Related: https://github.com/wasmerio/wasmer/issues/1113

# Current Status

- ~~This pull request is a draft until the next version of libc crate (which should contain https://github.com/rust-lang/libc/pull/1622)~~
    - Now released! 🎉
- I confirmed the tests of wasmer-runtime-core pass on Android x86\_64.
    - The other tests including ones on AArch64 seems too hard so far... 😓 

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file

# Note

I'm happy given any hint to test of Android specific code (esp. in libc I added in https://github.com/rust-lang/libc/pull/1622).


Co-authored-by: Yuji Yamamoto <yuji-yamamoto@iij.ad.jp>
Co-authored-by: YAMAMOTO Yuji <yuji-yamamoto@iij.ad.jp>
Co-authored-by: Mark McCaskey <5770194+MarkMcCaskey@users.noreply.github.com>
2020-03-23 21:16:53 +00:00
Mark McCaskey
9829d97d7d Update Module::custom_sections to properly return multiples 2020-03-23 14:12:07 -07:00