Both CI workflows have been red since the runner images moved on. Master last went fully green on 2025-08-22 (Merge pull request #263); every run since fails before reaching the test stage on most platforms. Noticed while working on #405, where 17 of 36 checks fail for reasons unrelated to the branch.
There are two independent groups.
1. Build workflow (.github/workflows/build.yaml) - pinned JUCE 8.0.6 vs current runner images
These are toolchain/SDK problems, not JUCE API drift. The JUCE submodule is pinned at 19edd53 (8.0.6, Feb 2025).
a. _LIBCPP_ENABLE_ASSERTIONS was removed from libc++
/Applications/Xcode_26.6.app/.../MacOSX26.5.sdk/usr/include/c++/v1/__configuration/hardening.h:25:4:
error: "_LIBCPP_ENABLE_ASSERTIONS has been removed, please use _LIBCPP_HARDENING_MODE=<mode> instead (see docs)"
JUCE's juce_recommended_config_flags still defines _LIBCPP_ENABLE_ASSERTIONS=1 in Debug on Apple. Fails: test (Debug, macOS, TestRunner), test (Debug, macOS, Benchmarks). Also reproduces locally on macOS 26.5; the local workaround is configuring with -DCMAKE_CXX_FLAGS_DEBUG="-g -U_LIBCPP_ENABLE_ASSERTIONS", but the real fix is a JUCE bump (JUCE now sets _LIBCPP_HARDENING_MODE) or dropping the flag in our CMake.
b. -Werror on pre-existing implicit conversions (Release only)
15 unique -Wimplicit-int-float-conversion errors, all in our own headers:
modules/tracktion_core/utilities/tracktion_Time.h:470:39 - long long to double
modules/tracktion_graph/utilities/tracktion_PerformanceMeasurement.h:303:28 and 305:31 - uint64_t to double
modules/tracktion_engine/plugins/external/tracktion_VSTXML.h:199:37, 200:47 - int to float
modules/tracktion_engine/utilities/tracktion_BackgroundJobs.h:200:48 - int to float
modules/tracktion_engine/utilities/tracktion_Ditherer.h:24:28 - int to float, "changes value from 2147483647 to 2147483648"
Newer clang promoted these from warnings to diagnostics we now trip over, and examples/TestRunner/CMakeLists.txt compiles Release with -Werror. Fails: all test (Release, macOS, *), macOS_analyse, macOS_asan. The Ditherer.h one looks worth a genuine look rather than a blanket cast - it is an actual value change.
c. MSVC C4458 in JUCE promoted to an error
modules\juce\...\format_types\juce_VST3PluginFormat.cpp(744,55): warning C4458: declaration of `iid` hides class member
...(780,51): same
error C2220: the following warning is treated as an error
Fails: all test (Release, windows, *). Needs a JUCE bump or /wd4458 for the JUCE sources.
2. juce_compatability workflow (.github/workflows/juce_compat.yaml) - real API drift against JUCE develop
This workflow builds with -DJUCE_CPM_DEVELOP=1, so it pulls JUCE develop tip. It is doing its job: these are genuine incompatibilities to fix in our code.
a. Stale Xcode pin - infrastructure
xcode-select: error: invalid developer directory `/Applications/Xcode_15.3.app`
juce_compat.yaml:39 pins Xcode_15.3.app, which no longer exists on macos-26-arm64. build (macOS) dies after 5 seconds. Either drop the pin or move it to a version the image actually ships.
b. AudioFormat::createWriterFor signature changed
modules/tracktion_engine/audio_files/formats/tracktion_FloatAudioFileFormat.h:40:30:
error: `FloatAudioFormat::createWriterFor(...)` marked `override`, but does not override
Knock-on: FloatAudioFormat becomes abstract, so tracktion_AudioFormatManager.cpp:64 and :84 fail with cannot instantiate abstract class.
c. juce::DrawableRectangle is no longer a Component
In examples/common/Utilities.h:
:314, :317, :320 - no matching addAndMakeVisible / addChildComponent for juce::DrawableRectangle&
:446, :447, :459, :466 - DrawableRectangle has no member setVisible
d. JUCE_USE_CURL / JUCE_WEB_BROWSER redefined [-Werror]
<command-line>: error: "JUCE_USE_CURL" redefined
<command-line>: error: "JUCE_WEB_BROWSER" redefined
The examples set these both via target_compile_definitions and via the JUCE module config, and gcc treats the redefinition as an error.
Suggested order
- Fix the Xcode pin in
juce_compat.yaml (one line, unblocks build (macOS) reaching a real result).
- Bump the JUCE submodule - likely clears (1a) and (1c) together.
- Fix the
-Werror conversions in our headers, giving Ditherer.h:24 a proper look.
- Fix the JUCE develop API drift in
FloatAudioFileFormat.h and examples/common/Utilities.h.
Happy to pick any of these up.
Both CI workflows have been red since the runner images moved on. Master last went fully green on 2025-08-22 (
Merge pull request #263); every run since fails before reaching the test stage on most platforms. Noticed while working on #405, where 17 of 36 checks fail for reasons unrelated to the branch.There are two independent groups.
1.
Buildworkflow (.github/workflows/build.yaml) - pinned JUCE 8.0.6 vs current runner imagesThese are toolchain/SDK problems, not JUCE API drift. The JUCE submodule is pinned at
19edd53(8.0.6, Feb 2025).a.
_LIBCPP_ENABLE_ASSERTIONSwas removed from libc++JUCE's
juce_recommended_config_flagsstill defines_LIBCPP_ENABLE_ASSERTIONS=1in Debug on Apple. Fails:test (Debug, macOS, TestRunner),test (Debug, macOS, Benchmarks). Also reproduces locally on macOS 26.5; the local workaround is configuring with-DCMAKE_CXX_FLAGS_DEBUG="-g -U_LIBCPP_ENABLE_ASSERTIONS", but the real fix is a JUCE bump (JUCE now sets_LIBCPP_HARDENING_MODE) or dropping the flag in our CMake.b.
-Werroron pre-existing implicit conversions (Release only)15 unique
-Wimplicit-int-float-conversionerrors, all in our own headers:modules/tracktion_core/utilities/tracktion_Time.h:470:39-long longtodoublemodules/tracktion_graph/utilities/tracktion_PerformanceMeasurement.h:303:28and305:31-uint64_ttodoublemodules/tracktion_engine/plugins/external/tracktion_VSTXML.h:199:37,200:47-inttofloatmodules/tracktion_engine/utilities/tracktion_BackgroundJobs.h:200:48-inttofloatmodules/tracktion_engine/utilities/tracktion_Ditherer.h:24:28-inttofloat, "changes value from 2147483647 to 2147483648"Newer clang promoted these from warnings to diagnostics we now trip over, and
examples/TestRunner/CMakeLists.txtcompiles Release with-Werror. Fails: alltest (Release, macOS, *),macOS_analyse,macOS_asan. TheDitherer.hone looks worth a genuine look rather than a blanket cast - it is an actual value change.c. MSVC
C4458in JUCE promoted to an errorFails: all
test (Release, windows, *). Needs a JUCE bump or/wd4458for the JUCE sources.2.
juce_compatabilityworkflow (.github/workflows/juce_compat.yaml) - real API drift against JUCE developThis workflow builds with
-DJUCE_CPM_DEVELOP=1, so it pulls JUCE develop tip. It is doing its job: these are genuine incompatibilities to fix in our code.a. Stale Xcode pin - infrastructure
juce_compat.yaml:39pinsXcode_15.3.app, which no longer exists onmacos-26-arm64.build (macOS)dies after 5 seconds. Either drop the pin or move it to a version the image actually ships.b.
AudioFormat::createWriterForsignature changedKnock-on:
FloatAudioFormatbecomes abstract, sotracktion_AudioFormatManager.cpp:64and:84fail withcannot instantiate abstract class.c.
juce::DrawableRectangleis no longer aComponentIn
examples/common/Utilities.h::314,:317,:320- no matchingaddAndMakeVisible/addChildComponentforjuce::DrawableRectangle&:446,:447,:459,:466-DrawableRectanglehas no membersetVisibled.
JUCE_USE_CURL/JUCE_WEB_BROWSERredefined[-Werror]The examples set these both via
target_compile_definitionsand via the JUCE module config, and gcc treats the redefinition as an error.Suggested order
juce_compat.yaml(one line, unblocksbuild (macOS)reaching a real result).-Werrorconversions in our headers, givingDitherer.h:24a proper look.FloatAudioFileFormat.handexamples/common/Utilities.h.Happy to pick any of these up.