jamulussoftware / jamulussoftware/jamulus

Adopt C++17 as the global Jamulus language-standard baseline

Offen
#3,938 20 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@ann0see arbeitet bereits daran.

Seit 06.9.2026.

AI refactoring
Vorherrschende Sprache
C
Sterne
1.1k
Forks
248
Ø Merge
2 T. 3 Std.
Gemergte PRs (30 T.)
9

Beschreibung

## Summary

Move Jamulus to a C++17 language-standard baseline on every supported platform.

The current configuration is inconsistent. `Jamulus.pro` enables C++17 for Windows and Android, but its Unix branch still enables C++11. The project documentation still requires C++11 compatibility.

This migration must be completed in a separate change from PR #3787.

## Required changes

1. Update `Jamulus.pro`.
- Replace the Unix `CONFIG += c++11` setting at Lines 311-313 with C++17.
- Remove the platform-specific C++17 selection at Lines 106-108 and Lines 271-274 if the global C++17 setting makes those branches redundant.
- Keep all existing non-language-standard platform configuration unchanged.
- Confirm that qmake passes the C++17 language-standard option for Windows, Linux, macOS, iOS, and Android.

2. Update the contributor policy.
- Replace `Maintain C++11 compatibility throughout the code.` in `CONTRIBUTING.md` with the C++17 baseline requirement.
- Replace the C++11/Android exception in `AGENTS.md` with the C++17 baseline requirement.

3. Review project-owned build instructions and automation.
- Review `COMPILING.md`, platform deployment scripts, and GitHub Actions workflows.
- Document any minimum compiler, Xcode, MSVC, Android NDK, or Qt toolchain version that is necessary for C++17.
- Update the affected instructions and CI setup when an existing supported toolchain cannot compile C++17.
- Do not modify language-standard settings inside vendored dependencies under `libs/` unless a dependency build is directly invoked by Jamulus and requires an explicit compatible setting.

4. Validate the supported build matrix.
- Run or confirm CI builds for Linux, Windows, macOS, iOS, and Android with the global C++17 setting.
- Confirm both reverb-enabled and `CONFIG+=noreverb` configurations compile where applicable.
- Record any platform that needs a separate compatibility decision.

## Rationale

`src/plugins/audioreverb.h` in PR #3787 uses a C++17 inline variable. A global C++17 baseline removes the Unix language-standard mismatch and allows the project to use one documented standard.

## Acceptance criteria

- `Jamulus.pro` selects C++17 for all Jamulus targets.
- No project-owned document states that C++11 compatibility is required.
- The supported-platform build documentation states the required C++17-capable toolchains.
- The CI matrix completes successfully on all supported platforms.
- Vendored dependency configuration remains unchanged unless it is necessary for a Jamulus build.

## References

- PR #3787: https://github.com/jamulussoftware/jamulus/pull/3787
- Review comment: https://github.com/jamulussoftware/jamulus/pull/3787#discussion_r3943320819
- Requested by @ann0see.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.