Typically, you should just use the latest version available in your distro. The only reason to use an older version is when you're working on a project that's effectively stuck on that version due to weird quirks or some other constraint that explicitly ties you to a certain version. You can also just download the latest version if your distro is lagging behind. As for changes, you can check on the website. Here's GCC 14's change summary , for example. In general, when the N in GCC N changes, that's a big, destabilizing change. Those tend to introduce a large amount of changes and/or a large change to a major component. If the decimal increments, then that introduces fixes and minor improvements that won't cause any potential conflicts when updating. Answer from glasket_ on reddit.com
🌐
GNU
gcc.gnu.org › gcc-13 › changes.html
GCC 13 Release Series — Changes, New Features, and Fixes - GNU Project
For C++, construction of the global iostream objects std::cout, std::cin, etc. is now done inside the standard library, instead of in every source file that includes the <iostream> header. This change improves the start-up performance of C++ programs, but it means that code compiled with GCC 13.1 will crash if the correct version of libstdc++.so is not used at run time.
🌐
Reddit
reddit.com › r/c_programming › how important are gcc versions?
r/C_Programming on Reddit: How important are gcc versions?
May 13, 2024 -

I have started getting unto assembly and optimising code and I was wandering how important if at all is it to upgrade the computer I am using.

Currently I am on gcc 11.4 which feels fairly old at this point when I am looking at what's out there.

Are the differences between versions thst big or is it generally fairly unimportant

🌐
Intel
intel.com › content › www › us › en › developer › articles › technical › build-innovation-and-performance-with-gcc13.html
Build Innovation and Performance with GCC 13 Compiler
Figure 1. GCC 13 -Ofast SPECrate 2017 (64-core) estimated improvement ratio vs GCC 12.2 on 4th Gen Intel® Xeon® Scalable Processor (formerly code-named Sapphire Rapids)
🌐
Gentoo Forums
forums.gentoo.org › board index › assistance › portage & programming
GCC Update from 12 to 13 - Gentoo Forums
September 25, 2023 - 2023-09-14T14:34:28 >>> sys-devel/gcc-12.3.1_p20230526: 40:19:29 2023-09-25T18:58:58 >>> sys-devel/gcc-13.2.1_p20230826: 8:49:40Just processing resources, here at least, if deciding to reinstall. On one side gcc;12 got a duration record. Meanwhile gcc;13 has never been so fast here.
🌐
Red Hat
developers.redhat.com › articles › 2023 › 06 › 21 › new-c-features-gcc-13
New C++ features in GCC 13 | Red Hat Developer
April 4, 2024 - This section describes other enhancements in GCC 13 · The C++ Concepts code has gotten a lot of bug fixes and a number of loose ends were tied up. If you had issues with GCC 12 on concepts-heavy code, chances are GCC 13 will do a much better job.
🌐
Reddit
reddit.com › r/cpp › gcc 13 so far:
r/cpp on Reddit: GCC 13 So Far:
October 15, 2022 -

I've been following the commit log for GCC's master branch most days for a few months, so I figured I'd jot down some of the developments that I think should have some awareness.

EDIT: Btw, you can read the commits conveniently here: https://gcc.gnu.org/git/?p=gcc.git;a=shortlog;h=HEAD

  • Type traits

    • libstdc++ has gotten many optimizations to compile time. Bool globals with the _v suffix are being refactored to not instantiate the SFINAE-based trait, and instead use the intrinsics directly. I haven't measured the new libstdc++, but I did something similar in a personal project and found 30% improved clean-build compile time, so I believe this libstdc++ work is probably significant. Many other refactors to the the templates have been made to minimize template instantiation. enable_if_t is still used consistently instead of requires, there may still be substantial room for improvement.

    • GCC 13 is gaining more type trait intrinsics. Clang has had many more for awhile, but GCC 13 so far adds: __remove_cv() __remove_reference() __remove_cvref() __is_convertible() __is_nothrow_convertible().

  • Traits for catching dangling references.

    • Type traits were added to C++23 to aid catching dangling references at compile time, which are implemented in GCC through new intrinsics __reference_constructs_from_temporary() and __reference_converts_from_temporary().

  • RISC-V V

    • The "Cray vector" extension to RISC-V is getting a lot of support in GCC 13. Cray vectors are not something I understand very well yet, so I can't talk about all the work that's going into it, but I'll say that RISC-V V shows up a lot in the commit log recently.

    • A lot of other RISC-V features have been newly supported, but I don't understand them either.

  • bfloat16

    • C++23's std::bfloat16_t, implemented through the __bf16 type (distinct from __fp16 or _Float16). There are also several supporting intrinsic functions for numeric_limits stuff that mirrors intrinsics for other floating point types (such as __builtin_nansf16b()).

    • This includes extensions to the SIMD intrinsics and attributes for bfloat16 vectors.

  • Numeric limits improvements

    • Historically, the limits stuff has been implemented through compiler-defined macros, but the commit descriptions suggest that they want to move towards consistently using intrinsic functions.

    • __builtin_issignalling() has been added to streamline away another macro.

  • "Simpler implicit move" was implemented

    • This is explained well in the commit log: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=772d532e0ba1e4b22c2b7d576e14b34ee929c093

  • "Portable assumptions" was implemented

    • This is explained here: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=08b51baddc53d64aa4c5e7a81ef3c4bf320293be

    • This can be used in old C++ standards as [[gnu::assume()]], reflecting [[gnu::likely]] etc.

    • A previous recent commit added an OpenMP feature called "assumptions", and discussed potential issues and ideas for integrating it with standard C++ assumptions. https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=4790fe99f236c7f1b617722403e682ba2f82485f

  • OpenMP massively extended

    • A lot of work has gone into supporting OpenMP features. I am not an OpenMP user, so I can't talk a lot about the details, but there are very many commits related to it.

  • GCN

    • A ton of new features for GCN (AMD's gpu architecture) were added. These seem to be largely extending intrinsics and OpenMP features that already existed, but now target GCN as well. Many of them appear to be very basic things, like cloning OMP threads, using doubles and SIMD doubles, or floor, ceil, etc. kind of primitives with native GCN support. It seems like you might do reasonably low-level GCN programming with GCC 13 now.

    • PTX has not seen similarly extensive improvements so far in GCC 13, but it is still maintained.

  • C++23 extended precision floats

    • This doesn't seem to be mentioned on cppreference yet, but it's here: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b04208895fed34171eac6bafb60c90048eb1cb0c

  • Modules

    • C++20 modules are still making progress. Seeing recent commits like, "variable template partial spec fixes" does not strike faith in me that they are near general usability yet, but they are making regular progress, so that's exciting!

  • Analyzer

    • A lot of POSIX and C++ enhancements have been made to the GCC static analyzer work ongoing since GCC 10. It apparently handles templates now, and tracks more lifetimes from file descriptors. It is mostly not implemented through attributes, pragmas, or intrinsics, so you can only extend this through GCC plugins afaik.

  • More C++23

    • static operator(): https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=303976a6076f2839354702fd2caa049fa7cbbdc2

    • Named universal escapes: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=eb4879ab9053085a59b8d1594ef76487948bba7e

    • #warning is allowed in pedantic mode: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=365202625d2f2d6694dba889ca67498fefb59c68

    • Many many fixes to C++20 and 23 features that were implemented in previous versions.

    • More various Clang compatibility enhancements.

  • Otherwise,

    • C23 has more support. I think all of the C++ forwards compatibility features were implemented, like nullptr, bool, true, etc. but don't quote me on that. There could still be some missing afaik.

    • Ada actually got a lot of commits so far. I don't use Ada so I can't really elaborate.

    • Fortran has more support. Mostly this seems related to GPGPU and OpenMP. I don't use Fortran so I can't really elaborate.

    • D has been improved. Idk much about D, but it looks like GCC 13 adds SPMD support to D, and something equivalent to register asm() from GNU C/C++, among other new D attributes.

    • A lot of GIMPLE and tree optimizations, and fixes to broken optimizations, were added. Most of these relate to optimizing mathematical expressions.

    • Various MIPS and ARM enhancements, but nothing that strikes me as hugely significant like RISC-V has been getting.

Of course, there's been way more than what I mentioned here, but these are the highlights most significant to me personally.

🌐
Red Hat
developers.redhat.com › articles › 2025 › 04 › 16 › gcc-and-gcc-toolset-versions-rhel-explainer
GCC and gcc-toolset versions in RHEL: An explainer | Red Hat Developer
April 16, 2025 - For example, gcc-toolset-12 is available in RHEL 9, but its support ended in November 2024 (after two years) as part of the Application Streams life cycle.
🌐
GitHub
gist.github.com › dstrebkov › ebe070c1e35d94f859c6cacae8d642ef
GCC 12 or GCC 13 install from sources · GitHub
make[2]: Opuszczenie katalogu '/root/gcc-12-build/fixincludes' Makefile:4097: polecenia dla obiektu 'install-fixincludes' nie powiodły się make[1]: *** [install-fixincludes] Błąd 2 make[1]: Opuszczenie katalogu '/root/gcc-12-build' Makefile:2624: polecenia dla obiektu 'install' nie powiodły się make: *** [install] Błąd 2 · maybe my platform is too weak and has too little RAM (512) for compilation to succeed :-( I increased the swap file memory to 1GB, installed some libraries and the compilation started but I have another error and I probably have to abandon the compilation. :-( regards https://gibsonic.org/tools/2019/08/08/gcc_building.html https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04
🌐
Stack Overflow
stackoverflow.com › questions › 77298654 › why-gcc-12-takes-6-times-larger-disk-space-than-11-in-a-linux-distro
Why gcc 12 takes 6 times larger disk space than 11 in a linux distro? - Stack Overflow
Folders (/usr/lib/gcc/x86_64-linux-gnu/12/ | 11) differ mostly due to sizes of two files: cc1 executable 200 vs 26 Mb, lto1 194 vs 24 Mb. When software "suddenly" gets bloated 6 times I get suspicious... P.S.2. In the meanwhile as there are no answers, I wanted to compare to Ubuntu suspecting Linux Mint builders overlooking some optimization. But currently newest Ubuntu distro has some issues (unrelated to the question). ... I have gcc 11 and 13 installed on my Linux machine and I don't see a significant difference in size of these executables.
Find elsewhere
🌐
Arm Developer
developer.arm.com › community › arm-community-blogs › b › tools-software-ides-blog › posts › gcc-13
New features in GCC 13
May 7, 2024 - In GCC-13 we’ve now fixed this ... architectures. In GCC-13 we generate: ... Resulting in a sequence that is 1/3rd the size of the one in GCC-12 and 66% faster....
🌐
Phoronix
phoronix.com › search › GCC+13
GCC 13 - Phoronix
Phoronix is the leading technology website for Linux hardware reviews, open-source news, Linux benchmarks, open-source benchmarks, and computer hardware performance tests.
🌐
Red Hat
developers.redhat.com › articles › 2023 › 05 › 04 › new-c-features-gcc-13
New C features in GCC 13 | Red Hat Developer
April 4, 2024 - New C++ features in GCC 13 · New C++ features in GCC 12 · New C++ features in GCC 10 · The default C dialect in GCC 13 is -std=gnu17. You can use the -std=c2x or -std=gnu2x command-line options to enable C2X features.
🌐
Arm Community
community.arm.com › arm-community-blogs › b › tools-software-ides-blog › posts › gcc-12
Arm Community
May 10, 2022 - This code loads and stores to a local array and so is a no-op. However, because the front end cannot see what the load and store intrinsics are doing we can only eliminate the instructions late in RTL. However we would have already laid out the frame and so before GCC 12 we would generate:
🌐
GNU
gcc.gnu.org › releases.html
GCC Releases - GNU Project
April 30, 2026 - GCC releases may be downloaded from our mirror sites · Important: these are source releases, so will be of little use if you do not already have a C++ compiler installed. As one option, there are pre-compiled binaries. for various platforms
🌐
GNU
gcc.gnu.org › gcc-13
GCC 13 Release Series - GNU Project
June 5, 2025 - This release is a bug-fix release, containing fixes for regressions in GCC 13.3 relative to previous releases of GCC.
🌐
GNU
gcc.gnu.org › gcc-13 › porting_to.html
Porting to GCC 13 - GNU Project
January 31, 2025 - GCC 13 implements excess precision support, which was implemented just in the C front end before, in C++. The new behavior is enabled by default in -std=c++NN modes and when FLT_EVAL_METHOD is 1 or 2 and affects the behavior of floating point constants and expressions.