-
Notifications
You must be signed in to change notification settings - Fork 825
Description
Note
This is a "meta" issue for tracking purposes, since GitHub does not support special types of issues.
@kant2002 I've converted it to the tracking issue, if you don't mind.
Original description
AOT and trimmability is around the corner, and FSharp has issues with some of these technologies. There visible issues with NativeAOT, but I suspect R2R may AOT less code due to these issues or maybe trimmer keep more code.
Describe the solution you'd like
I would like to create action plan of known issues for NativeAOT and trimmability of generated FSharp code to have smaller steps toward F# ❤️ AOT goal. I would like that reflection-free mode of NativeAOT, as opposed to normal NativeAOT mode where reflection working would be also considered.
Describe alternatives you've considered
Seems to be fsharp/fslang-suggestions#919 reach some conclusion, so I think we should go to action.
Also I consider target just NativeAOT with reflection (default), but seems to be having no-reflection is easy way to uncover issues with trimmability and unnecessary reflection usage in app. I consider that approach more of technique to find issues faster, plus I may have smaller app.
Open issues
- Hello World doesn't work with reflection disabled in NAOT #14355
- System.ArgumentException when publishing trimmed, self-contained app #14873
-
printf
usage requires a lot of rd.xml boilerplate, like it shows here. -
FSharp.Core.OptimizedClosures.FSharpFunc
has recusive generics (?) -
printf "%А"
does not work in reflection-free mode. There preliminary work here Reflection free code gen #12960 - Interpolated strings like
$"{x}"
breaks in reflection-free mode. - Ensure that FSharp.Core is trimmable. #12819
- Tail opcode being emitted for normal methods, destroys JIT optimizations #6329
- A function calling Assembly.GetExecutingAssembly() gets inlined across assembly boundaries #9283
Metadata
Metadata
Assignees
Labels
Type
Projects
Status