300 Commits

Author SHA1 Message Date
Ivan Enderlin
7b6d8993e1 chore(runtime-c-api) Update C/C++ headers. 2020-01-09 10:17:34 +01:00
Ivan Enderlin
67b684ac85 feat(runtime-c-api) Improve DEPRECATED compatibility.
Clang can emulate GNUC or MSVC behaviors. So instead of detecting
whether Clang is used to compile the code, it's better to detect the
targeted features are available.

Code proposed by @nlewycky, thanks!
2020-01-09 10:13:22 +01:00
Ivan Enderlin
4f691dde17 chore(runtime-c-api) Update headers. 2020-01-08 15:25:48 +01:00
Ivan Enderlin
b31a3dcdec feat(runtime-c-api) Define the DEPRECATED macro.
This PR defines a cross-compiler `DEPRECATED(message)` macro. It must
be used as follows in Rust:

```rust
/// This is a documentation.
/// cbindgen:prefix=DEPRECATED(This is a deprecation message.")
pub extern "C" fn wasmer_foo() -> c_uint {
    42
}
```

It will generate the following C header:

```c
/**
 * This is a documentation.
 */
DEPRECATED("This is a deprecation message.")
unsigned int wasmer_foo();
```

And once this code is used by a C compiler, it will print something
like this (example from Clang):

```
…/test.c:…:…: error: 'wasmer_foo' is deprecated: This is a deprecation message. [-Werror,-Wdeprecated-declarations]
    unsigned int x = wasmer_foo();
                     ^
…/wasmer.h:…:…: note: 'wasmer_foo' has been explicitly marked deprecated here
DEPRECATED("This is a deprecation message.")
^
…/wasmer.h:…:…: note: expanded from macro 'DEPRECATED'
```

This is required for further deprecations.
2020-01-08 15:02:57 +01:00
Ivan Enderlin
0274668675 doc(runtime-c-api) Fix a typo. 2020-01-07 14:21:50 +01:00
Mark McCaskey
6a74b7e994 Prepare for 0.12.0 release 2019-12-18 17:24:29 -05:00
Mark McCaskey
6618750ebd Add include guards for WASI APIs in runtime-c-api 2019-12-17 16:25:26 -05:00
Mark McCaskey
bb90cffac9 Address feedback; improve emscripten fn names in C API 2019-12-16 19:43:57 -05:00
Mark McCaskey
a2b47bd591 Update changelog, clean up, fix test 2019-12-16 18:06:37 -05:00
Mark McCaskey
06d4897d11
Merge branch 'master' into feature/emscripten-in-c-api 2019-12-16 13:50:12 -08:00
Mark McCaskey
e86b3941d0 Update Emscripten API layout; expose inner parts to to C API; add test 2019-12-16 15:45:28 -05:00
Mark McCaskey
f1c95a81ab Add foundational emscripten functions and types to C API 2019-12-13 14:02:48 -08:00
Syrus
39f5a79254 Test the capi with multiple backends 2019-12-12 16:38:58 -08:00
Ivan Enderlin
4ef799f23d feat(runtime-c-api) Support WasiVersion::Latest. 2019-12-04 15:34:56 +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
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
Mark McCaskey
bb1e7a8d78 Prepare for 0.11.0 release 2019-11-22 11:18:06 -08:00
Mark McCaskey
fc733647ec Add info in c api readme in the testing section 2019-11-20 16:38:44 -08:00
Mark McCaskey
4a84441ab0 Run WASI C API tests based on feature; prevent cmake caching 2019-11-20 15:41:33 -08:00
Ivan Enderlin
9468e229f4 chore(runtime-c-api) Update header files. 2019-11-20 13:30:02 +01:00
Ivan Enderlin
dfe7c0d764 fix(runtime-c-api) Add support for GNUC when defining ARCH_X86_64.
`ARCH_X86_64` is correctly defined for GCC or clang, but gnuc was
missing. This patch fixes that.
2019-11-20 13:27:18 +01:00
Mark McCaskey
cebcb4c927 Prepare for 0.10.2 release 2019-11-15 14:55:53 -08:00
Ivan Enderlin
074a8f9747 Merge branch 'fix-runtime-c-api-header-preprocessor-clang' of github.com:Hywan/wasmer into fix-runtime-c-api-header-preprocessor-clang 2019-11-14 14:46:09 +01:00
Ivan Enderlin
c43a7c78d0
Merge branch 'master' into fix-runtime-c-api-header-preprocessor-clang 2019-11-14 14:45:27 +01:00
Ivan Enderlin
987b0765c0 chore(runtime-c-api) Update header files. 2019-11-14 14:37:55 +01:00
Ivan Enderlin
42b02bee71 fix(runtime-c-api) Write macros at column 0. 2019-11-14 14:37:06 +01:00
Mark McCaskey
9127eaf825 Add categories and keywords to Cargo.tomls 2019-11-13 15:46:09 -08:00
Ivan Enderlin
be9d7f2e6e chore(runtime-c-api) Update header files. 2019-11-13 15:29:33 +01:00
Ivan Enderlin
b081d17ab0 feat(runtime-c-api) Add support for clang in WASMER_H_MACROS. 2019-11-13 15:28:57 +01:00
Ivan Enderlin
645519c29c fix(runtime-c-api) Use #if defined instead of #ifdef. 2019-11-13 15:28:04 +01:00
Mark McCaskey
69950d9e5f Prepare for 0.10.1 release 2019-11-11 16:22:37 -08:00
Mark McCaskey
e121c47f18 Generate C preprocessor code to hide things not on Windows 2019-11-11 14:47:25 -08:00
Mark McCaskey
0a216c0779 Prepare for 0.10.0 release 2019-11-11 12:13:53 -08:00
Mark McCaskey
8d95e637f2 Add probable fix of memory leak in trampoline code 2019-11-01 17:38:43 -07:00
bors[bot]
cf5b3cc09e
Merge #914
914: Fix bug in getting a Memory from export in C API r=Hywan a=MarkMcCaskey

I believe this fixes the non-deterministic crashing on OSX in `go-ext-wasm`

Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-10-30 11:34:20 +00:00
Mark McCaskey
1e4fa78e11 Fix bug in getting a Memory from export in C API 2019-10-29 15:52:42 -07:00
Mark McCaskey
d87e81cf62
Merge pull request #912 from wasmerio/nlewycky-patch-1
Use printf portably.
2019-10-29 15:34:40 -07:00
nlewycky
44f026adfb
Move the linkage before the type.
Though both orders work, this is customary.
2019-10-29 15:30:59 -07:00
nlewycky
ae07620818
Use printf portably.
PRId64 is defined to the right printf format string to print a int64_t on the current system.
2019-10-29 15:28:59 -07:00
Mark McCaskey
bc9b92c323 Add null checks to new destructors in C API 2019-10-29 15:18:45 -07:00
Mark McCaskey
a104d08c04 Update ImportObject C API to use iterators 2019-10-29 14:55:14 -07:00