Usability Improvements in GCC 15
Reactions to GCC 15 usability features
- Strong approval of clearer diagnostics, especially hierarchical template error trees that mirror the actual instantiation tree; several note this directly addresses long‑standing C++ pain.
- Some want less visual noise: requests for single‑line error messages, fewer “note:” lines, and a user config file / env var to globally tweak diagnostic style.
- Mixed feelings about Unicode/ASCII “text art”: some love the improved readability; others see it as rococo ornamentation that IDEs and tools don’t understand yet and would prefer IDE‑friendly structured output instead.
Emojis and Unicode in diagnostics
- Many dislike emojis in compiler output: hard(er) to grep, terminals without emoji support, worries about weird width/rendering across terminals/SSH.
- Others argue they’re great visual anchors, easy to spot and actually easier to search for than “warning”, plus fully optional:
- GCC already supports
-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji]to disable/adjust them.
- GCC already supports
- Broader tangent on Unicode on the command line: some say Unicode is now routine and a win for non‑English users; others insist anything non‑ASCII in machine‑processed output is a mistake.
GCC vs Clang/LLVM: technical and ecosystem angles
- Multiple comments assert GCC and Clang are now broadly comparable in:
- error message quality,
- compile speed,
- generated code performance (each sometimes wins).
- Clang is praised for lower RAM usage and very fast linkers like
ld.lld; others point out mold works with both. - GCC still seen as stronger for obscure/embedded CPUs and C23 compliance; LLVM is viewed as the innovation hub that spawned Rust/Swift/Zig and gets more academic/corporate attention.
- Some worry about GCC’s relevance long‑term; others see healthy momentum and argue that competition between GCC and LLVM benefits both.
Licensing, ideology, and compiler architecture
- Big subthread on GPL vs permissive licenses:
- One side: GPL forces vendor toolchains to be FOSS, encouraging upstreaming and protecting user freedom.
- Other side: GPL/FSF policies (e.g., on plugins/IR, copyright assignment, GPLv3) allegedly drove vendors and language projects to LLVM, reducing GCC’s ecosystem importance and ultimately user freedom.
- libgccjit is noted as limited (GPL, performance, architecture) compared to LLVM’s role as a generic backend.
- Debate over whether Stallman’s hardline decisions were principled but counterproductive or essential to early FOSS; disagreement on whether someone else would have “done GNU” anyway.
Templates, concepts, and type systems
- Discussion of SFINAE vs concepts/traits:
- Some wish generic constraints were checked at definition time (like Rust traits), not per instantiation.
- Others defend C++’s lazy templates as simpler and more powerful in some respects, while acknowledging the diagnostic complexity.
Plugins and language frontends
- GCC plugins are reported as mature and in active use (e.g., kernel).
- COBOL and Rust (gccrs) frontends are mentioned as signs GCC is still expanding, though Rust’s official toolchain being LLVM‑based is viewed by some as a strategic loss for GCC.
Meta: article site usability
- Several complain the article page “hijacks” the browser back button via history APIs just for scrolling, calling it ironic on a usability article.
- Suggestions include:
- disabling JS,
- browser flags to require user interaction for history changes,
- or even removing/locking down history & redirect JS APIs due to widespread abuse, with some pushback that these APIs also enable genuinely good UX patterns.