-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Description
IL Interpreter can be used on target platforms that cannot fully support the JIT (ex: iOS), and the one with even more limitations (ex: watchOS only supports bitcode) to handle the .NET APIs which depends on the JIT. It will also help in our future effort to port to new platforms (ex: webassembly) where it's much easier to port than the JIT.
Integration to other components and features of the runtime will be needed: debugger, AOT with mixed-mode execution, etc.
iOS is the platform that will most benefit from this effort because it currently doesn't support multiple features that are impossible to support with fullAOT and without a JIT. For example, System.Reflection.Emit is currently disabled for lack of an interpreter, and dynamics use a C# interpreter that is slow and doesn't support all features.
Milestone I
- Make the interpreter pass all runtime tests Make the interpreter pass all runtime tests #6861
- Make the interpreter pass all BCL tests Make the interpreter pass all BCL tests #7053
- Update XI build targets to propagate interpreter settings Update XI build targets to propagate interpreter settings #6916
- Build interpreter library Build the interpreter as a separate library #6918
- Add support for icall linking Handle icall linking with interpreter and FullAOT workload #6808
Milestone II
- Support Interpreter in mixed-mode (AOT fallback mode) Support Interpreter in mixed-mode #6915
- Enable SRE for profiles which support the interpreter
- Make managed BCL interpreter implementation optional (SLE parts)
- Make the fullAOT+interp pass all BCL tests Make the fullAOT+interp pass all BCL tests #11566
- Make the fullAOT+interp pass all runtime tests Make the fullAOT+interp pass all runtime tests #11567
- Implement easy optimizations with noticeable impact Interpreter performance optimizations #11531
Future
- Generate icall table from the managed linker Generate icall table from the managed linker #6809