-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Update host logic to support optional VM assembly #47481
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Tagging subscribers to this area: @vitek-karas, @agocke Issue DetailsFor desktop scenarios on architectures where CoreCLR is not supported we need to use MonoVM as supported runtime. Today the host hardcodes libcoreclr name as the only one to look for which makes this problematic because MonoVM capabilities and internals are different. This should unblock issues like #34202. /cc @steveisok
|
Are we going to use the same ABI as coreclr.dll has, or is the plan to use different one for mono? It's is also possible to build the one |
ABI would be the same as for coreclr and this is for shared framework scenarios where CoreCLR is not supported like s390x |
I see - do we need to case where on one machine I have shared frameworks with both CoreCLR and MonoVM? (I hope not, otherwise framework resolution will become more complex than it already is). |
No, the simple case should be enough at least for now (although it would help with development/testing) |
In that case we can build a different version of |
I think we need some kind of runtime switch for choosing between mono/coreclr on the standard platforms too if we want to really unblock #34202 since right now we need to rename libmono to libcoreclr in the testhost for libraries testing. |
It would be nice if we could have something like |
@steveisok this has been discussed in the past. It's definitely possible, but it's a rather large change as it would require changes to runtime packs, SDK, installers, ... There's also the question of breaking apps due to files lying in a different locations on disk (the typically If we were to support installing both CoreCLR and MonoVM shared frameworks on the same machine, then the best solution would be to include some differentiator elsewhere. The problem is that currently the system doesn't have a place to do this - adding another level of directories will probably break too many things if we do this. And it still impacts pretty all parts of the toolchain. If this would be only for development/test purposed, then I think the easiest way would be to simply create a new installation in a different location and rely on |
We'd still need some switch to tell the host to look for libmono instead. Or we could probe for |
I think it's perfectly OK to accept more than one name for the runtime itself - so the fallback logic could definitely work. There will be another small gotcha - currently the host requires coreclr.dll to be listed in Just so that this is actually actionable - some clarifications:
|
This comment has been minimized.
This comment has been minimized.
As far as I know the .deps.json is generated based on the contents of the runtime pack so it should automatically get the libmono instead.
Yes.
I don't think so, we implement these right now: runtime/src/mono/mono/mini/main-core.c Lines 29 to 41 in e9695b8
|
Re
|
We already build variants of the runtime pack for platforms also supported by CoreCLR, there's an additional Consuming this is also already supported by the SDK since dotnet/sdk#11824 |
The problem is with the framework itself - it also contains The runtime packs solve the self-contained apps, for framework-dependent apps we would need to also produce at least |
Not sure I get what the problem with the .deps.json is, a mono-based shared framework like the one I linked lists libcoreclr.so but only because we renamed the file. If we rename it back to libmono.so then the .deps.json will be correct too. |
Good - in that case it should work by just teaching |
If #34202 should be done in 6, then this needs to be done as well. Otherwise we should move both to future release. |
I do think this should be done for 6, we just need to agree on the approach. I think given the timeframe I prefer probing for libcoreclr and falling back to libmono if it doesn't exist, that should be a very small change to the host. |
@akoeplinger Why do we need to do it for 6 without #34202 ? It would be future proofing that rarely works in practice. |
Yes, I closed #49661 as a duplicate. |
Is this still an issue? I thought Mono was currently successfully using the host in non-mobile scenarios. |
This is still an issue. We want to have the host recognize a vm lib other than libcoreclr. |
I'll add it to 8.0, since this will likely not make it for 7.0. |
For desktop scenarios on architectures where CoreCLR is not supported we need to use MonoVM as supported runtime. Today the host hardcodes libcoreclr name as the only one to look for which makes this problematic because MonoVM capabilities and internals are different.
This should unblock issues like #34202.
/cc @steveisok
The text was updated successfully, but these errors were encountered: