Skip to content

Latest commit

 

History

History
61 lines (48 loc) · 1.72 KB

high-level-engineering-plan.md

File metadata and controls

61 lines (48 loc) · 1.72 KB

Runtime

  • Build managed parts
    • Build language source to IL
    • Compile IL assembly with ILC compiler
  • Unix
    • Runtime Unix PAL
    • Assembly port
    • Thread suspension - hijacking
  • RyuJIT EH
    • Define Runtime/Codegen contract
  • Stack unwinding
    • JIT: Produce platform-specific unwind info
    • Runtime to consume the platform specific unwind info
  • Managed/native transitions helpers (both pinvoke and reverse pinvoke)
    • JIT: emit the right transition helpers
    • Implement the transition helpers
  • GC info encoding (for precise GC)
    • Enable conservative GC
    • Toolchain support to write the GCInfo into final binary
    • Runtime to consume GCInfo produced by RyuJIT today for precise GC

Toolchain

  • Split compilation
    • Design document
      • Robust name mangling
      • Generics (comdat foldable section, or special module)
    • Implementation
      • Phase 1 - Single obj for System.Private.CoreLib
      • Phase 2 - Respective object file for everything else (1:1 Assembly:ObjectFile mapping)
  • Produce complete EE types in the toolchain
  • Stubs - Delegates, etc.
  • Adjustments for RyuJIT / UTC difference

Reflection

  • Produce compact metadata in the final binary
  • Produce mapping tables
  • Runtime consumption

Interop

Framework

  • Move all .NET Native System.Private* libraries over to github
  • Complete .NET Native specific libraries in corefx (build, port to Unix)
  • Port to Win32/Unix

Shared generics

  • Toolchain - produce supporting tables and fixups

CPPCodegen

  • Complete IL to CPP codegenerator
  • Portable EH