Slashdot Mirror


GCC 3.2 Released

bkor forwards the GCC 3.2 release announcement, without attributing it as such: "The GCC 3.2 release is now available, or making its way to, the GNU FTP sites. The purpose of this release is to provide a stable platform for OS distributors to use building their next OS releases. A primary objective was to stabilize the C++ ABI; we believe that the interface to the compiler and the C++ standard library are now stable. There are almost no other bug-fixes or improvements in this compiler, relative to GCC 3.1.1. Be aware that C++ code compiled by GCC 3.2 will not interoperate with code compiled by GCC 3.1.1. More detail about the release is available. Many people contributed to this release -- too many to name here!"

5 of 311 comments (clear)

  1. Re:Is this front page material? by paladin_tom · · Score: 4, Insightful

    This is front-page material because GCC is one of the most important building blocks of the free/open-source software world.

    GCC is the de facto compiler for GNU/Linux and *BSD systems. Furthermore, the Linux kernel currently hasn't been ported off GCC. Without GCC, free *NIX systems would have nowhere near the importance they have now.

    --
    #define sig "Every social system runs on the people's belief in it."
  2. Re:Thank God! by oyenstikker · · Score: 4, Insightful

    No. Your whole system will have crapped out after 3 minutes with a compile error, just waiting for you to come back on Monday.

    --
    The masses are the crack whores of religion.
  3. Re: Breaking interoperability... again??? by Antity · · Score: 4, Insightful

    "Be aware that C++ code compiled by GCC 3.2 will not interoperate with code compiled by GCC 3.1.1."

    When will they understand that breaking interoperability is not the way to go forward?

    Please remember that the C++ standards comitee encouraged vendors to use different (incompatible) ABIs for C++. C++ compilers were not supposed to interoperate, because they thought that this would never work, because the compiler had to do far too much things outside the object files (compilation units) for exception handling and initialization code.

    And, for all compilers I know, they were right.

    You really cannot blame the GCC people for this. Whenever they have to change the internal handling of exceptions, templates and stuff internally, it really is the best choice to change the ABI.

    The C++ standard was never designed to make code compiled by different compilers link. And gcc2, gcc3.1, and gcc3.2 are different compilers because the internal handling of these very complex structures changed.

    --
    42. Easy. What is 32 + 8 + 2?
  4. Re: Finally, ABI stabilization. Now about optimiza by Antity · · Score: 4, Insightful

    Compile with optimization on -- visual glitches.

    Compile with optimization off -- no visual glitches.

    You know that GCC has been tested more with optimization turned on than with -O0 (no optimization)?

    About two years ago, I was compiling linuxconf. The Makefiles forced -O0 (no optimization), and its author, asked, said that "there will be errors by the compiler when I turn on optimization, so I force it to be off for everyone."

    It turned out there was a bug in his code. It wasn't gcc's fault. It just showed up when you used optimization. But, btw, the code of Linuxconf has been ugly as hell since I first saw it.

    Code that won't compile (or break) at -O1 is crap.

    --
    42. Easy. What is 32 + 8 + 2?
  5. Re:(Sorta-kinda OT) - GCC3 and GCC 2.95.3 coexist? by Plutor · · Score: 4, Insightful

    I got into a good habit at my first SysAdminning job that prevents this kinda problem. Make a directory in /usr/local/package/. Make a subdirectory dist, and untar the source there. configure --prefix=/usr/local/package/. make and make install, and then when you have all your /usr/local/package/bin/ and lib directories, make sym links.

    "Uninstalling" and "upgrading" becomes as easy as "for F in `ls -l /usr/local/* | grep '-> /usr/local/package/'`; do rm $F; done".

    At the aforementioned job, the directory I installed to was actually /usr/local/package/version/architecture/, but I consider that overkill on my home machine.