linux-packaging-mono/external/corert/Documentation/high-level-engineering-plan.md
Xamarin Public Jenkins (auto-signing) 6bdd276d05 Imported Upstream version 5.0.0.42
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
2017-04-10 11:41:01 +00:00

1.7 KiB

##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