JUCE minimum requirements no longer supported for macOs?

Hi. I think the commit below is a breaking change regarding the JUCE minimum requirements on macOs (Xcode 9.2, macOS 10.12.6 as per juce master branch)

I’m trying to build with Xcode 9.4.1 on macOs 10.13.1 and it no longer works with the following error:

juce_dsp/widgets/juce_WaveShaper.h:76:33: error: no type named ‘invoke_result’ in namespace ‘std’
2022-04-18T12:22:40.4263530Z static WaveShaper<typename std::invoke_result, Functor> CreateWaveShaper (Functor functionToUse) { return {functionToUse}; }
2022-04-18T12:22:40.4264040Z ~~^
juce_dsp/widgets/juce_WaveShaper.h:76:55: error: expected unqualified-id
2022-04-18T12:22:40.4264850Z static WaveShaper<typename std::invoke_result, Functor> CreateWaveShaper (Functor functionToUse) { return {functionToUse}; }
2022-04-18T12:22:40.4265140Z ^
2022-04-18T12:22:40.4283540Z 2 errors generated.

This can be reproduced with the DemoRunner with c++ 17 enabled

The commit:

We’ll shortly be bumping our minimum required version of Xcode to 10.1 (macOS 10.13.6) to accommodate some new Metal-layer-backed rendering routines, so fixing this won’t be a priority sorry!

Thx Tom. I can simply revert the commit as I don’t use dsp waveshaper so it’s not a big problem here. But if you’re not planning to offer a fix for it I think it would be fair to update the breaking changes list to include it. (I think it arrived in juce 6.1.5 or .6).

IIUC, this is expected to be a JUCE7 feature.

Xcode 9.x is last to support 32bit and seems to be supported by JUCE6.

So maybe low-priority but feels it should end support with JUCE 6.x?

Would also be great to clean up RTAS leftovers with JUCE7.

1 Like

Yeah, we’re going to get rid of RTAS.

What’s the value of __cplusplus (and thus JUCE_CXX17_IS_AVAILABLE) with Xcode 9.4.1?

We have Xcode 9.2 and Xcode 10.1 as part of our CI. The former has JUCE_CXX17_IS_AVAILABLE=0 and the latter has JUCE_CXX17_IS_AVAILABLE=1, but it looks like 9.4.1 might also be in the latter camp but with an incomplete C++17 standard library.

So this commit doesn’t affect our minimum requirements - something is likely going wrong elsewhere.

__cplusplus = 201703
JUCE_CXX17_IS_AVAILABLE = 1

I believe this is correct. The comment for the previous handling stated that clang didn’t have full c++ 17 support at the time.

That’s fine with me. My suggestion for adding this to breaking changes is to inform people that Xcode 9.4 (9.3 as well? not tested) no longer works with JUCE when c++ 17 is enabled.

Thanks for putting the effort to scope this and keep Xcode 9.4 feasible.

1 Like

Tested and working on 9.4.1. Thanks Tom and ttg.