JUCE and macOS 11 / ARM

I know it was only announced an hour ago, but what are the JUCE plans to support macOS 11 and ARM processors? I assume once the Projucer is updated then the generated Xcode projects will create universally binaries and everything will ‘just work’?

I started my JUCE career for the last processor change. Not really looking forward to doing it again, but I guess that’s life.

2 Likes

This time it’ll probably be kind of easy. The ARM code (SIMD) is already in juce for iOS and we all know how universal builds work from i386/x64. I expect this transition to be much less trouble than the whole Notarization party. My personal problem will be being forced to use XCode 12 and loosing 32 bit compatibility for good + some 3rd party libs with Intel-only SIMD intrinsics that will loose performance.

It was suggested that also plugins will be run under rosetta, wondering if this also applies for AudioUnits and co. This would be interesting for legacy software.

Does anyone actually have a significant amount of 32-bit users on macOS?

If the old rosetta is any indication then yes they will of course run, but real-time performance was really terrible under rosetta. The common techniques to emulate a different instruction set conflict with the requirements of real-time processing.

1 Like

My first attempt to build a JUCE app for ARM fails because objc_msgSend_fpret is only available on the i386 platform.

https://developer.apple.com/documentation/objectivec/1456697-objc_msgsend_fpret?language=objc

Let the Juce team have a go at it first :wink: . That function won’t be needed on ARM.

The keynote mentioned that the code is “converted” (don’t remember if that’s the word they used) by Rosetta 2 only once upon installation of non-native apps, with JIT compilation only kicking in for “interpreted” code like Java or JavaScript

1 Like

I’ve not tried XCode 12 yet - but this suggests we’re able to compile ARM binaries on an Intel machine (but not test them of course). Is that right?

Edit: answered my own question here

The Juce team might want to order a Developer Transition Kit (DTK) from Apple to test everything before new Macs eventually hit the market. Supplies seem to be limited.

Yep, we’ll have access to a developer kit to test that everything is working before the hardware goes to market. We’re anticipating that there will be minimal changes required to JUCE, but as always it’s a bit of an unknown.

6 Likes

I think most of us will be waiting for hardware drivers for I/O to be updated longer than anything else.

Rail

4 Likes

Has anyone seen if all iOS apps will work on Mac OS 11? If it’s not down to developer choice then this could have huge implications for plugin devs and pricing structures if desktop DAWs go down the AUv3 route! Most developers as far as I can tell sell their plugins for cheaper on iOS. If anyone can enlighten me on this I’d be grateful as even though it’s still early days, I can’t find anything that confirms if all apps will work or if it’s down to developer choice.

1 Like

I think I saw somewhere that by default all iOS apps will run on macOS, but developers can opt out. So you’ll be probably able to launch your existing iOS AUv3 on your mac unless developers block it. However the iOS Apps probably run in some kind of sandbox inside macOS and it seems very unlikely it’ll be possible to use AUv3 apps inside regular Desktop hosts.

If you sign in to your Apple developer account you’ll be asked to agree to new terms which contain:

All newly created and existing compatible iPhone and iPad apps will be made available on Mac. Your compatible apps will be published on the Mac App Store on Apple Silicon Macs unless you end their availability

You can then opt-out on a per-app basis via App Store Connect.

5 Likes

Will any required changes for MacOS 11/Xcode 12 compatibility be available in JUCE 5 as well as JUCE 6?

We’re not going to retrospectively implement macOS 11 and Xcode 12 support in JUCE 5. Whilst we’re still learning the details from Apple it looks like there will be a fair amount of build configuration management required.

3 Likes

I think they have a ‘bridge’ in the OS that allows AU3s to act like AU2s.

Also jassertfalse won’t compile.

1 Like

We will need a new one of those then.

Which CPU manual should we be reading to mull over optimisation and ordering issues? Anyone got a link to save my lazy self from working it out? :slight_smile: