Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20.0.0] More backports of fixes, mostly c-api related #8368

Merged
merged 11 commits into from
Apr 15, 2024

Commits on Apr 15, 2024

  1. c-api: Better differentiate between wasm.h and wasmtime.h APIs (b…

    …ytecodealliance#8344)
    
    This renames some types and adds some type aliases to help us better distinguish
    between `wasm.h` APIs and `wasmtime.h` APIs, primarily for `Store`-related
    types. In general, `WasmFoo` is related to `wasm.h` and `WasmtimeFoo` is related
    to `wasmtime.h`.
    
    * `StoreRef` -> `WasmStoreRef`
    * Introduce the `WasmStore[Data]` and `WasmStoreContext[Mut]` aliases
    * `StoreData` -> `WasmtimeStoreData`
    * `CStoreContext[Mut]` -> `WasmtimeStoreContext[Mut]`
    * Introduce the `Wasmtime{Store,Caller}` aliases
    fitzgen authored and alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    5453263 View commit details
    Browse the repository at this point in the history
  2. wasmtime-c-api: Improve non-support of GC references in wasm.h AP…

    …Is (bytecodealliance#8345)
    
    * c-api: Better differentiate between `wasm.h` and `wasmtime.h` APIs
    
    This renames some types and adds some type aliases to help us better distinguish
    between `wasm.h` APIs and `wasmtime.h` APIs, primarily for `Store`-related
    types. In general, `WasmFoo` is related to `wasm.h` and `WasmtimeFoo` is related
    to `wasmtime.h`.
    
    * `StoreRef` -> `WasmStoreRef`
    * Introduce the `WasmStore[Data]` and `WasmStoreContext[Mut]` aliases
    * `StoreData` -> `WasmtimeStoreData`
    * `CStoreContext[Mut]` -> `WasmtimeStoreContext[Mut]`
    * Introduce the `Wasmtime{Store,Caller}` aliases
    
    * c-api: Improve non-support of GC references in `wasm.h` APIs
    
    A couple small tweaks: error message improvements, exhaustive matching, etc...
    fitzgen authored and alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ecf71ae View commit details
    Browse the repository at this point in the history
  3. Fix running wasi-common tests on CI (bytecodealliance#8353)

    * Fix running wasi-common tests on CI
    
    Turns out we haven't been running wasi-common tests for some time in CI
    and they've started failing. Force enable the test at all times and then
    fix the test failures. The test failures here were introduced in bytecodealliance#8277
    and weren't caught due to the test not running and the fix was to relax
    the implementation of `fd_pread` to avoid taking multiple mutable
    borrows.
    
    * Fix CI
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    586d069 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    da2c3ca View commit details
    Browse the repository at this point in the history
  5. Enable the gc feature by default in the c-api (bytecodealliance#8356)

    Match the Wasmtime crate in this respect
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    3a15107 View commit details
    Browse the repository at this point in the history
  6. wasmtime-c-api: Add support for GC references in wasmtime.h APIs (b…

    …ytecodealliance#8346)
    
    Restores support for `externref` in `wasmtime_val_t`, methods for manipulating
    them and getting their wrapped host data, and examples/tests for these things.
    
    Additionally adds support for `anyref` in `wasmtime_val_t`, clone/delete methods
    similar to those for `externref`, and a few `i31ref`-specific methods. Also adds
    C and Rust example / test for working with `anyref`.
    fitzgen authored and alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    2a203af View commit details
    Browse the repository at this point in the history
  7. Fix calculation of gc refs in functions (bytecodealliance#8355)

    * Fix calculation of gc refs in functions
    
    In addition to excluding i31 also exclude funcrefs.
    
    * Review comments
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    3fe090c View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    50f88f7 View commit details
    Browse the repository at this point in the history
  9. Tidy up some headers related to shared memory (bytecodealliance#8366)

    * Tidy up some headers related to shared memory
    
    * Don't declare an anonymous `struct wasmtime_sharedmemory`, instead
      `#include` the actual definition.
    * Fix an issue where a header in `sharedmemory.h` referred to a type in
      `extern.h` which wasn't `#include`'d. This function,
      `wasmtime_sharedmemory_into_extern`, additionally isn't necessary as
      it's no different than manually constructing it. Fix this by removing
      this function.
    
    * Run clang-format
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    09b7eb8 View commit details
    Browse the repository at this point in the history
  10. c-api: Fix alignment of wasmtime_val_* (bytecodealliance#8363)

    * c-api: Fix alignment of `wasmtime_val_*`
    
    This commit fixes an issue where `wasmtime_val_raw_t` had an incorrect
    alignment. In Rust `ValRaw` contains a `u128` which has an alignment of
    16 but in C the representation had a smaller alignment meaning that the
    alignment of the two structures was different. This was seen to cause
    alignment faults when structure were passed from C++ to Rust, for
    example.
    
    This commit changes the Rust representation of `ValRaw`'s `v128` field
    to do the same as C which is to use `[u8; 16]`. This avoids the need to
    raise the alignment in C which appears to be nontrivial. Cranelift is
    appropriately adjusted to understand that loads/stores from `ValRaw` are
    no longer aligned. Technically this only applies to the `v128` field but
    it's not too bad to apply it to the other fields as well.
    
    * Try alternate syntax for alignof
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ef041e7 View commit details
    Browse the repository at this point in the history
  11. Use --locked on all cargo install in CI, also remove non-locked e…

    …xample (bytecodealliance#8369)
    
    * Use `--locked` on all `cargo install` in CI
    
    Prevents any updates to rustc or crates from accidentally causing issues
    by ensuring that the same set of deps is used over time.
    
    * Remove rust/WASI markdown parser example
    
    The documentation referring to this example was removed in bytecodealliance#6994 and
    that forgot to remove this as well. This example is building without a
    lock file which is causing issues in bytecodealliance#8368.
    alexcrichton committed Apr 15, 2024
    Configuration menu
    Copy the full SHA
    ebbe7a7 View commit details
    Browse the repository at this point in the history