WebAssembly / WebAssembly/binaryen

Lower WASM exceptions to MVP (or maybe GC)

Open
#7,179 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
WebAssembly
Stars
8.6k
Forks
885
Avg merge
1d 19h
Merged PRs (30d)
69

Description

Many C++ libraries require exceptions, like libriscv and Binaryen itself. Compiling them to WASI would work (as wasi-sdk, iirc, supports WASM exceptions), but some WASM parsers (like my fork of waffle) and WASM compilers (like w2c2) do not.

For compatibility with those compilers and parsers, we would need a WASM exception lowering pass. Generically, the only sound option is lowering to GC, however MVP lowering might be required for some usages, where we would redirect exception data to either a seperate memory or an unused segment of the existing one.

As one of the few WASM analysis tools that support exceptions, Binaryen seems fit to contain some exception lowering pass, even if it would be unnecessary for most pure-Binaryen workloads.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points; begin by reviewing Binaryen’s existing WebAssembly exception support and pass conventions. Resolve whether the pass targets GC-based lowering, MVP lowering, or both, then define compatibility coverage and tests for the selected behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
wasm
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.