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.
  • 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.