WebAssembly / WebAssembly/threads
Path to Phase 4
Nobody has claimed this yet.
- Dominant language
- WebAssembly
- Stars
- 767
- Forks
- 54
- PR merge metrics
- No merged PRs in 30d
Description
The current main branch has become miserably out of date. We now have a rebased version of (most of) the threads specification living in a new branch (and I'm very grateful for @ioannad's invaluable help here). I've also passed over this branch to excise some long-standing bugs (e.g. https://github.com/WebAssembly/threads/issues/195) and other TODOs.
I'm using this issue to track my progress towards getting Threads phase 4-ready, since the only remaining bar facing the proposal's standardisation is full specification text. My intention is to start out doing this work in the upstream-rebuild branch, although I'm sure we'll have a conversation about how to update main at some point.
Core document TODOs:
generalise binary encoding to allow LEBsgive text descriptions forwaitandnotifydescribe behaviour of thewait'(suspend) administrative instructionfix tearing behaviour of float and SIMD non-atomicsdescribe the behaviour of the concurrent host- todo: finish writing prose / evaluate alternative formalisations
todo: fully remove old host state particle
extend configurations to hold multiple threadsfix shared memory bounds checks in instantiationrebase in the axiomatic constraints of the relaxed memory modeltodo: predicates should be coinductive- todo: work out why sphinx is rendering negative space weirdly
todo: auxiliary functions- todo: finish writing prose
- extend these constraints to describe
wait/notifyqueue behaviour link the above constraints to the actions emitted in the operational semanticstodo: syntax for coinductives
- formatting - add line breaks where the PDF overflows
JS-API document TODOs:
check with an expert whether I got the JS-API rebase correctintegrate with growable SharedArrayBuffer- final inline todos
Interpreter TODOs:
rebase the interpreter into the new branchcollect together the tests from the other WIP branches- update
.wast->JStest generation tool to handlethreadandwait
Misc TODOs:
- re-unify with main(?)
update the spec render- check whether any other documents need updating
- final inline TODO sweep
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the upstream-rebuild branch and the remaining unchecked items in the Core, JS-API, Interpreter, and Misc TODO lists. The issue names unfinished specification prose, wait/notify constraints, formatting, and .wast-to-JS test generation as areas to inspect. Done requires resolving the remaining TODOs and determining whether the updated work should be unified with main.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, wasm
- Domain
- compilers, documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100