dotnet / dotnet/runtime

NativeAOT support for WASM

Open
#132,798 2 comments 0 reactions 0 assignees View on GitHub
arch-wasm area-NativeAOT-coreclr
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.