-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mono] [iOS] Cumulative Mono iOS HelloWorld size regressions from .NET 9 #105701
Comments
Thanks for creating this tracking issue. Do we plan to address them in .NET 9? |
Currently unsure, I put .NET 9 milestone to bring attention to this problem. Based on the discussion of possible solutions to this problem we can decide if it's .NET 9 feasible or .NET 10 likely cc: @steveisok @vitek-karas @lambdageek |
My take: We don't have enough time. Any change around this is likely relatively complicated. We're like 1 week away from RC1 so anything complex becomes quite risky. I also think that to do the proper fix we need to spend some time analyzing what it actually means to really fix this. But I don't know the technical details, maybe there's some magical trick we can use :-) |
re: #79285 This approach seems to involve special handling for Enum, which may not be the best solution overall. Since this doesn't appear to be a reasonable fix / high effort, I will close the issue.
If we don't have clear action points, investigating would probably be high effort and not justifiable impact. |
I agree it's definitely not .NET 9 target. I would like to see more investigation effort put into this to understand the issue and decide on the action points (if any). Moving to .NET 10 and will re-visit in the next planning phase. |
A couple of these might be simple to get fixes for if the cause isn't strictly generics and rather the trimming and such. For example, #101258 was a correctness fix to ensure the If it's 0.29MB per helper here, then consolidating all of It may similarly be possible to have APIs like It's notably also a bit unclear why 101258 would cause a regression here, since Do we know why this in particular would cause that regression? |
As I mentioned in the issue description, the root cause PR is "best guess" so perhaps I was wrong in this case. I'll try to reproduce it locally to confirm. |
Do you have a size estimate for the |
I do not, and I'm not familiar with how to query the size regression here. This was more just commenting on a place that could be shared if that sharing might help Mono
That's definitely interesting. There's 26 usages of So I wouldn't have expected changing a V128 API from using the latter to using the former instead would be the thing causing the throw helper to be compiled by Mono. Maybe inlining or some other IR transformation is causing the difference here? |
Tagging subscribers to 'size-reduction': @eerhardt, @SamMonoRT, @marek-safar |
Throughout the .NET 9 development cycle, the iOS HelloWorld Mono size measurements recorded several regressions related to BCL changes:
The common denominator of the changes was introduction of new generic APIs. I investigated a bit the impact of generic vs specialized API on the iOS app size using an
dotnet new ios
sample app and simple generic vs specialized interface.The preliminary conclusion is that generics API don't bring increase in app size over the specialized API. The results were ~ identical for both apps.
The issue could be to be related to Mono not being able to trim out the newly introduced BCL APIs even though they are not used by the iOS app.
Tested on 9.0.100-preview.5.24307.3
The text was updated successfully, but these errors were encountered: