2. .NET Native
• Ahead Of Time (AOT) compiler for .NET UWP applications and the
associated runtime.
• Compiles IL binaries
• Produces platform specific executable (X86/AMD64/ARM)
• .NET runtime optimized for AOT
3. Application at runtime
• GC and other low level code
• Same GC as .NET Core
• The only part written in C/C++ (mrt100_app.dll)
• Runtime specific FX
• CoreLib, reflection, type system, …
• CoreFX
• https://github.com/dotnet/corefx – shared with .NET Core
• Compiler generated code
• Interop, serializers, …
• Application code
4. Compiler components
• IL to IL transformations
• Global analysis of the app and the FX it uses
• Tree shaking
• Determines what reflection metadata to include
• Code generators – interop, serialization, …
• NUTC – compiles IL to platform specific assembly
• Binder – produces the final platform specific binary
5. Shared library
• Core portions of the framework are precompiled into a platform
specific SharedLibrary.dll (native Windows .dll)
• Applications call into it instead of including the code in them
• SharedLibrary.dll is shared between all apps on the machine
• Reduces size on disk for the apps
• Reduces the compile time for the apps
• Speeds up app startup (less IO if SharedLibrary.dll already loaded)
6. Windows Store integration
• Used by all managed applications in the UWP Windows Store.
• Integrated in VS for UWP App development.
• Part of the Windows Store ingestion process
• Managed apps are submitted to store as IL
• The store compiles them with .NET Native for all target platforms
7. Coming to .NET Native
• .NET Standard 2.0 support
• UWP apps will be able to use the full set of .NET Standard 2.0 APIs
• UWP apps will be able to use any library which targets .NET Standard 2.0
• Bug fixes, improvements, …
8. CoreRT project
• Cross-platform open source evolution of .NET Native for UWP
• Work in progress, not a shipping product
• Initial target: Simple microservices on Windows/Unix x64
• Full AOT toolchain and runtime
• RyuJIT used as code generator
• Platform linker produces the final binary