dotnet/runtimelab

[NativeAOT-LLVM]: Outstanding tasks tracking issue

Open

#1,828 opened on Jan 19, 2022

View on GitHub
 (6 comments) (18 reactions) (0 assignees) (219 forks)auto 404
area-NativeAOT-LLVMhelp wanted

Repository metrics

Stars
 (1,605 stars)
PR merge metrics
 (PR metrics pending)

Description

If someone want to contribute to the NativeAOT-LLVM branch, its not obvious what tasks need doing. This issue is a checklist of tasks that can be picked up by whoever is interested. Hopefully this will encourage engagement by providing a list where the difficulty can be marked. The list is in a vague priority list, top items = higher priority, but that's just my own preference and not official. Feel free to pick anything you like.

  • Complete RyuJIT compilation. The LLVM compilation is currently in 2 modules, the old IL->LLVM module, and the new RyuJIT IR -> LLVM module. The latter offers the opportunity to take advantage of RyuJit's optimisations.
    In progress RyuJIT IR instructions:

  • Complete Helper functions

    • CORINFO_HELP_READYTORUN_GENERIC_HANDLE (and generics in general)
    • CORINFO_HELP_READYTORUN_GENERIC_STATIC_BASE
    • CORINFO_HELP_GVMLOOKUP_FOR_SLOT
    • CORINFO_HELP_READYTORUN_DELEGATE_CTOR Some early discussion in #1870
  • Merge latest from main/NativeAOT or at least move forward. Note https://github.com/dotnet/runtimelab/pull/1681#issuecomment-954335818

  • Release configuration compilation, i.e. src\tests\build nativeaot Release wasm targetsNonWindows skipnative /p:SmokeTestsOnly=true /p:LibrariesConfiguration=Release and src\tests\run runnativeaottests Release wasm currently fails

  • Threads

    • Thread suspension: add GC Polls.
    • Confirm atomics are created, for exmaple, Interlocked.*
    • Update runtime code, e.g. where we have #ifndef FEATURE_WASM_THREADS
    • Shadow stack management needs to be moved to Thread (for stack walking non-current threads) (partially done in #2672, still to do is adding shadow stack top to the transition frame)
    • Library code - update for enabling threads.
    • Create new packages, ones for single threaded and ones for multithreaded.
    • Anything else not thought of, build intergration.
  • Linux build - see #2605

  • Mac build

  • Mechanism to allow imports and exports through the WebAssembly Canonical ABI (for more info https://github.com/bytecodealliance/wit-bindgen)

  • Wasm Exceptions . Probably have to wait until the RyuJIT compilation is complete as Wasm Exceptions are not compatible with c++ exceptions which are currently produced by the IL->LLVM module

  • Remove IL->LLVM module

  • Other Smoke tests

Contributor guide