Xamarin-macios: [Xcode 11] Drop support for 32-bit Xamarin.Mac apps

Created on 14 Jun 2019  路  8Comments  路  Source: xamarin/xamarin-macios

macOS Catalina won't be able to execute 32-bit macOS executables, nor will we be able to build such executables on macOS Catalina because we'd need Xcode 9.4, which doesn't work on Catalina (#6217).

Since we won't be able to build nor test 32-bit apps on macOS Catalina, continued 32-bit support will mean a lot of work for very little gain, so I think we should drop 32-bit support in Xamarin.Mac.

Tasks:

  • [ ] Drop XM/Classic build support in VSfM + add helpful error message to VSfM if someone tries to open/build XM Classic projects. VSTS #976434.
  • [x] Drop XM/Unified 32-bit build support in mmp and msbuild targets + add helpful error message.
  • [x] Drop Classic support in the generator.
  • [x] Remove 32-bit tests

    • [x] Remove 32-bit tests from xharness. #6301.

    • [x] Port Classic mmp/regression tests to Unified. #4975.

  • [x] Make the onlyOn64 flag to the availability attributes default to true for macOS + ignore it completely in the generator. #6595
  • [x] Stop building/shipping 32-bit XM assemblies and libraries. #6393.
  • [x] Remove 32-bit only frameworks (QuickTime, QTKit, QuartzComposer)? Or replace them with [Obsolete (Error = true)] stubs? [Moved to #7704]
enhancement macOS

Most helpful comment

Until then we build packages on 10.14 (which still supports Xcode 9.4).

Correct, but we (the developers) won't be able to build xamarin-macios on Catalina, which would make our lives quite complicated if we wanted to upgrade (in particular when Catalina becomes stable in fall and everybody else upgrades).

It's possible to come up with a dual system that doesn't support 32-bit when built on Catalina, but that means spending time implementing something that is about to die anyway.

All 8 comments

No doubt about the tasks - but the big question is when ? :)

We can assume an Xcode 11.x, in early 2020, to require macOS 10.15. Until then we build packages on 10.14 (which still supports Xcode 9.4).

Before that it's largely not a technical (only) decision... c.c. @chamons @davidortinau

Let me look into this from a management angle... I have wanted to kill 32-bit for a long time as you know.

Until then we build packages on 10.14 (which still supports Xcode 9.4).

Correct, but we (the developers) won't be able to build xamarin-macios on Catalina, which would make our lives quite complicated if we wanted to upgrade (in particular when Catalina becomes stable in fall and everybody else upgrades).

It's possible to come up with a dual system that doesn't support 32-bit when built on Catalina, but that means spending time implementing something that is about to die anyway.

@rolfbjarne @spouliot - We have 馃憤 to nuke 32-bit support, customers who need that can use an older Xamarin.Mac.

Just keep building/testing on pre-Catalina?
Which should be part of the test matrix anyway, along with Catalina? Right?
Until such time as there are no supported pre-Catalina systems?

Are there no longer 32bit simulators, to better emulate memory usage?

@jaykrell this only applies to macOS, not iOS.

There are 32-bit iOS simulators if you run on iOS 10.3 or lower (you must also select an iPhone 5 (or earlier) device as the simulator device).

If you try to build an i386 XM Unified Project you get

/Users/donblas/Projects/Unified/MMP: Error MM0144: Building 32-bit apps is not supported anymore. Please change the architecture in the project's Mac Build options to 'x86_64'. (MM0144) (Unified)

and if you build classic w mmp enabled you get:

Error MM0143: Projects using the Classic API are not supported anymore. Please migrate the project to the Unified API. (MM0143)

I hope the IDE gets updated at some point, but I'm going to call that "done" and good enough for now.

Was this page helpful?
0 / 5 - 0 ratings