NativeAOT support for WASM
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
Tracking issue for NativeAOT support for WASM.
- [ ] Emit Linking sections (see https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md)
- [ ] #132812
- [ ] Put any hard-coded portable entry point code behind a check for the JIT flag.
- [ ] Validate `[JSExport]` experience in NativeAOT
- [ ] Align size and offset field/property/method types on binary format interfaces and types to align to the WASM32 spec (for example, `WasmDataSegments` should use uint for size and reloc offsets into segments, and modules can be larger than uint.MaxValue, so section offsets should use long or ulong).
Related resources:
- [Wasm binary format](https://webassembly.github.io/spec/core/binary/modules.html)
- [Runtimelab LLVM NativeAOT WASM branch](https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM)
- [Wasm linking information](https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md)
- [LLD wasm code](https://github.com/llvm/llvm-project/tree/main/lld/wasm)
Contributor guide
Research direction
This is a broad tracking issue covering NativeAOT support for WASM rather than one isolated change. Start by reading the Wasm binary format and Wasm linking information resources, then review the Runtimelab LLVM NativeAOT WASM branch and the linked #132812 issue. Done means completing a clearly scoped checklist item and validating the resulting NativeAOT WASM behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, wasm
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100