-
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
Add new RID for Catalyst #47518
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. |
First step in being able to build different mac catalyst runtimes Resolves dotnet#47518
That's not the case, a Catalyst app doesn't run on iPadOS, it just supports the same APIs running on macOS and is usually used to port iPad apps to the Mac. The official name is |
The problem with |
While longer, it clearly states that it belongs to the Apple/Mac ecosystem. The shorter |
I think |
What about |
In that case, should this derive from It sounds like we're going to need to artificially cross-compile these now in order to deliver the right implementation on catalyst. I can imagine customer code which pinvokes to platform API needing to do the same. |
Catalyst is, at least from a build perspective, the iOS API running on macOS libraries. So, random example, the The compiler triple implies it derives from |
What we do at the RID level and what we do in the libraries build are two different scenarios: the RID is mostly concerned about native binary compatibility: in that case as @directhex mentioned it's a new ABI so there's no compatibility with existing binaries - hence deriving from For the libraries build we can mostly share the managed implementations, that's what we already do e.g. by adding Line 394 in b37f10a
|
So... what should we call it? |
Given the design proposal for the TFM is |
My feeling is that I'd choose @ericstj any thoughts on the naming? |
I think from an end-user point of view the purpose is the same ("I want to target Mac Catalyst with managed/native assets") so I don't think we should make a distinction there. |
I see, I had that backwards. In that case should it derive from the iOS RID?
It is not. It's meant for both native binaries and assemblies. It's meant to model both platform API and native binary compatibility, to allow as much asset reuse as possible. RID hierarchy is entirely pragmatic: it's whatever we find most useful. The one thing it must be is internal; RID's cannot influence compile time behavior, so they cannot be used to model platform specific public API. That's where the TFM (and TFM+TPM) is different, since that's specifically about exposing and extending platform specific public API.
I know we regretted using |
Sure but it seems to be rare to use it for managed RID-specific assets, more common are native binaries. The only matches for the former I have in my NuGet packages cache are If NuGet authors are mainly using it for native binaries then it'd probably make sense to not derive maccatalyst from ios since the native ABI isn't compatible. |
What about the mobile case? Surely Catalyst can consume iOS managed nugets? Aren't there a whole bunch of Xamarin components out there? |
The existing Xamarin.iOS nugets don't use the RID setup so they'd be pulled in because of the compatibility mappings that will be defined as part of dotnet/designs#174 |
Yeah, I think it makes sense to derive from unix then. |
You can use Kusto to do a more scientific query. We shouldn't discount our own packages. Those packages are going to grow because of this with a redundant copy of the binary.
Native binaries work with either parenting, since |
Just to restate the tradeoff here:
IMHO option 2 enables a scenario without really losing anything meaningful. We also have precedent for this in |
@ericstj Thanks for breaking it down like that. It doesn't seem like there's harm in deriving from |
First step in being able to build different mac catalyst runtimes Resolves #47518
We need to introduce new Catalyst RIDs to be able to build Catalyst runtime packs. I propose we add the following new RIDs to support them inheriting from iOS RID.
maccatalyst-arm64
maccatalyst-arm64-13
maccatalyst-arm64-14
maccatalyst-x64
maccatalyst-x64-13
maccatalyst-x64-14
I went with a simple catalyst instead of macOSCatalyst as it's very long and it runs on iPadOS as well.
@steveisok @terrajobst
The text was updated successfully, but these errors were encountered: