Tracking Issue for wasm exception-handling architecture intrinsics
Open
Nobody has claimed this yet.
C-tracking-issue
T-libs
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.2k
- PR merge metrics
- PR metrics pending
Description
Feature gate: #![feature(wasm_exception_handling_intrinsics)]
This is a tracking issue for wasm exception-handling architecture intrinsics; currently, only the throw instruction is implemented as a platform intrinsic.
Public API
// core::arch::wasm32
pub unsafe fn throw<const TAG: i32>(ptr: *mut u8) -> !;
Steps / History
- Implementation: rust-lang/stdarch#1542
- Final comment period (FCP)^1
- Stabilization PR
Unresolved Questions
- Needs better support from LLVM before merging. At the moment, LLVM only accepts a tag value of
0, signifying a C++ exception. Ideally one would be able to somehow declare a tag in a similar way to astatic, and pass that as the TAG to the intrinsic.
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 with the wasm_exception_handling_intrinsics feature gate and the core::arch::wasm32::throw API, then review the implementation linked as rust-lang/stdarch#1542. Investigate the stated LLVM limitation around nonzero exception tags; completion would require resolving that support and progressing the listed FCP and stabilization steps.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, wasm
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100