Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
GNU is Not Unix Programming News

GCC 4.8.0 Release Marks Completion of C++ Migration 269

hypnosec writes "GCC 4.8.0 has been released (download), and with it, the developers of the GNU Compiler Collection have switched to C++ as the implementation language, a project the developers have been working for years. Licensed under the GPLv3 or later, version 4.8.0 of the GCC not only brings with it performance improvements but also adds memory error detector AddressSanitizer, and race condition detection tool the ThreadSanitizer. Developers wanting to build their own version of GCC should have at their disposal a C++ compiler that understands C++ 2003."
This discussion has been archived. No new comments can be posted.

GCC 4.8.0 Release Marks Completion of C++ Migration

Comments Filter:
  • by Anonymous Coward

    For not using the word "dog food" in the summary.

  • You need to compile this compiler with a compiler which begs the question....

    How was the first compiler compiled?

    • Re:chicken or egg? (Score:5, Informative)

      by Jeremi ( 14640 ) on Friday March 22, 2013 @06:19PM (#43252361) Homepage

      How was the first compiler compiled?

      With an assembler. (of course, real men didn't need an assembler, they toggled in the hexadecimal opcodes directly in hex, using a hickory switch and a quart of whiskey)

      • by jthill ( 303417 )
        I don't remember any front panel ever using hickory switches.
      • by Anonymous Coward on Friday March 22, 2013 @06:38PM (#43252547)

        Hexadecimal? You kids and your newfangled contraptions. Back in my day, we had to use BINARY, and we were always running out of 1's so we had to take the 0's to the blacksmith and have them cut down and straightened before we could use them.

        • Re: (Score:3, Informative)

          Puhlease. Octal. On the front panel of a PDP-8e.

        • Binary ?? You kids and your newfangled contraptions. Back in my day, we only had 0's. If and when we wanted or needed a 1, a very rare case indeed, we put two infinities of 0's together to make a 1. As simple as that.
      • Re:chicken or egg? (Score:5, Interesting)

        by Greyfox ( 87712 ) on Friday March 22, 2013 @07:20PM (#43252947) Homepage Journal
        Back in '87 in my assembly language class, which was on some ancient DEC machine (Think it was a PDP 11-03 or something,) our instructor gave us all a sheet with the bootstrap code we had to type in, in octal, to make the system jump to the OS instructions on our 8" floppy disks. He showed us how to use a table in our assembly language book to convert assembly code to machine code by hand. If all you're looking at is a slab of iron (Arrhn!) that's where you start! It's a little intimidating imagining having to start with nothing but a table of opcodes and a slab of raw iron that you can enter bits into somehow. I'd think you'd want a basic program loader, so you could save the assembler that you carve out of opcodes. Once you have your assembler stored on disk, you can write your initial C compiler (Not the standard library mind you, just the compiler!) At some point along the way, you compile EMACS.

        Of course, all those pokes in the back of Compute! magazine were really just hand-converted machine instructions to be stuffed into specific areas of memory, but I didn't realize that at the time. I forget exactly when I finally made that association. I think it was during that assembly class; I was like "Oh, the number is just an opcode! Derp!" I probably could have squeezed a lot more interesting stuff out of my first computer (A TI 99/4A) if I'd know that at the time.

        • Intimidating? That sounds like a blast!

          • by Greyfox ( 87712 )
            Not much call for it these days. One of my later classes in college had a project to write a machine emulator -- it had its own instruction set, registers, program counter, etc. You could load up and run simple programs in it. Sadly we didn't get to spend as much time as I'd have liked to playing with the thing. Writing one of those really doesn't take that long, then you could bootstrap a simple OS and tools onto it. Might be a fun project for rainy/snowy weekends!
            • Doesn't matter how much call there is for it, it's there to be done because it rocks! ;-) I love poking at electronic innards, virtual or otherwise. Over the summer I'm getting back into this stuff, I've forgotten most of it but it's like riding a bicycle, he says in a blaze of enthusiasm.

        • by rs79 ( 71822 )

          11/03 isn't old. 11/20 is old.

          technically an 11/03 wasn't a PDP-11, it was an LSI-11.

          The 11/34 was the first one that was really useful, EIS/FIS was built in so you had a divide instruction finally. But by then the console switches were gone, no more toggling in the boot loader for you.

      • by rs79 ( 71822 )

        I worked at Teklogix in the 70s and sat next to Dave Conroy and can attest to the fact he wrote it n PDP assembly than ran under RSX-11M. It was a better compiler than the one that shipped with Unix at the time; Dave and I both went to Waterloo, they had an 11/45.

        This became decus C which had some influence on GCC. Allegedly the latter was a clean rewrite but I remember poking around on toad.com in 91 or so and seeing DGC's comments and initials in the code there.

        Can't say I'm a C++ fan.

      • How was the first compiler compiled?

        With an assembler.

        Incorrect, that is "assembled" not "compiled".

    • Re:chicken or egg? (Score:5, Informative)

      by WWJohnBrowningDo ( 2792397 ) on Friday March 22, 2013 @06:20PM (#43252373)

      It wasn't. It was written in assembly language and was converted into machine code by an assembler.

    • Re:chicken or egg? (Score:5, Insightful)

      by timeOday ( 582209 ) on Friday March 22, 2013 @06:21PM (#43252377)
      It is like everything in modern life... how do you build a lathe without a lathe? Or a generator without electricity? It would take a thousand years to start from nothing and get back to where we are now.
      • It would take a thousand years to start from nothing and get back to where we are now.

        Not quite. Since we already have the informations there are many many short-cuts and tricks that could cut that time down to a few decades. Of course the end of civilization as we know it and the struggle for resources while the majority of the population dies off, could get in the way of progress and easily ten double that guesstimate, but then we are talking hypothetical here, so...

      • by Kjella ( 173770 )

        It is like everything in modern life... how do you build a lathe without a lathe? Or a generator without electricity? It would take a thousand years to start from nothing and get back to where we are now.

        I think you vastly underestimate how much time and effort has been spent on pursuits that were futile or that were technically possible but nobody had discovered or knew the usefulness of doing. If the technology was already described to us we'd advance far more rapidly and planned. I'd expect a reboot to Amish levels in 100 years, the 1950s in another 50 and catching up to today 50 years after that at most.

      • Rubbish. Our ancestors invented those things you cited without prior knowledge, and in about 100 years, (from 1750 onwards).
        Lookup the industrial revolution.

        You seriously think we could not start "from nothing" (apart from our accumulated knowledge) and not have a lathe going in a few decades?

        Of course, if you mean "starting again from plankton", well, that took a lot more time than 1000 years.

    • Re:chicken or egg? (Score:5, Informative)

      by ShanghaiBill ( 739463 ) * on Friday March 22, 2013 @06:27PM (#43252449)

      You need to compile this compiler with a compiler which begs the question....

      Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.

      How was the first compiler compiled?

      The first compilers (Fortran and Lisp) were written in assembler. Later compilers were written in Lisp or Fortran.

      New languages can be bootstrapped by first implementing a sufficient subset, and then expanding it. Ken Thompson explains this process (and how to subvert the process) in his Turing Award lecture on Trusting Trust. [bell-labs.com]

      • Re:chicken or egg? (Score:5, Insightful)

        by Laxori666 ( 748529 ) on Friday March 22, 2013 @06:33PM (#43252509) Homepage
        Enough people use the term "beg the question" this way that I've just gotten used to it by now. It doesn't bother me anymore. It's over, man. The war is lost. It's in common use now. Rewire the part of your brain that gets annoyed by it. You will be happier in the long run.
        • Indeed, the market "responded back."
        • by wonkey_monkey ( 2592601 ) on Friday March 22, 2013 @07:18PM (#43252933) Homepage
          Screw that. I'm going to continue pulling people up on this one irregardless.
        • Re:chicken or egg? (Score:5, Insightful)

          by alexo ( 9335 ) on Friday March 22, 2013 @08:11PM (#43253403) Journal

          Enough people use the term "beg the question" this way that I've just gotten used to it by now. It doesn't bother me anymore. It's over, man. The war is lost. It's in common use now.

          The problem with that approach is that you lose an important idiom that doesn't have a good substitute.

          So, no, some things in the language are worth preserving (at least until a suitable alternative is found).

          Rewire the part of your brain that gets annoyed by it. You will be happier in the long run.

          You can educate people about the beauty of the language without being annoyed.

          You know what, English is my 3rd language. I only moved into an English-speaking country when I was in my 30s, and if I can appreciate its richness, I'm pretty sure that a native speaker can do so as well.

          • I never thought of English as a rich language. All the good words that seem to enrich the language are mostly just acquired from other languages. And since our linguistic rules (both syntax and the separation of verbs, nouns and adjectives) is rather fluid, English speakers can be pretty lazy when it comes to stringing a sentence together.

      • by Livius ( 318358 )

        Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.

        "Beg" is just (in the context of questions) an old-fashioned word for 'ask'.

        The problem is people use it to mean
        a) an answer that merely restates the question (asking the same question a second time)
        or
        b) an answer that is incomplete without the answer to an immediate follow-up question (providing a deficient answer that merely raises a trivially new question without having provided any useful information).

        The ambiguity is annoying.

        Though not as much as other people overreacting to it.

      • The stupidity of complaining about the phrase "beg the question" is just dumb.

      • Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.

        Thank you. I've been wondering if I was the only person left who cares.

      • C as the language was extremely handy because C was ubiquitous. C++ is a lot less common. Building new GCCs could be painful for a lot of people, probably have to build earlier GCC compilers first just to be able to build the later version. They should have labelled this 5.0.0 to mark a firm dividing line.

        • Building new GCCs could be painful for a lot of people, probably have to build earlier GCC compilers first just to be able to build the later version.

          There is no need for that. You just use a cross compiler [wikipedia.org]. You only need to bootstrap a language once.

          • by ld a,b ( 1207022 )
            The first build of the compiler used to bootstrap everything else was helpfully provided by the CIA's new Amazon cloud.
            Next time you run mingw stay alert for the "'login' is not recognized as an internal or external command, operable program or batch file" warnings during compilation.
      • You need to compile this compiler with a compiler which begs the question....

        Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.

        Here's an honest, no trolling, I'm just curious question: when was the last time your heard "begs the question" used to mean "this is a circular argument"?

        • Been a long time since I heard it that way - but I've heard "That's begging the question" a fair bit to mean "you're making a circular argument", and it helps people keep the two straight in their head if they consciously choose to separate them. That said, it would be a lot simpler to call the logical fallacy "circular reasoning" instead of "begging the question".
        • Here's an honest, no trolling, I'm just curious question: when was the last time your heard "begs the question" used to mean "this is a circular argument"?

          It has been a long time. It is used incorrectly so often, that I no longer consider it to be a cromulent expression. If you use it correctly, 90% of your readers will be confused. If you use it incorrectly, 10% of your readers will be left wondering what other aspects of your education are also deficient. So it is best to know what the phrase means, but avoid it in your own writing and speaking.

      • by rs79 ( 71822 )

        A compiler written in FORTRAN? Really? Which one?

      • Re:chicken or egg? (Score:4, Interesting)

        by dryeo ( 100693 ) on Saturday March 23, 2013 @12:45AM (#43254799)

        You need to compile this compiler with a compiler which begs the question....

        Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.

        Nice comment.
        Language evolves. This makes it nice and raises the question of what I mean by "nice comment" From http://etymonline.com/?term=nice [etymonline.com],
        nice (adj.) Look up nice at Dictionary.com
                late 13c., "foolish, stupid, senseless," from Old French nice (12c.) "careless, clumsy; weak; poor, needy; simple, stupid, silly, foolish," from Latin nescius "ignorant, unaware," literally "not-knowing," from ne- "not" (see un-) + stem of scire "to know" (see science). "The sense development has been extraordinary, even for an adj." [Weekley] -- from "timid" (pre-1300); to "fussy, fastidious" (late 14c.); to "dainty, delicate" (c.1400); to "precise, careful" (1500s, preserved in such terms as a nice distinction and nice and early); to "agreeable, delightful" (1769); to "kind, thoughtful" (1830).

    • How was the first compiler compiled?

      How was the first dictionary written?

  • All right, (Score:3, Funny)

    by Anonymous Coward on Friday March 22, 2013 @06:16PM (#43252329)

    This should be in the Debian repositories by the end of the decade.

  • Nice new feature (Score:5, Interesting)

    by EvanED ( 569694 ) <evaned AT gmail DOT com> on Friday March 22, 2013 @06:34PM (#43252521)

    From the changelog: "A new general optimization level, -Og, has been introduced. It addresses the need for fast compilation and a superior debugging experience while providing a reasonable level of runtime performance. Overall experience for development should be better than the default optimization level -O0."

    This actually sounds really attractive to me... I'll have to try it out.

  • [GUARD #1] Are you suggesting compilers migrate?
    [ARTHUR] Not at all, they could be carried.

  • Anyone know when RedHat is going to make a version of devtoolset which offers GCC 4.8?

    • I don't know the date of their tools release, but doing a "one shot" installation if you want to play around is pretty easy:

      tar zxf gcc-4.8.0.tar.gz
      cd gcc-4.8.0
      ./contrib/download_prerequisites
      cd ..
      mkdir gcc-4.8.0-build
      cd gcc-4.8.0-buid
      ../gcc-4.8.0/configure --prefix=/SOMEINSTALLDIR --disable-multilib --disable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran
      make -j #NUMPROCESSORS
      make install

      then add to PATH, LD_LIBRARY_PATH etc

      That'll get you up and running.

  • Yessssss! (Score:5, Funny)

    by Greyfox ( 87712 ) on Friday March 22, 2013 @07:03PM (#43252803) Homepage Journal
    Now! Witness the power of this FULLY OPERATIONAL C++ Compiler! Muahahahahahaha! Erm... damn it... what's the flag for debug symbols again?
  • Does it dance yet? (Score:3, Interesting)

    by Anonymous Coward on Friday March 22, 2013 @07:06PM (#43252831)

    From Wikipedia:

    > LLVM was originally intended to use GCC's front end, but GCC turned out to cause some problems for both the LLVM developers and Apple. GCC is a large and somewhat cumbersome system to develop; as one long-time GCC developer put it, "Trying to make the hippo dance is not really a lot of fun"[7] and a Google Summer of Code intern commented, "Reading GCC codebase has been a hard exercise for me. In fact it's the only project I know of that becomes more and more difficult as time passes."[8]

    I'm just wondering, is this still the case? It sounds like they haven't changed much of anything, merely ported their codebase to C++. Am I correct in assuming that the above is still true or is this new version supposed to usher in a new era of GCC prosperity and usability on things other then the command line?

    • No. The front ends are still tied to the middle in a strange way (for example, doing constant folding in the parser, so you can't get an accurate parse tree to use in refactoring tools from the gcc front end). It's also interesting to note that two of the features that they highlighted in this release, Address Sanitizer and Thread Sanitizer are things that began life in Clang / LLVM. This is largely due to the progression of Google's shift from GCC to LLVM (these tools were developed at Google). Given t
  • by snikulin ( 889460 ) on Friday March 22, 2013 @07:08PM (#43252851)

    Can it be used for non-OSS development and releases of compiled binaries to a customer?
    It's not trolling, I really need to know (embedded dev here).

    • I was going to say yes, and I'm fairly sure the answer is yes. But, I have not read the GPL3, so I do not really know the difference between it an GPL2. It seems unlikely that they would force people to release code under an open source license because you compiled it with GCC. In fact, that is probably not possible because you own the copyright on your code and any compiler should be able to make it work (depending on portability). So, I would say yes, you can compile non-OSS projects with GCC 4.8.0.
    • Re: (Score:2, Informative)

      by Anonymous Coward

      The license [gnu.org] makes it perfectly clear that you can use the latest GCC on proprietary code. Specifically:

      The purpose of this Exception is to allow compilation of non-GPL (including proprietary) programs to use, in this way, the header files and runtime libraries covered by this Exception.

  • What is the current situation with GCC vs. CLang?

    • Re: (Score:2, Funny)

      by Anonymous Coward

      blows were landed, they both got tired, and now they're at the neighborhood watering hole
      telling the story for the fourth time in increasingly slurred words

    • Re: (Score:3, Informative)

      by Anonymous Coward

      They're pretty equal. Some things compiled with GCC run better, others with CLang run better.

      At this point (and I mean exactly this point, no comment for future potential,) it's mostly a matter of license, which is pretty much irrelivant for compilers since even the GPL's copyleft doesn't force you to go GPL to use their compiler.

      To me it seems like the major motivation behind LLVM / Clang were to make a great open source compiler that wasn't GPL. They've succeeded, whether or not you agree with their inten

      • except that (Score:3, Informative)

        by decora ( 1710862 )

        clang is a lot faster and uses a huge amount less memory than GCC when running. for some projects this is rather important.

        gcc has a lot of cross-build chains out there, and a lot of experienced users. but i have never seen a clang->arm cross chain.

        clang++ is still using GNU libraries for C++ stuff.

        clang is still a pain in the ass to compile, with unclear instructions, and a massive, huge compile time. gcc on the other hand is built by automated scripts quite frequently as part of, for example, cross-too

        • I don't know if their changes are closed or not, but Apple uses clang to cross compile to arm with their toolchain.

        • "clang is still a pain in the ass to compile, with unclear instructions, and a massive, huge compile time. gcc on the other hand is built by automated scripts quite frequently as part of, for example, cross-toolchain builds."

          Clang is really easy to build, usually easier than building GCC which often requires you to checkout multiple additional libraries (mpfr etc). Clang only requires that you clone two repositories: llvm and clang, clang is checked out into llvm/tools and the build process of llvm will aut

      • by dgatwood ( 11270 )

        To me it seems like the major motivation behind LLVM / Clang were to make a great open source compiler that wasn't GPL.

        Sort of. Their motivation was to make not a compiler, but a compiler construction kit with lots of highly reusable pieces that could be used as parts of other software. The Clang/LLVM combination is a lot more modular, and integrates more easily with other software. Even if GCC were BSD-licensed, it is just not capable of doing half the things that Apple's developer tools use Clang for t

Despite all appearances, your boss is a thinking, feeling, human being.

Working...