abrown opened PR #5225 from shmem-in-wiggle-read-write to main:
This change is the first in a series of changes to support shared memory in Wiggle. Since Wiggle was written under the assumption of single-threaded guest-side access, this change introduces a
sharedfield to guest memories in order to flag when this assumption will not be the case. This change always setssharedtofalse; once a few more pieces are in place,sharedwill be set dynamically when a shared memory is detected, e.g., in a change like #5054.Using the
sharedfield, we can now decide to load Wiggle values differently under the new assumptions. This change makes the guestT::readandT::writecalls intoRelaxedatomic loads and stores in order to maintain WebAssembly's expected memory consistency guarantees. We choose Rust'sRelaxedhere to match theUnorderedmemory consistency described in the [memory model] section of the ECMA spec.[memory model]: https://tc39.es/ecma262/multipage/memory-model.html#sec-memory-model
Since 128-bit scalar types do not have
Atomic*equivalents, we remove theirT::readandT::writeimplementations here. They are unused by any WASI implementations in the project.<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
alexcrichton submitted PR review.
alexcrichton submitted PR review.
alexcrichton created PR review comment:
Similar to above, a conversion to little endian wil lneed to happen here
alexcrichton created PR review comment:
I think that this'll need the same
*_le_*treatment as below, although I realize that'll get funky with the macro here.For converting between
f32andi32couldf32::from_bitsandto_bitsbe used instead oftransmuteas well?
abrown updated PR #5225 from shmem-in-wiggle-read-write to main.
abrown has marked PR #5225 as ready for review.
abrown requested alexcrichton for a review on PR #5225.
alexcrichton submitted PR review.
alexcrichton created PR review comment:
Could this use
host_ptr.cast::<$ty_atomic>()to avoid theas?
alexcrichton submitted PR review.
abrown updated PR #5225 from shmem-in-wiggle-read-write to main.
abrown merged PR #5225.
Last updated: Dec 06 2025 at 06:05 UTC