Commit Graph

934 Commits

Author SHA1 Message Date
Mark McCaskey
e3ec9f34c1 Prevent panic when min > static bound and max is less than it 2020-10-13 14:39:25 -07:00
Ivan Enderlin
599c473d34 Merge branch 'master' into fix-c-api-module-serialize 2020-10-13 11:24:35 +02:00
bors[bot]
9c309ea3f3 Merge #1689
1689: feat(c-api) Use `Option<NonNull<wasm_valtype_t>>` in `wasm_valtype_kind` r=syrusakbary a=Hywan

A more Rust-FFI idiomatic way to handle null pointer.

Note: In `wasm_valtype_kind`, it's tricky to handle the error because
we _must_ return a `wasm_valtype_kind` value. For the moment, it
continues to panic, which is probably the best tradeoff.

Co-authored-by: Ivan Enderlin <ivan@mnt.io>
2020-10-13 09:06:29 +00:00
Ivan Enderlin
7cc4d5adbe fix(c-api) Simplify NonNull<T> by &T. 2020-10-13 10:51:58 +02:00
Ivan Enderlin
954e5e8495 fix(c-api) Register errors from wasm_module_serialize. 2020-10-13 10:26:32 +02:00
Mark McCaskey
fd63ddb101 Merge branch 'master' into feature/wasmer-create-exe 2020-10-12 15:54:54 -07:00
Ivan Enderlin
f866ea39fd fixup 2020-10-12 18:02:45 +02:00
Ivan Enderlin
fe70330772 fixup 2020-10-12 18:02:32 +02:00
Ivan Enderlin
b9f98ce1f6 feat(c-api) Update .h files. 2020-10-12 17:54:21 +02:00
Ivan Enderlin
750a1c3645 feat(c-api) Implement wasm_module_name and wasm_module_set_name.
I submited a proposal to the official `wasm.h` by the way,
https://github.com/WebAssembly/wasm-c-api/pull/157. For the moment,
let's keep that as a vendor specific implementation.
2020-10-12 17:52:40 +02:00
Ivan Enderlin
bf389f96b9 Merge branch 'master' into feat-c-api-update-wasm-h 2020-10-12 13:48:17 +02:00
Ivan Enderlin
122ba837a1 Merge branch 'master' into feat-c-api-update-wasm-h 2020-10-12 13:36:42 +02:00
Ivan Enderlin
437426d8b1 feat(c-api) Update wasmer_wasm.h. 2020-10-12 13:34:55 +02:00
Ivan Enderlin
0b4ef7add7 test(c-api) Don't pass NULL for zero args/results to wasm_func_call!
We must pass an empty array.
2020-10-12 13:34:20 +02:00
Ivan Enderlin
4186d1ce58 test(c-api) Use wasm_extern_vec_t for wasm_get_imports. 2020-10-12 13:33:46 +02:00
Ivan Enderlin
5bf90558c7 test(c-api) Fix the early-exit test. 2020-10-12 13:17:40 +02:00
bors[bot]
bb9149bfe3 Merge #1685
1685: feat(c-api) Implement `wasm_exporttype_delete` r=Hywan a=Hywan

This PR implements the destructor for `wasm_exporttype_t`.

Co-authored-by: Ivan Enderlin <ivan@mnt.io>
2020-10-12 11:16:06 +00:00
Ivan Enderlin
4584a53840 fix(c-api) Remove rustc warnings. 2020-10-12 13:12:37 +02:00
Ivan Enderlin
202ffe7771 fix(c-api) Fix wasm_func_call when params are empty.
`wasm_$name_vec_t.into_slice` returns `None` if the vec is empty. So
an empty vec of `wasm_extern_t` given to `wasm_func_call` was raising
an error. This patch fixes this.
2020-10-12 12:20:29 +02:00
Ivan Enderlin
fea156defa feat(c-api) Update wasi_get_imports to use a wasm_extern_vec_t
… so that it matches the definition of `wasm_instance_new`, which is
much simpler and consistent.
2020-10-12 11:58:53 +02:00
Ivan Enderlin
fa7fe83bc0 feat(c-api) Update wasm_instance_new.
The `CArrayIter` type is no longer needed. This patch removes it.
2020-10-12 11:45:31 +02:00
Ivan Enderlin
e9cd710506 feat(c-api) Update wasm_func_call. 2020-10-12 11:25:17 +02:00
Ivan Enderlin
7f098387e8 faet(c-api) Update wasm_func_new_with_env. 2020-10-12 11:24:59 +02:00
Ivan Enderlin
5dffd976f5 feat(c-api) Update wasm_func_new. 2020-10-12 11:24:30 +02:00
Ivan Enderlin
d8dcb4133a feat(c-api) Update the definitions of wasm_func_callback*_t. 2020-10-12 11:23:52 +02:00
Ivan Enderlin
8b38dd575e feat(c-api) Implement wasm_val_vec_t. 2020-10-12 11:22:54 +02:00
Ivan Enderlin
1ecb4ca250 feat(c-api) Implement wasm_externtype_copy. 2020-10-12 09:54:05 +02:00
Mark McCaskey
ba7b24f696 Add --dir and --mapdir support to native executable 2020-10-09 17:38:14 -07:00
Ivan Enderlin
18729709bf feat(c-api) Update wasm-c-api repository.
This change is important because `wasm.h` contains new functions, like
`wasm_name_new_from_string_nt`, which are useful for the Go
implementation.
2020-10-09 14:37:07 +02:00
Ivan Enderlin
709f1c9f87 Merge branch 'master' into feat-c-api-exporttype-delete 2020-10-09 09:27:12 +02:00
Mark McCaskey
61c88be863 Prepare for 1.0.0-alpha4 release 2020-10-08 16:47:14 -07:00
Mark McCaskey
d687dd5bd6 Add system-libffi feature to wasmer C API crate 2020-10-08 14:59:42 -07:00
Mark McCaskey
02c0df5101 Update to cbindgen 0.15.0
Manually specify that items should be sorted by name in the header
file. We do this because cbindgen 0.15.0 removed sorting by default.
2020-10-08 14:42:00 -07:00
Mark McCaskey
65265dbd73 Add first draft of wasmer create-exe 2020-10-08 14:13:54 -07:00
Ivan Enderlin
80459f3ae0 feat(c-api) Replace the max limit sentinel value by a constant.
In the `wasm.h` header file, it is defined by `wasm_limits_max_default`.
2020-10-08 17:24:12 +02:00
Ivan Enderlin
f6595cdd33 fix(c-api) Fix the sentinel value returned by wasm_memorytype_limits. 2020-10-08 17:23:59 +02:00
Ivan Enderlin
5d19813e63 fix(c-api) wasm_limits_t contains Pages, not Bytes.
When building a `wasm_memorytype_t` with `wasm_memorytype_new`, we
pass a `wasm_limits_t`, where `min` and `max` represent `Pages`. This
semantics is set by `wasm_memorytype_new` itself where `min` and `max`
from `wasm_limits_t` are used to compute `Pages`, which are then passed
to `MemoryType`.

Then, in `wasm_memorytype_limits`, we expect to get the same
`wasm_limits_t` given to `wasm_memorytype_new`. But it's not!

The same `MemoryType` is read, good. The `minimum` and `maximum`
fields are `Pages`, good. Then, we compute the `min` and `max` values
for the resulting `wasm_limits_t`, which receive `Page.bytes().0`, not
good! We don't want the number of bytes, but the number of pages.

This patch fixes that.
2020-10-08 17:14:45 +02:00
Ivan Enderlin
5dbab5655e feat(c-api) Use Option<NonNull<wasm_valtype_t>> in wasm_valtype_kind.
A more Rust-FFI idiomatic way to handle null pointer.

Note: In `wasm_valtype_kind`, it's tricky to handle the error because
we _must_ return a `wasm_valtype_kind` value. For the moment, it
continues to panic, which is probably the best tradeoff.
2020-10-08 15:08:08 +02:00
Ivan Enderlin
3ebff74263 doc(c-api) Update inline API documentation. 2020-10-08 13:43:59 +02:00
Ivan Enderlin
f24a34b6cf feat(c-api) Implement Drop for wasm_exporttype_t.
`wasm_exporttype_t` has 2 fields: `name` and `extern_type`. Both are
of kind `NonNull`. When `wasm_exporttype_t` is dropped, nor `name` nor
`extern_type` are going to be dropped.

To avoid leaking data, this patch adds a new field: `owns_fields`:

* When `wasm_exporttype_t` is built from `wasm_exportype_new`, this
  field is set to `false` because `name` and `extern_type` are
  received by pointer, and its the responsibility of the caller to
  free them,

* When `wasm_exporttype_t` is built from the `From<&ExportType>`
  implementation, _we_ create `name` and `extern_type` to then leak
  them. In this case, it is safe to reconstruct proper `Box`es to
  finally drop them.
2020-10-08 13:38:01 +02:00
Mark McCaskey
f7d5a11b39 Fix sentinel value in wasm_limits_t for memory in wasm_c_api 2020-10-07 16:38:23 -07:00
Mark McCaskey
ea8bb1ee79 Merge branch 'master' into feature/engine-object-file 2020-10-06 17:50:55 -07:00
Mark McCaskey
e6bc138b10 Remove ability to use object file engine with compiler from C API
Due to the way object file engine works, it only makes sense to use in
headless mode from the C API.
2020-10-06 17:39:51 -07:00
Ivan Enderlin
fdb077236a feat(c-api) Implement wasm_exporttype_delete. 2020-10-06 22:22:00 +02:00
Mark McCaskey
aa2e8f7b4d Address more feedback, clean up code 2020-10-06 12:13:59 -07:00
Ivan Enderlin
c3efc06e87 test(c-api) Add test case for wat2wasm. 2020-10-06 20:56:36 +02:00
Ivan Enderlin
264ed836ac feat(c-api) Use c_try! and From implementations to simplify wat2wasm. 2020-10-06 20:56:21 +02:00
Ivan Enderlin
78887c378e chore(c-api) Simplify code. 2020-10-06 11:14:46 +02:00
Ivan Enderlin
ded3132b44 feat(c-api) Implement wat2wasm. 2020-10-06 11:09:35 +02:00
Mark McCaskey
ab153fc642 Improve error messages around memory creation 2020-10-05 15:45:52 -07:00