Announcement

Collapse
No announcement yet.

GCC 5.1 Officially Released

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • GCC 5.1 Officially Released

    Phoronix: GCC 5.1 Officially Released

    Those behind the GNU Compiler Collection have announced this morning the official release of GCC 5.1, the first major release of GCC 5...

    http://www.phoronix.com/scan.php?pag...C-5.1-Released

  • #2
    Originally posted by phoronix View Post
    Phoronix: GCC 5.1 Officially Released

    Those behind the GNU Compiler Collection have announced this morning the official release of GCC 5.1, the first major release of GCC 5...

    http://www.phoronix.com/scan.php?pag...C-5.1-Released
    Now with stupid version numbers!

    Comment


    • #3
      benchmark between clang 3.6 and gcc 5.1 ?

      Comment


      • #4
        Originally posted by kalin View Post
        benchmark between clang 3.6 and gcc 5.1 ?

        +1 for this

        Comment


        • #5
          Originally posted by cb88 View Post
          Now with stupid version numbers!
          It's actually more consistent. If you want to avoid old-school non-numerical versioning labels like "alpha", "next", etc. during experimental stages would you use -1 instead? 4.9999?

          Comment


          • #6
            ABI change

            So I've read that GCC 5.1 introduces a ABI change for libstdc++ and distributions are planning to recompile all their packages to work with the new ABI, such as Ubuntu 15.10 and Fedora 23. Fedora 22 will use GCC 5.1 but the old ABI with it.

            What does this mean for compatibility with binary-only, proprietary apps like Steam and the 1100+ proprietary games that are still based off an Ubuntu 12.04 "Steam Runtime" with GCC 4.8 libs? Will the games stop working on future distros that embrace GCC 5 and compile against C++11 ABI, unless Valve manages to convince all the devs to recompile their games but then break compatibility with older and LTS distros?

            Specifically, FESCo’s decision means the C++ standard library headers installed by the libstdc++-devel RPM will have a different default value for the _GLIBCXX_USE_CXX11_ABI macro (0 in F22 and 1 in F23) but the libstdc++.so library will be largely the same in F22 and F23, because that library contains all the symbol definitions for both the old ABI and the new ABI, so that the same library works for both cases.

            However, when another DSO such as libboost_filesystem.so is compiled with GCC 5 it will be compiled using either the old ABI or the new one, but not both, and programs linking to that DSO will usually need to use the same ABI to avoid linker errors. The C++ libraries that are part of Fedora 22 will be built using the old ABI, but they will be built using the new ABI in Fedora 23. Developers might need to recompile their programs using the new ABI in order to link to C++ libraries in Fedora 23.


            http://developerblog.redhat.com/2015/02/10/gcc-5-in-fedora/

            Comment


            • #7
              Originally posted by Xaero_Vincent View Post
              So I've read that GCC 5.1 introduces a ABI change for libstdc++ and distributions are planning to recompile all their packages to work with the new ABI, such as Ubuntu 15.10 and Fedora 23. Fedora 22 will use GCC 5.1 but the old ABI with it.

              What does this mean for compatibility with binary-only, proprietary apps like Steam and the 1100+ proprietary games that are still based off an Ubuntu 12.04 "Steam Runtime" with GCC 4.8 libs? Will the games stop working on future distros that embrace GCC 5 and compile against C++11 ABI, unless Valve manages to convince all the devs to recompile their games but then break compatibility with older and LTS distros?

              Specifically, FESCo?s decision means the C++ standard library headers installed by the libstdc++-devel RPM will have a different default value for the _GLIBCXX_USE_CXX11_ABI macro (0 in F22 and 1 in F23) but the libstdc++.so library will be largely the same in F22 and F23, because that library contains all the symbol definitions for both the old ABI and the new ABI, so that the same library works for both cases.

              However, when another DSO such as libboost_filesystem.so is compiled with GCC 5 it will be compiled using either the old ABI or the new one, but not both, and programs linking to that DSO will usually need to use the same ABI to avoid linker errors. The C++ libraries that are part of Fedora 22 will be built using the old ABI, but they will be built using the new ABI in Fedora 23. Developers might need to recompile their programs using the new ABI in order to link to C++ libraries in Fedora 23.


              http://developerblog.redhat.com/2015/02/10/gcc-5-in-fedora/
              Now you know why games should respect user freedom; so that everyone can build and port it themselves.

              Comment


              • #8
                Originally posted by Xaero_Vincent View Post
                So I've read that GCC 5.1 introduces a ABI change for libstdc++ and distributions are planning to recompile all their packages to work with the new ABI, such as Ubuntu 15.10 and Fedora 23. Fedora 22 will use GCC 5.1 but the old ABI with it.

                What does this mean for compatibility with binary-only, proprietary apps like Steam and the 1100+ proprietary games that are still based off an Ubuntu 12.04 "Steam Runtime" with GCC 4.8 libs? Will the games stop working on future distros that embrace GCC 5 and compile against C++11 ABI, unless Valve manages to convince all the devs to recompile their games but then break compatibility with older and LTS distros?
                No. First of all. The change is in libstdc++ not in gcc itself. Some distros are shipping gcc 5.1 configured to link with the old libstdc++ by default. For new applications it won't even be noticed unless you are using a C++ library that is using STL classes in their interface. Something like Qt for instance is not a problem since Qt interfaces uses its own classes and not STL, so you use a Qt library built against an otherwise incompatible STL and not have any problems.

                Comment


                • #9
                  Originally posted by Xaero_Vincent View Post
                  What does this mean for compatibility with binary-only, proprietary apps like Steam and the 1100+ proprietary games that are still based off an Ubuntu 12.04 "Steam Runtime" with GCC 4.8 libs? Will the games stop working on future distros that embrace GCC 5 and compile against C++11 ABI, unless Valve manages to convince all the devs to recompile their games but then break compatibility with older and LTS distros?
                  AFAIK the new GCC 5 libstdc++ will support the old and the new ABI at the same time. So Valve has to update their shipped libstdc++ in the "Steam Runtime" and all developers can use GCC5 with the new ABI without breaking existing binary code.

                  Other solution is to ship you own libstc++ with your binary.

                  Comment


                  • #10
                    Originally posted by carewolf View Post
                    No. First of all. The change is in libstdc++ not in gcc itself. Some distros are shipping gcc 5.1 configured to link with the old libstdc++ by default. For new applications it won't even be noticed unless you are using a C++ library that is using STL classes in their interface. Something like Qt for instance is not a problem since Qt interfaces uses its own classes and not STL, so you use a Qt library built against an otherwise incompatible STL and not have any problems.
                    I hope you're right because if not, this sounds like it can become a big mess for Valve and Steam and Linux gamers. Who knows which libraries these proprietary games use? Granted, some games may not of been developed with C++ at all but I imagine a good majority of native ports may. The way it sounds from that article, its a good idea to recompile your software even if it just links to a system library developed with C++ and built with the new ABI enabled.

                    Hence this part:

                    However, when another DSO such as libboost_filesystem.so is compiled with GCC 5 it will be compiled using either the old ABI or the new one, but not both, and programs linking to that DSO will usually need to use the same ABI to avoid linker errors. The C++ libraries that are part of Fedora 22 will be built using the old ABI, but they will be built using the new ABI in Fedora 23. Developers might need to recompile their programs using the new ABI in order to link to C++ libraries in Fedora 23.

                    In the case for Steam and the Steam Runtime, it includes it own libstdc++ and libgcc files but they often conflict when newer versions of those libraries are installed system-wide and require that they be removed (and in this case use the system installed GCC 5.1 versions) in order for Steam to function:

                    https://wiki.archlinux.org/index.php...runtime_issues
                    Last edited by Xaero_Vincent; 04-22-2015, 12:50 PM.

                    Comment

                    Working...
                    X