Slashdot Mirror


GCC 4.9 Coming With Big New Features

jones_supa writes "When GCC 4.9 is released in 2014 it will be coming in hot on new features with a large assortment of improvements and new functionality for the open-source compiler. Phoronix provides a recap of some of the really great features of this next major compiler release from the Free Software Foundation. For a quick list: OpenMP 4.0, Intel Cilk Plus multi-threading support, Intel Bay Trail and Silvermont support, NDS32 port, Undefined Behavior Sanitizer, Address Sanitizer, ADA and Fortran updates, improved C11 / C++11 / C++14, better x86 intrinsics, refined diagnostics output. Bubbling under are still: Bulldozer 4 / Excavator support, OpenACC, JIT compiler, disabling Java by default."

120 of 181 comments (clear)

  1. frist by Anonymous Coward · · Score: 1, Funny

    finally

    1. Re:frist by StripedCow · · Score: 5, Funny

      finally

      C++0x does not have "finally".
      You'll have to implement it yourself, e.g. using a destructor.
      See for example: http://codereview.stackexchange.com/questions/2864/an-implementation-of-finally-in-c0x

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
  2. A big improvement indeed by Anonymous Coward · · Score: 3, Insightful

    New in this release: lots of stuff most people don't care about, some minor improvements and oh yeah we gave up on Java.

    1. Re:A big improvement indeed by symes · · Score: 1

      I have to agree - I've been trying to find out more on the multi-threading support, something that is strangely lacking detail but you would imagine could be quite popular

    2. Re:A big improvement indeed by Joce640k · · Score: 2

      we gave up on Java.

      That's not news?

      --
      No sig today...
    3. Re:A big improvement indeed by cduffy · · Score: 4, Insightful

      You only don't care about sanitizing standard-undefined behavior if you don't care about bugs.

      That one's a Really, Really Big Deal.

    4. Re:A big improvement indeed by Anonymous Coward · · Score: 3, Interesting

      New in this release: [...] we gave up on Java.

      Well, actually it's the other way around: Java gave up on them - meaning that actual development of GCJ moved from GCC to OpenJDK.
      Not that i understand what it means for GCC, but i understand that it does not mean much for Java.

    5. Re:A big improvement indeed by Anonymous Coward · · Score: 1

      One thing gcc allows is to compile Java code into native code. Is this also supported by OpenJDK?

    6. Re:A big improvement indeed by DuckDodgers · · Score: 4, Interesting

      No, it is not. But GCJ Java-to-native compiling didn't result in particularly fast Java code. That's one of the major reasons developers and enterprises ignored GCJ in the first place.

    7. Re:A big improvement indeed by larry+bagina · · Score: 3, Funny

      I care. Or I will, in 5 years, when it's finally available in debian.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    8. Re:A big improvement indeed by Hizonner · · Score: 5, Insightful

      I assume you can list all the undefined behaviors in the C standard off the top of your head, yes? And you've never actually written a line of code with an error in it, right?

      I've spent a lot of time cleaning up after security bugs written by people with that attitude. None of them could make mistakes either. Maybe you guys should form a club, so the rest of us can identify the special beings walking among us.

    9. Re:A big improvement indeed by turgid · · Score: 1

      +1 Hear, hear.

    10. Re:A big improvement indeed by Anonymous Coward · · Score: 1

      Did you know that the following is now undefined behaviors thanks to GCC's adherence to the strict aliasing rule?

      void *get_in_addr( struct sockaddr *sa ) {
          if (sa->sa_family == AF_INET)
              return &(((struct sockaddr_in*)sa)->sin_addr);
          else
              return &(((struct sockaddr_in6*)sa)->sin6_addr);
      }

      So yeah. Suck on it.

    11. Re:A big improvement indeed by StripedCow · · Score: 1

      That whole sockaddr design sucks. It's about time somebody (or some compiler) complained about it.

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
    12. Re:A big improvement indeed by serviscope_minor · · Score: 1

      Did you know that the following is now undefined behaviors thanks to GCC's adherence to the strict aliasing rule?

      Surely that depends on the design of sockaddr. If the first member is a union of sockaddr_in and sockaddr_in6, then I think it will work. You can certainly cast a pointer to a struct to a pointer to the first member. And, you can certainly cast a pointer to a union to a pointer to any member. No idea if you can do both in one operation.

      Either way the fact that this is not obvious does indeed illustrate the utility of an undefined behaviour sanitizer. I for one welcome it.

      --
      SJW n. One who posts facts.
    13. Re:A big improvement indeed by Anonymous Coward · · Score: 1

      It already was undefined behaviour since the standard introduced the strict aliasing rule. It's just that compilers didn't take advantage of it. Anyway, I doubt that gcc removed the flag -fno-strict-aliasing. So if you need to write such code, just add that flag. It's not that hard, is it?

    14. Re:A big improvement indeed by aaaaaaargh! · · Score: 2

      Where do such negative comments come from? Have programers generally left /.? :-/

      I for one welcome gcc 4.9, as it allows me to use the full Ada 2012 language. Good job!

    15. Re:A big improvement indeed by cheesybagel · · Score: 1

      IMO the problem is the lack of a JIT compiler. Java is too slow without it.

    16. Re:A big improvement indeed by ConceptJunkie · · Score: 1

      Agreed. It's not the 1970s any more. We can adopt a design that reflects this fact.

      --
      You are in a maze of twisty little passages, all alike.
    17. Re:A big improvement indeed by blueg3 · · Score: 2

      If you don't care about safety and error checking, multithreading, Atom SoCs, or C++11... what sort of new features are you really expecting in a compiler. That touches pretty much all the major functionality of a compiler.

    18. Re:A big improvement indeed by alex67500 · · Score: 2

      No it's a relief. Hopefully Sun will follow suit soon...

    19. Re:A big improvement indeed by Anonymous Coward · · Score: 3, Interesting

      Frankly I neither know nor care if your perception is that you have spent a lot of time cleaning up after security bugs, but the fact that you don't understood what my attitude is makes it fairly implausible.

      For one thing, a lot of shops do not permit a drop into naked API calls, and areas of concern are often abstracted out. And even if they a developer and tests should be checking the documentation for that API. But that's all irrelevant. My point was that this is mainly useful on programs that already have flaws that should not be waiting either for Your Highness or gcc 4.9 to percolate into all of the used OSs.

      If a bleeding edge compiler release is relevant to your security NOW you have problems.

    20. Re:A big improvement indeed by Anonymous Coward · · Score: 1

      No, it is not. But GCJ Java-to-native compiling didn't result in particularly fast Java code. That's one of the major reasons developers and enterprises ignored GCJ in the first place.

      That's interesting. I've always wondered how much of the speed difference between Java and C++ is due to using a JVM instead of a binary, and how much is due to the differences between the languages. Was there not enough work on making gcj produce fast code, or does this show that it's the language rather than the execution environment that's responsible for most of the speed difference?

    21. Re:A big improvement indeed by Anonymous Coward · · Score: 2, Funny

      > Maybe you guys should form a club, so the rest of us can identify the special beings walking among us.

      http://www.openbsd.org

      there you go.

    22. Re:A big improvement indeed by lgw · · Score: 1

      C++11 added threading constructs to the standard library, and I believe C++14 has some minor changes there as well. Standard cross-platform multi-threading is a big deal, though it's had to find documentation on the details.

      I just discovered that thread-local storage is now a standard library thing - which is awesome. TLS is quite useful for logging and other infrastructure stuff, and making it standard is quite welcome.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    23. Re:A big improvement indeed by Darinbob · · Score: 1

      I don't know, some looks interesting. I'd like to get the sanitizers for extra code checking during compile instead of waiting for an external lengthy static analysis tool.

    24. Re:A big improvement indeed by Darinbob · · Score: 3, Interesting

      No one programs anymore. All we do is link together pre-built libraries and frameworks and wrap it all in XML. Not sure who actually codes those libraries or where they come from, but the prevailing theory is that once a year the senior developers hike to the top of Mount Olympus and wrestle them away from the gods.

    25. Re:A big improvement indeed by lgw · · Score: 1

      What, really? I had no idea gcc did Ada - that's actually pretty cool.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    26. Re:A big improvement indeed by lgw · · Score: 1

      On Windows, you use critical sections, not mutexes, for most things. Perhaps the biggest design mistake in all of win32 was that need to initialize them (and setting the memory to all 0, which at least in C++ you can count on in many cases, isn't right). It's a huge "what where they thinking?".

      How is anything "initialized" at compile time in C? Or do you mean that clearing the memory to 0 is correct for initializing a POSIX mutex?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    27. Re:A big improvement indeed by HiThere · · Score: 1

      You don't need to wait for gcc to include the latest version of gnat. It's available for download from AdaCore http://libre.adacore.com/ in either GPL or commercially supported forms. (Commercial support is intended for companies, though, not for developers. It's a slightly different version, but pretty much the same. And it comes with official support. But it's just a mite expensive. )

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    28. Re:A big improvement indeed by david_thornley · · Score: 1

      You are entirely correct: this is only applicable to code with bugs (sometimes obscure ones). Therefore, as you point out, it is mostly useless, since it is only of use to people who write buggy software and/or haven't memorized every source of undefined behavior in the appropriate Standard. The vast majority of programmers who have memorized the Standards and never write bugs have no need for it.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    29. Re:A big improvement indeed by Jorl17 · · Score: 1

      A POSIX mutex can be initialized via a call to a library function or, alternatively, it can be "statically initialized" with the constant value of PTHREAD_MUTEX_INITIALIZER, which initializes it and sets default attributes. It's not exactly "clearing the memory to 0", but it's along the lines of that train of thought

      --
      Have you heard about SoylentNews?
    30. Re:A big improvement indeed by charles2678 · · Score: 1

      My point was that this is mainly useful on programs that already have flaws

      How many programs don't?

      I strongly recommend reading (or at least doing a quick pass over) http://pdos.csail.mit.edu/papers/ub:apsys12.pdf to get an idea of the scope of the problem.

    31. Re:A big improvement indeed by aaaaaaargh! · · Score: 1

      The AdaCore libre version doesn't allow you to distribute your executables under non-GPL license. You'd have to buy the super-expensive pro version instead. The FSF version of Gnat, on the other hand, does allow you to distribute your executables under any license you like because it comes under the Gnat Modified GPL (GMGPL).

      That's why I wait. :-)

    32. Re:A big improvement indeed by lgw · · Score: 1

      Ah, got it - that works for C, but isn't as good for C++.

      I say this having personally fought a bug in production C++ code where control entered a critical section during static initialization, before the compiler's arbitrary initialization order initialized the critical section, leaving the object in a busted state for runtime and causing the most bizarre and cryptic deadlocks. But C++ wipes everything static to 0 before it plays any games, and all my personal code is designed where that is proper initialization (wherever practical).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    33. Re:A big improvement indeed by charles2678 · · Score: 1

      It's irrelevant to those components that do not use naked C API calls

      Utterly untrue. This is about language ambiguity, not standard library ambiguity, so the C language API is moot.

  3. ADA? by Black+Parrot · · Score: 4, Informative

    "Ada" is the name of a person, and the language.

    "ADA" is the Americans with Disabilities Act, or the American Dental Association.

    --
    Sheesh, evil *and* a jerk. -- Jade
    1. Re:ADA? by Bozzio · · Score: 1

      "ADA" is the Americans with Disabilities Act, or the American Dental Association.

      ... and quite a few other things, if you care to look outside of the US: http://en.wikipedia.org/wiki/ADA

      --
      I just pooped your party.
    2. Re:ADA? by HiThere · · Score: 1

      And within the US it's at least the American Dental Association. Probably also several others. TLAs are highly overloaded.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    3. Re:ADA? by antdude · · Score: 1

      I hope it is "Americans with Disabilities Act" since I am disabled. ;)

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
  4. Can we please stop mass-linking Phoronix? by Anonymous Coward · · Score: 5, Insightful

    For God's sake, that's *THIRTEEN* (13) links to Phoronix!
    Pointing to a couple of ML threads or to the 4.9 changelog would've been more than enough. http://gcc.gnu.org/gcc-4.9/changes.html

    1. Re:Can we please stop mass-linking Phoronix? by Anonymous Coward · · Score: 2, Informative

      Self-linking is the modus operandi of Phoronix. It is a link farm, after all.

      All you will get is a mass of links, whether you click through to TFA or not. At least this way there's no utility in clicking through.

    2. Re:Can we please stop mass-linking Phoronix? by Ant+P. · · Score: 1

      I understand the frustration, but that site *wants* to be populated entirely by the kind of morons that fall for blatant SEO spam. Smart people wouldn't make them money via pay-per-impression ad sandbagging, after all.

  5. Coming in 1024 sometime? by John.Banister · · Score: 1, Troll

    This is like Amazon book ads, only more pointless. Why not either make a submission "The GCC team needs your donation," or wait to advertise it until people can respond to the ad and download it? If it had only one new feature (and it wasn't "now secretly adds more sophisticated backdoors") people with any sort of interest in using GCC will probably get the new version when it's available.

    1. Re:Coming in 1024 sometime? by Greyfox · · Score: 3, Informative

      2014 is just a month and a half away, and you can compile 4.9 now from the dev branch of their subversion tree.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:Coming in 1024 sometime? by John.Banister · · Score: 1

      "Coming January 1st 2014, and here's a link where you can compile it now" would make the above announcement come across as more relevant to the present.

  6. Looks like they are porting Clang features... by gnasher719 · · Score: 3, Insightful

    The whole article really reads quite fanboyish / alternatively GCC has hired a marketing department. But it looks really lame when you talk about exiting new features, and you just copied what Clang had before.

    1. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 5, Insightful

      Superior backend, coming up to par with Clang on the frontend, what's not to love?

      Frankly, the BSD licenses appear to be a failure psychologically. The proponents of BSD-licensed software go apeshit when GPL-licensed software reuses their code, but are ok if the stuff disappears in proprietary forks.

      You can see this, for example, with LibreOffice/OpenOffice: every LibreOffice release announcement draws ire from the OpenOffice crowd (well, particularly one OpenOffice developer) because the latter feels their code has been ripped off.

      There has been a lot of that going on with OpenBSD and FreeBSD as well, but it's grown a bit more quiet in recent years.

      Now we have the same with Clang/GCC.

      If you don't want to have your code relicensed under different licenses, use a Copyleft license. If you want to have your code relicensed under different licenses, stop complaining when somebody actually does exactly that.

    2. Re:Looks like they are porting Clang features... by mvdwege · · Score: 4, Insightful

      Wait, what, Clang now supports other languages than C-derivatives, like Ada and Fortran?

      --
      "I know I will be modded down for this": where's the option '-1, Asking for it'?
    3. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      But it looks really lame when you talk about exiting new features, and you just copied what Clang had before.

      Might be true. But also shows that competition is healthy. If clang wasn't there to implement these features first, GCC wouldn't have done it as well, maybe. So I think: everyone wins.

    4. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 3, Interesting

      Yep. They're also stealing OMP4.0 from Clang (which got OMP3.1 just a month or so ago, while GCC had it since 4.7) and Cilk (which is not in Clang at all, though people are working on 3rd party extension)

      The whole post really reads quite trollish / alternatively Clang has hired black PR department.

    5. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      > Frankly, the BSD licenses appear to be a failure psychologically. The proponents of BSD-licensed software go apeshit when GPL-licensed software reuses their code, but are ok if the stuff disappears in proprietary forks.

      It's mostly Theo de Raadt, not the "OpenBSD community" Theo likes to take credit for a lot of work that, frankly, he and the OpenBSD community did not do but which has slipped under the OpenBSD umbrella. Take a look at the original SSH code and how it gor reliensed by OpenBSD. It's frankly the only useful tool coming from that community, and they *STILL* keep the user and host private keys in unencrypted plain text, with no passphrase, by default and no expiration date, and no usable chroot cage. (The SFTP chroot cage setup is a joke, and a sad one.)

    6. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 2

      The problem with code re-usage to GPL projects is that it is so much more complicated to copy features back.
      If a proprietary project with closed source uses the BSD licensed project but add nifty functions it is just a matter of writing similar functions of your own.
      When a GNU licensed project grabs some BSD code and improves upon you can't just write code that does the same, because if you do then it is very likely that your code will end up looking very much like the GNU licensed implementation and people will find it less plausible that you didn't look at the other source.

      Also, it is pretty clear that the intention of BSD licensed code is to have an open source project that is free to use. While grabbing it and releasing it under a less free open source license is completely legal it is clearly a dickish move. Anyone who isn't a zealot would just add their changes under the original license to honor the intentions of the original author.

    7. Re:Looks like they are porting Clang features... by Bengie · · Score: 1

      You can see this, for example, with LibreOffice/OpenOffice: every LibreOffice release announcement draws ire from the OpenOffice crowd (well, particularly one OpenOffice developer) because the latter feels their code has been ripped off.

      What? These are both GPL. I've never seen BSD people care at all about who uses their code, only GPL people freaking out. How did this hogwash get voted up?

    8. Re:Looks like they are porting Clang features... by DuckDodgers · · Score: 3, Insightful

      You are re-stating the original argument about free software that has been done to death on the internet.

      To the BSD folks, they want to write software that is free as in free beer. You can take it, and do whatever you want with it. Drink it, dump it in the trash, give it to your friends, sell it. Free as in Freedom of the user

      To the GPL or Free Software Foundation folks, they want to write software that is free as in free speech. You can copy it, and distribute it, but you can't restrict other people's rights to copy it and distribute it. Just like I can't hand out a copy of the US Constitution or a speech by Abraham Lincoln and forbid other people from sharing it or publishing a copy. Free as in Freedom of the software

      You may prefer the BSD way, and that's fine, but "who isn't a zealot" is out of line. Having a different set of priorities does not make one a dick. Blatantly copying code under one license to the other is a dickish move, but re-engineering from one to the other is perfectly legitimate. And yes, I'm in the FSF camp.

    9. Re:Looks like they are porting Clang features... by peppepz · · Score: 1
      The difference between the BSD license and the GPL is that it allows you to copy the code and use it under more restrictive terms. You're saying that however, if you do, then you're a zealot. So what's the advantage of the BSD license, if the GPL only harms zealots?

      If a proprietary project with closed source uses the BSD licensed project but add nifty functions it is just a matter of writing similar functions of your own. When a GNU licensed project grabs some BSD code and improves upon you can't just write code that does the same, because if you do then it is very likely that your code will end up looking very much like the GNU licensed implementation and people will find it less plausible that you didn't look at the other source.

      What's the difference? If you didn't look at the original code, then the chances that your own code will look very much like the invisible implementation are the same, whether that invisible implementation is GNU or proprietary. If you did look at the original code, then you're deriving from it, and you should respect its license.

    10. Re: Looks like they are porting Clang features... by turgid · · Score: 1

      Not in this case. my hardcore development has all moved to clang. we dumped GCC like the gpl-infested crap hole that it is.

      Was that so that you could add your own proprietary language front-end and charge developers money for it? Or perhaps you had some secret-sauce extras to add to C or C++ to "add value" to monetize your exiting developer base? Please patent your extensions before one of those stinking, long-haired hippy types tried to implement a Free version for gcc.

      Oh, you were trolling. Right-oh.

    11. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 2, Insightful

      To the GPL or Free Software Foundation folks, they want to write software that is free as in free speech. You can copy it, and distribute it, but you can't restrict other people's rights to copy it and distribute it.

      Uhm, the entire point of GPL is that you can restrict others right to copy it and distribute it.

    12. Re:Looks like they are porting Clang features... by ljw1004 · · Score: 1

      the BSD licenses appear to be a failure psychologically. The proponents of BSD-licensed software go apeshit when GPL-licensed software reuses their code, but are ok if the stuff disappears in proprietary forks.

      You can see this, for example, with LibreOffice/OpenOffice: every LibreOffice release announcement draws ire from the OpenOffice crowd (well, particularly one OpenOffice developer) because the latter feels their code has been ripped off.

      That's okay. I'm a huge proponent of BSD and I'm delighted wherever it goes. I'm not sure which proponents you're referring to, but they might be figments of your own prejudices, and I don't believe that any individual examples of your phenomenon would be representative.

    13. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 2, Interesting

      The 2-clause BSD license (which is the one used nowadays) is 7 lines of natural English (excluding the disclaimer) and people still can't understand it...

      You can't take BSD code and change it's license.

      Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

      IIRC a Linux dev though it was possible and did so with an OpenBSD piece of code. Some OpenBSD devs complained and the license was reverted to the original one. End of the "shitstorm."

    14. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      Having being open with your changes to something you got the recipe for, for free, imposed on you isn't much of a "restriction". Unless you are an unmitigated, premeditated scumbag, that is.

    15. Re:Looks like they are porting Clang features... by gnasher719 · · Score: 3, Insightful

      To the GPL or Free Software Foundation folks, they want to write software that is free as in free speech. You can copy it, and distribute it, but you can't restrict other people's rights to copy it and distribute it. Just like I can't hand out a copy of the US Constitution or a speech by Abraham Lincoln and forbid other people from sharing it or publishing a copy. Free as in Freedom of the software

      Yes, there is always the "free as in free speech" high horse, but the fact is that (a) you can't legally use GPL licensed code in a BSD project, and (b) when licensed code is moved to a BSD project and modified, you can't legally move the changes back to the BSD project.

      So these people's view of "free" is something that I can only call perverted.

    16. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      Uhm, the entire point of GPL is that you can restrict others right to copy it and distribute it.

      Put it in this way: the entire point of GPL is that the code will not stop being copied and distributed

    17. Re:Looks like they are porting Clang features... by serviscope_minor · · Score: 1

      To the BSD folks, they want to write software that is free as in free beer. You can take it, and do whatever you want with it. Drink it, dump it in the trash, give it to your friends, sell it. Free as in Freedom of the user.

      You can do all of those with the GPL, too. The GPL is very hot on Free as in Freedom of the User. As a user you will always have those freedoms and no one can take them away from you.

      What the GPL does is restrict the freedom of the distributor slightly.

      </license pedantry>

      --
      SJW n. One who posts facts.
    18. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      Re-licensing code without the consent of the author violates against both licenses. Retain the original license, ask permission of the author, rewrite or get out. At least one of the parents above don't appreciate this.

    19. Re: Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      Can't speak for the OP but we added an optimization plugin and some error checking plugins to clang. These are internal and not distributed so we the GPL wasn't a direct factor. It was an indirect factor in that GCC's code is intentionally bad to prevent people from trying to bypass the GPL. We could have added our changes to GCC but it would have been a lot more work and would then become a maintainance issue for GCC updates.

    20. Re: Looks like they are porting Clang features... by turgid · · Score: 1

      It was an indirect factor in that GCC's code is intentionally bad to prevent people from trying to bypass the GPL. We could have added our changes to GCC but it would have been a lot more work and would then become a maintainance issue for GCC updates.

      Can you explain? Can you tell us what code in particular is bad and can you show us your patch? I've never looked at GCC internals, but I'd like to know.

    21. Re:Looks like they are porting Clang features... by cheesybagel · · Score: 1

      Actually you can switch licenses if the new license does not conflict with the old license. Since BSD allows basically everything to be done with it you can restrict it any way you wish. Including putting it in proprietary source code.

    22. Re:Looks like they are porting Clang features... by cheesybagel · · Score: 1

      You mean Clang has the Apple PR department.

    23. Re:Looks like they are porting Clang features... by Gavagai80 · · Score: 1

      Being open with your changes is all the LGPL requires, but the GPL requires being open about all the unrelated stuff you've done when you integrate a GPL component.

      --
      This space intentionally left blank
    24. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 2, Informative

      The following quote is the complete text of the 2-clause BSD license (sans the disclaimer, which doesn't add anything relevant to this discussion). Note that it is this text which determines what is and isn't allowed to do with code using that license. I put the parts relevant for this discussion in bold.

      Copyright (c) YEAR, OWNER
      All rights reserved.

      Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

      1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

      2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

    25. Re:Looks like they are porting Clang features... by Wootery · · Score: 5, Insightful

      The 2-clause BSD license (which is the one used nowadays) is 7 lines of natural English (excluding the disclaimer) and people still can't understand it...

      You can't take BSD code and change it's license.

      It's ironic that you're laughing at those who misunderstand the licence, given that you've fundamentally midunderstood the licence.

      If your interpretation were correct, it would be functionally comparable to the GPL, and we wouldn't have all those flame-wars.

      It's a 'copycenter' licence, not a copyleft licence. You're allowed to release your fork under your choice of licence, whether proprietary, Free/Open Source, or anywhere in between, provided you don't hide the fact that your software is based upon that original BSD 2-clause licensed software.

      It's a little confusing, as "must retain the above copyright notice" can easily be misinterpreted the way you did, to mean "you must release your fork under the BSD 2-clause licence".

      Relevant Wikipedia content.

    26. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      Uhm, the entire point of GPL is that you can restrict others right to copy it and distribute it.

      Technically true, but the only restriction is that those others cannot in turn add further restrictions.

    27. Re:Looks like they are porting Clang features... by Anonymous Coward · · Score: 1

      You are re-stating the original argument about free software that has been done to death on the internet.

      To the BSD folks, they want to write software that is free as in free beer. You can take it, and do whatever you want with it. Drink it, dump it in the trash, give it to your friends, sell it. Free as in Freedom of the user

      Your first sentance does not correlate with the second or third sentence. The term "Free Beer" means 0 cost. 0 cost, is not necessarily what either BSD or GPL is about at all. The term you are looking for is "Free Libre" as in freedom to 'do whatever you want with it.'

      Even though your terms are mixed, we still all got the idea... just thought I'd inform you to save you from future embarasment.

      In terms of BSD vs GPL, you can think of GPL as "Mostly free, you're free to do what you want so long as you do not restrict the freedom of others and you do not plagerise." BSD you can think of this way "Almost totally free, you are free do to what you want, including the freedom to restrict the freedom of others, but you cannot plagerise."

    28. Re:Looks like they are porting Clang features... by BitterOak · · Score: 1

      To the GPL or Free Software Foundation folks, they want to write software that is free as in free speech. You can copy it, and distribute it, but you can't restrict other people's rights to copy it and distribute it. Just like I can't hand out a copy of the US Constitution or a speech by Abraham Lincoln and forbid other people from sharing it or publishing a copy. Free as in Freedom of the software

      Actually, since both the US Constitution Lincoln's speeches are now out of copyright, you can use them verbatim in a larger work, such as a novel, and restrict further copying/distribution of that novel. That's exactly how BSD licensed software works, but not GPL. If the Constitution were licensed like the GPL, and I quoted it in a novel (assuming the quote were long enough to not be covered by the fair use exemption) then I would have to release my entire novel under the GPL as well. So your example really doesn't support your argument, but rather the opposite.

      --
      If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
    29. Re:Looks like they are porting Clang features... by david_thornley · · Score: 1

      You can't change the license.

      What you can do is release what you're working on under another license in addition to BSD. If you've used GPLed code, say, the total has to be GPLed. Parts of it now are under both licenses, and (if I can pick them out) I can use the BSD code under the BSD.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    30. Re:Looks like they are porting Clang features... by olau · · Score: 1

      (a) you can't legally use GPL licensed code in a BSD project

      Yes, you can. You just can't keep licensing the result as BSD, because that would circumvent the GPL license - someone could take the BSD-licensed result and put it into a proprietary code base, something that people licensing their works under the GPL are not okay with.

      But I'll grant that you that these days, it would perhaps be a good idea if you could keep the result licensed under two licenses, so the GPL-part under GPL and the rest under BSD. As long as the rest of the project is under a GPL-compatible free license, I don't really see the problem.

      Of course, that could quickly turn into a mess. May not be workable in practice.

    31. Re:Looks like they are porting Clang features... by Bengie · · Score: 1

      OpenOffice != Apache OpenOffice

    32. Re:Looks like they are porting Clang features... by dkf · · Score: 1

      Uhm, the entire point of GPL is that you can restrict others right to copy it and distribute it.

      Technically true, but the only restriction is that those others cannot in turn add further restrictions.

      Practically, the way people actually tend to view GPL is as "you can't build your own custom commercial software on top of it". Whether this is true in fact doesn't matter; it's what they think. The BSD license really just says that you can't claim you wrote what you didn't, and you can't change the license; it definitely permits building proprietary things on top. (You could just take the software itself and sell it, but since others could provide the same thing for nothing, there'd be no value-add in doing so; successful products need a USP.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    33. Re:Looks like they are porting Clang features... by Wootery · · Score: 2

      You can't change the license.

      What you can do is release what you're working on under another license in addition to BSD.

      No. This is totally false.

      Copycenter licences are not viral, that's the whole point. It's almost the same as (but not quite the same as) releasing into the public domain.

      I urge you to read up on copycenter licences, and stop spreading falsities. The introductory segment of the Wikipedia article covers this stuff.

      (I thought you were going to say "You can't change the license of the original software, but you can use any licence you wish for your fork", which would have been technically correct. I could take FreeBSD, make some tiny changes (or perhaps none at all, I'm not certain on that) and release it as a proprietary OS called WooteryBSD. This doesn't mean I have the power to change the licence of FreeBSD itself, of course.)

    34. Re:Looks like they are porting Clang features... by DuckDodgers · · Score: 1

      You can't use BSD license code in a GPL project, either, so I don't see how that makes BSD any better.

    35. Re:Looks like they are porting Clang features... by DuckDodgers · · Score: 1

      Thanks for pointing out the flaws in my analogy. (To be clear, that was not sarcasm.)

    36. Re:Looks like they are porting Clang features... by DuckDodgers · · Score: 1

      I don't think you can use GPL code in a BSD project. The BSD license states that redistribution of the software in source or binary form must include the BSD license. The BSD license includes a clause allowing redistribution of the software in binary form without guaranteed access to source code. So if you put GPL code into your BSD project, the resulting project is GPL software that can be distributed in binary form without guaranteed access to the source code, which violates the GPL.

      So you can neither go GPL to BSD nor BSD to GPL, not directly. You have to reverse engineer the software you want to use and re-implement it.

    37. Re:Looks like they are porting Clang features... by david_thornley · · Score: 1

      I read the article, and it didn't seem to me to contradict anything I said.

      As far as I know, you can't change the license. You can add other licenses on top, if they're compatible (and darn little is incompatible with BSD), but the BSD license still applies to the BSD-licensed code, and you cannot remove the attribution or license.

      If you fork, you can add pretty much any other license to what you release, and what you release will be under that license. The fact that some of the code is still BSD-licensed doesn't mean anything else is, and so it's easy to take BSD code and incorporate it into proprietary software, with pretty well whatever additional license you want. The stuff that was BSD is still BSD, but you don't have to make it possible to take it out of your product. The fact that it's not viral like the GPL means you can slap additional limitations onto your product, since you have the copyright on the derived work, just as somebody else has copyright on the BSD stuff.

      Therefore, yes, you can take FreeBSD and make a proprietary WooteryBSD under any license you want (as long as it's compatible with BSD). You cannot legally remove the BSD notices, since you need to use FreeBSD under its license terms and those require the notices.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    38. Re:Looks like they are porting Clang features... by Wootery · · Score: 1

      I think maybe you do understand the BSD licence. When you put What you can do is release what you're working on under another license in addition to BSD you gave me the impression that you thought that if I fork a BSD project, my work must be released under BSD, perhaps bi-licensed with something else. I think you meant What you can do is release what you're working on under another license, but you still have to bundle the BSD licence text to fulfill the BSD licence still applying to the original BSD-licensed portion, which seems about right, but practically speaking counts for very little (as you say, it doesn't require that the BSD components be retrievable).

      It's this requirement which makes it different from WTFPL/Unlicence/public domain.

      darn little is incompatible with BSD

      Indeed, assuming it's not the very old BSD licence. If it's the old BSD licence with the 'obnoxious advertising clause' in it, then it's not GPL compatible.

      Gets me thinking.... they say recent versions of the BSD licence are GPL compatible. I wonder how. GPL allows one to make no mention of the BSD licence...

  7. But but Google? by iYk6 · · Score: 4, Insightful

    But then how would Googlebot know that Phoronix is really great and popular and they should rank it higher in searches?

  8. Finish C++11 support first? by joncombe · · Score: 5, Interesting

    I see from the status page the Regex support is still not complete, part of the C++11 standard. It would be nice if support for this standard could be completed before starting on C++14.

    1. Re:Finish C++11 support first? by dremon · · Score: 2

      Their status html docs aren't updated yet to reflect the actual status. Look at the gcc/libstdc++-v3/doc/xml/manual/status_cxx2011.xml file for the up to date information (or the gcc/libstdc++-v3/ChangeLog for technical revision history).

    2. Re:Finish C++11 support first? by Rockoon · · Score: 1

      Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. - Jamie Zawinski, 1997

      --
      "His name was James Damore."
    3. Re:Finish C++11 support first? by DuckDodgers · · Score: 2

      In open source software as in proprietary, often the out-of-date component of the project is the documentation.

    4. Re:Finish C++11 support first? by game+kid · · Score: 2

      Supported or not, <regex> may yield surprising results when used with UTF-8 or other Unicode text, so those may require a non-<regex> library or the proposed <unicode> header for C++14 anyway.

      --
      You can hold down the "B" button for continuous firing.
    5. Re:Finish C++11 support first? by spitzak · · Score: 1

      Actually the behavior of regex on UTF-8 is probably desirable.

      Suggestions that "*" mean any number of repeats of make as much sense as suggesting that "the*" means the user wants any number of repeats of "the" (rather than the 'e') because "the" is an English word. It adds hugely to complexity of regexp for no actual gain except for idiots who think the codeunits are actually an item you want to manipulate because you are totally unaware of non-European languages. You should be manipulating words of variable length.

      Personally I am glad that C++11 regexp works this way because it will stop the idiots who are trying to match "code units" and think changing capitalization can be done in-place and other 1960's concepts, and it might, just maybe, start to fix I18N.

      (It may be useful to have ranges aware of UTF-8, but at a very very low level. A syntax for ranges of substrings may be useful, ie something like [{abc}-{abf}] matches abc, abd, abe, abf, and valid UTF-8 sequences cause this automatically. The reason is that I think it will get the most useful effect of "understanding UTF-8", and that any range that accidentally contains valid UTF-8 could be rearranged into one that does not. This will still require a rule for what is "valid UTF-8" to be defined and never ever changed even if the Unicode definition changes.

    6. Re:Finish C++11 support first? by spitzak · · Score: 1

      Damn slashdot ate my angle brackets:

      Suggestions that "<codeunit>*" mean any number of repeats of make as much sense as suggesting that "the*" means the user wants any number of repeats of "the" (rather than the 'e') because "the" is an English word.

    7. Re:Finish C++11 support first? by GiganticLyingMouth · · Score: 1

      It would be nice to have regex support, but I wouldn't want them to halt their entire development pipeline to implement it. If they had to finish implementing the previous standard before starting on the next one, we would still be on C++03 on account of exported templates.

    8. Re:Finish C++11 support first? by spitzak · · Score: 2

      That "proposed standard" is very very bad. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3572.html

      It does not support decoding UTF-8 in an error-preserving way, and appears to also remove the ability to default character strings to UTF-8.

      These are complete job-stopping bugs. Though if the intention was to try to save all the misguided investment in "wide characters" by making it as hard as possible to use UTF-8, it is a good attempt, and I suspect that is the underlying reason for this.

    9. Re:Finish C++11 support first? by dkf · · Score: 1

      Suggestions that "<codeunit>*" mean any number of repeats of make as much sense as suggesting that "the*" means the user wants any number of repeats of "the" (rather than the 'e') because "the" is an English word.

      Do you mean bytes or characters? While you think these are the same thing, you'll continue to be very confused.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    10. Re:Finish C++11 support first? by spitzak · · Score: 2

      I meant code point, not code unit. Ie what you are calling a "character". I typed the wrong thing there which does not help. You are correct that people thinking they can work in code points rather than bytes (or words for UTF-16) are a huge problem and why Unicode is not working yet. I consider anybody who thinks Unicode requires more than 8-bit code units to be in this category. A further problem is that a lot of people think the code points are "characters", which is actually an undefined entity in Unicode.

      More carefully, and putting the full incorrect assumptions in, there are people who think that a regex of "<character>*" means that the character should be repeated 0 or more times, when in fact it should mean that the last code unit of the character should be repeated 0 or more times. This may seem obviously wrong in UTF-8, but it is equally wrong even in UTF-32 (because of combining characters). Actually fixing this would require regex to understand the entire Unicode definition, which is hugely complex, changing over time, and this has the perverse effect that you can no longer use regex to accurately manage Unicode encodings since you can no longer deal with the code units.

      The regex "(<character>)*" does what is wanted for all representations and allows the user to decide exactly what is a "character". I don't think the burden of putting two parenthesis in there is that bad, really.

      Therefore the C++11 regex is doing the correct thing by being the simplest possible that does valid operations.

      (I think it *may* be useful to have the regex ranges understand UTF-8, provided it is always possible to rearrange your ranges to not trigger the UTF-8 matching and thus do ranges of code units. This has to be VERY carefully decided on, and the rules for how it matches UTF-8 have to be very well defined and are not allowed to ever change even if Unicode changes the UTF-8 rules).

  9. Re:Improved diagnostics output by Anonymous Coward · · Score: 1

    Pretty colors are for the clang kids who only know how to code with crayons and finger paints.

    I was writing a kernel once, but then I ran out of blue crayon and had to drop it. :-(

    Blue finger paint just isn't good enough!

  10. Re:And then there's this: by Anonymous Coward · · Score: 1

    Just let us know where 4.9 is in those 'repositories', please.

    Without the arrogant stupidity.

  11. Regular expressions (Atwood) by dwheeler · · Score: 2

    It's funny, but out of context. See: Jeff Atwood, “Regular Expressions: Now You Have Two Problems” June 27, 2008, http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
    1. Re:Regular expressions (Atwood) by ttucker · · Score: 1

      It's funny, but out of context. See: Jeff Atwood, “Regular Expressions: Now You Have Two Problems” June 27, 2008, http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html

      Some people like to guide their coding decisions using sound bytes, don't ruin that for them with your pesky rational arguments and facts!

  12. Re:Improved diagnostics output by binarylarry · · Score: 1

    Blue finger paints is crap.

    - Linus

    --
    Mod me down, my New Earth Global Warmingist friends!
  13. no news for gccgo by FithisUX · · Score: 1

    and no gdc integration. These are the items I am most interested about.

  14. Re:nds32 by Narishma · · Score: 1

    No, it has nothing to do with ARM. It's a different architecture: http://www.emdebian.org/~zumbi/mx53/u-boot-imx/doc/README.NDS32

    --
    Mada mada dane.
  15. Half-baked by golodh · · Score: 1
    @ serviscope_minor

    You might have heard about the difference between software that's "done" and software that's "work-in-progress" (or "half-baked" to use a less charitable term).

    As a compiler *user* (as opposed to a compiler hobbyist) I'm not in the least interested in any work-in-progress in-the-repository stuff because I don't want to waste my time stumbling into all the bugs. So until and unless the GCC is officially released as 4.9, it doesn't exist for me.

    I'm perfectly aware that GCC isn't a commercial product, which is all the more reason to stay away from "cutting edge" stuff. I'm happy to let 'em work on that and I'll take a look at it after it's done (and others have verified that this particular cutting edge stuff actually cuts the mustard, so to speak).

    Good of you to note that GCC doesn't do press-releases. Only the kind of article that Phoronix published looks for all the world like a press-release to me. Phoronix however is Phoronix ... geek territory with people avidly lapping up the latest new year's resolutions on part of tool makers. It's a specialist audience.

    Only ... echoing such articles on Slashdot suggests that it has some news value to a more general audience. Unfortunately that's not the case with half-baked stuff like this it's-in-the-repositories code. If it were done, it wouldn't be "in-the-repository", ok? It would have been *released*.

    1. Re:Half-baked by lgw · · Score: 1

      So what you're saying is, this /. article is for people geekier than you? That's a good thing then, we need more intense geekiness and less US politics.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:Half-baked by Darinbob · · Score: 1

      On the other hand, when Clang lists plans one what they're adding in the next version suddenly lots of fans are hopping up and down with joy (and yes they have preliminary release notes for 3.4).

      The rule of thumb basically is that product-you-don't-care-about needs to shut up and product-you-admire needs to keep raining down news on the believers.

  16. GCJ vs. JIT by codealot · · Score: 1

    A good JIT actually performs very well compared to ahead of time compiling, and can take advantage of execution profiling (for things like branch prediction) by deferring compilation until the bytecode runs a few times.

    The main advantages of gcj are improved startup times, porting to unusual architectures, and maybe for memory constrained targets.

    When comparing C++ performance to Java, there are many things to keep in mind aside from the JIT compiler:

    - Java also has GC overhead. You get a fairer comparison by adding garbage collection to your C++ app. The performance effects of garbage collection are complicated, but one of the difficult problems is that it tends to fill the processor data cache with useless entries.
    - Java adds overhead required by the JLS such as array bounds checking or class initialization tests.
    - Exception handling can also impact code generation. Java requires null pointer dereferencing (for example) to be trapped and handled, which adds abnormal edges to a CFG which places restrictions on e.g. instruction scheduling. Strict expression evaluation order, required by the JLS, has the same effect.
    - Java has a more limited type system. In particular objects other than primitive types cannot be passed by value, which tends to result in more frequent memory allocations, more garbage collection, and more pressure on the memory cache than languages that can make more efficient use of the stack.

    The biggest reason worked stopped on gcj was the release of OpenJDK, since one of the main reasons for gcj in the first place was to have a fast and free Java runtime. OpenJDK satisfies both.

    1. Re:GCJ vs. JIT by Anonymous Coward · · Score: 2, Interesting

      1) "A good JIT actually performs very well compared" in theory. FTFY. We're about XX years before JIT'd languages can _reliably_ be as performant as C code in general application.

      2) A full-blown JIT without garbage collection is actually pretty hard, so in practical sense you can't have JIT without a garbage collector. The JIT needs to understand the memory model and manipulate object lifetimes in a generic manner unrelated to the contextual semantics of the application, and the only practical way to do this is with a GC. So it's a little disingenuous to say that Java is slow because of GC. Without GC it wouldn't be JIT'd to begin with.

      3) Array bounds checking isn't that big of a deal, nor is NULL checking. All good C code does it just as much Java does it. And this is one area where in practice JIT'd applications are reliably good at optimizing where it matters.

      4) C applications don't usually copy by value, either, for compound objects. C++ used to do it a ton, but it was slow as heck, which is why recent changes regarding the move constructor were so important.

      Ultimately, Java is slower and more of a resource hog because of limitations in the state-of-the-art. Yes, a _ton_ of genius has been put into making Java (and JavaScript, for that matter) incredibly fast. But at the end of the day it's easy to write well written C code which will blow well written Java code out of the water.
      But it's all relative. Java is still within an order of magnitude of the performance of C, so it's all kind of pointless, anyhow. No need to be apologist about it. I use C principally, but also Lua and Perl. Lua uses a mark+sweep GC, and so just like Java there you have to be careful about stalling. Perl still uses reference counting, which is actually really helpful in many scenarios, although Perl itself is dog slow compared to Lua, let alone LuaJIT, Java, or C.

    2. Re:GCJ vs. JIT by Anonymous Coward · · Score: 1

      A good JIT actually performs very well compared to ahead of time compiling, and can take advantage of execution profiling

      Quite a bit of the overhead required by the JLS could be eliminated by an ahead of time compiler, a normal Java program however cannot be optimized ahead of time as compilation dependencies between class files are defined in a way that makes specialized code paths and inlining impossible, they are also unable to express most other optimisations. GCJ is afaik not limited by the class specification and could inline, stack-allocate, specialize and remove dead code to a great degree.

      You get a fairer comparison

      Considering adding a GC to c++ for a comparison to Java is not fair at all as c++ as a language was not designed to support a GC (c++11 merely allows a GC as an after thought) and any available c++ GC is a joke compared to extensively fine tuned Java GC.

      Java adds overhead required by the JLS such as array bounds checking

      Most of this gets optimized out when it can be guaranteed that index is less than array.length, which in a large amount of uses is the case. In many other cases it can be moved to a single check in front of the loop.

      class initialization tests.

      Classes are fun in c++ too, you get things like virtual calls in the constructor which requires the object to evolve with each finished base class Ctor - in java this simply results in the latest defined overwriting method and default values in the uninitialized fields. Or did you mean a check wether a class is initialized? It would be more or less irrelevant to performance overall as it is a one of cost and the remaining cost is apparently small enough that class initialisation is used as a replacement for double checked locking.

      Java has a more limited type system. In particular objects other than primitive types cannot be passed by value,

      I don't know if it has been since Java 5 or Java 6 but lots of work has been done to perform escape analysis and do stack allocation of objects when possible. It still wont give you a hyper fast ray tracer if you constantly create new Ray() however :(.

      The biggest reason worked stopped on gcj was the release of OpenJDK

      Before that it was only not quite dead.

      gcj in the first place was to have a fast and free Java runtime

      /abused enduser rant/ I thought the reason was to spread the "java is slow" myth and make sure there was at least one implementation of the spec that would break the write once run anywhere guarantee (incomplete impl. AND their own custom C API). Till today I cannot understand why anyone would make apt packages directly depend on gcj instead of the generic java package, running the pre packaged eclipse under Debian was insane (and it took me a week to find out why it was even slower than on windows). Even a fanatic should have noticed that gcj was not adequate for something requiring a high amount of interactivity - I had anti virus software on windows that left me more productive than that./end rant/

      GCJ lacked a lot of work, I find it sad that it never reached a quality that I could use without getting annoyed.

    3. Re:GCJ vs. JIT by codealot · · Score: 3, Interesting

      1) Sure. When I said "performs very well" I mean within an order of magnitude. I've heard claims that JIT technology will surpass ahead-of-time compilation. I don't quite believe that either, and at any rate it's clearly not there yet. I didn't claim the JIT was equally fast or faster, but it's close enough that there just wasn't a ton of people interested in using a compiler like gcj.

      2) I'm skeptical that JIT requires a GC (in the general case, though for Java it is clearly required by the JVM). Do you have a reference for this claim?

      3) Yes, and of course real Java code does bounds checking too. Back when I was using gcj extensively, I was finding examples of duplicate array bounds checks, one added by the developer and one inserted by the compiler. A good compiler should be able to eliminate the redundant check. At times this is hard, such as when the caller does the bounds checking, and does so in a different translation unit.

      4) Interesting. There are examples, such as the complex type, that would be far more efficient as a value object. But I agree with your point that passing objects that are too large as value objects is probably counter-productive.

      Mostly I agree with your points. Especially that Perl is dog slow.

    4. Re:GCJ vs. JIT by HiThere · · Score: 1

      Sorry, but work on gcj was slow for a long time before Java was partially GPL'd. My take is that the people who write compilers for native code aren't really interested in languages designed for an interpreter. (Yes, they call it a virtual machine, but to me that's one flavor of interpreter.)

      My (current) biggest complaint about Java is that it doesn't implement structs, i.e., non-object containers for non-object data. Perhaps I just don't know the language, but it appears to be that I need to copy data three times on the way to writing it to a fixed-block random access file. And another three times to read it back in.

      A secondary complaint is the way it handles unicode. I can see the reason and justification for either utf-8 or utf-32, but I can't see utf-16 (UCC2?) (N.B.: I'm not very happy with how C/C++ handles that either, but saying "use a library" is at least understandable. I much prefer Vala's approach...now if it would just get documented...)

      FWIW, I much prefer Python, Ruby, or D to any of the gcc languages. but if I had to choose one of them I'd choose Ada (which is also being upgraded). Ada's a bit overcontrolling, which makes handling character string of differing lengths a problem, but it avoids a lot of the problems inherent in the basic design of C that were inherited by C++. (Sanitizing undefined behavior helps a lot, but it's not sufficient. Some things, like pointer arithmetic, are well defined, but just dangerous. And stupid when there's any compiler optimization happening at all. [Yeah, it used to be a way to do variable length arrays. And that was a bad idea at the time. Allocate the largest array that you're going to allow, and only write what you need. You need to keep track of the size anyway.])

      P.S.: While I understand that much C/C++ syntax is driven by prior choices, much of this new syntax is UGLY. That's been a problem ever since templates started appearing, but it's gotten worse with every addition. At some point they need to do a de novo redefinition of syntax, and define an isomorphism between the two syntaxes. Then a compiler switch can alternate between syntaxes until the current version can be deprecated. I'm starting to think that APL had a better design than modern C++, and that was BAD. Now, in addition to << >> they've got [[ ]], and I guess next will be (( )) (unless that's already in use somewhere).

      P.P.S.: Please note that all of my favorite languages are like Java in that they have built-in garbage collectors. This implies some design choices for the language, especially that integers and pointers are NOT interconvertable. I know that there is (at least one) C garbage collector, but because of language design it needs to work rediculously hard. But garbage collectors make it easy to deal with strings of variable and unknown length. This is important. (Yes, there are ways to deal with them without a garbage collector, but they are clumsy and ad hoc.) Language design is strongly influenced by the presence or absence of a garbage collector. It's not, however, a requirement that the garbage collector always be active. And for most programs in well designed languages, having the garbage collector active does not slow things down markedly. (Naturally, real-time applications won't want to have an active garbage collector most of the time, but even many of them can benefit from a garbage collector that can be invoked at predefined times.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    5. Re:GCJ vs. JIT by leaen · · Score: 1

      P.S.: While I understand that much C/C++ syntax is driven by prior choices, much of this new syntax is UGLY. That's been a problem ever since templates started appearing, but it's gotten worse with every addition. At some point they need to do a de novo redefinition of syntax, and define an isomorphism between the two syntaxes. Then a compiler switch can alternate between syntaxes until the current version can be deprecated. I'm starting to think that APL had a better design than modern C++, and that was BAD. Now, in addition to > they've got [[ ]], and I guess next will be (( )) (unless that's already in use somewhere).

      Yes, (( )) is used in attributes. Also ({ }) is used to convert compound statement into expression. You are left with {{ and {( and when these will be taken we start to use {) (}.

    6. Re:GCJ vs. JIT by bored · · Score: 3, Interesting

      I'm skeptical that JIT requires a GC (in the general case, though for Java it is clearly required by the JVM). Do you have a reference for this claim?

      Well, to point to evidence otherwise, if by JIT your taking about dynamic translation/recompilation for optimization purposes then no. A number of machine emulators (CPU->CPU, see apple Rosetta) perform dynamic translation, and in a number of cases pretty advanced optimization. There have also been a number of native dynamic translators for a given machine architecture see (http://www.hpl.hp.com/techreports/1999/HPL-1999-78.html) for one example. There are also strange hybrids like the Intel Profile Guided Optimizations, where the feedback from a particular run is used to statically recompile the code. This effectively removes the profile/recompile overhead from an application at the expense of the fact that its now statically optimized for a particular kind of dataset.

      But, you ask why isn't a JIT part of most compiler packages if it gives you all these advantages. And the answer is three fold. First OOO CPU's kill the majority of the advantage that projects like dynamo found. Secondly, the overhead of the dynamic translation monitoring/recompile is often greater than the performance gain. And finally, the JIT advantages are often isolated to small hot pieces of code (compared with optimizing an application that is hundreds of MB of code). Applications with small performance critical functions are often hand optimized in C/C++ languages in ways that cannot be done by simple dynamic optimization and often yield functions that execute at the maximum a particular piece of hardware is capable of (say limited by memory bandwidth, functional unit throughput, etc).

    7. Re:GCJ vs. JIT by codealot · · Score: 1

      Thanks. When you say:

      Well, to point to evidence otherwise, if by JIT your taking about dynamic translation/recompilation for optimization purposes then no

      That is the definition of a JIT I have always used, thus my confusion. All of the reasons you state are performance arguments against JIT, but there are other reasons for JIT compilation, including architecture independence. But since all the world's an x86 these days, that feels less important now than it did 15+ years ago.

      Speaking of dynamic recompilation, back in 1998 or so I was running Windows NT on a Digital Alpha. Since there were few native apps, Digital included a translator to run Windows apps (Office etc.) compiled for x86 natively on Alpha, and I'm sure it was some sort of JIT. Those apps would run slowly the first time, but get noticeably faster the next 2-3 times they run. And it legitimately translated and ran the apps faster than a good Pentium Pro machine of the day. That was due to an edge that Alpha had over Intel, rather than software, but the hardware advantage didn't last long.

    8. Re:GCJ vs. JIT by real-modo · · Score: 1

      Save the syllables!

      Yeah! Those evil Japanese and Russian syllabling fleets, sweeping the oceans clean of cute baby syllables with their nets and harpoons. We've got to do something!

  17. Write up needs more links. by plopez · · Score: 2

    Please edit and re-submit.

    --
    putting the 'B' in LGBTQ+
  18. The Antiviral License by Anonymous Coward · · Score: 1

    If you don't want to have your code relicensed under different licenses, use a Copyleft license. If you want to have your code relicensed under different licenses, stop complaining when somebody actually does exactly that.

    Actually, I'm not sure they want their code relicensed. Indeed, the BSD license doesn't grant you permission to do so. Theoretically the only reason it works is because the GPL only requires that the code be released under the GPL license but it doesn't require that the original license disappear, it simply demands that the original license can only invoke certain restrictions, like the attribution requirements present in many BSD licenses.

    I solved the problem for myself by creating my own license which forbids relicensing but otherwise has no requirements whatsoever. BSD projects can use my code simply by keeping my code under my license and their code under whatever license they choose, as there's nothing about copyright law that requires all of the code in a project to be released under only one license. GPL projects, however, cannot use my code, because the GPL requires all code in a project to be GPL code, but the license of my code cannot be changed. It's really quite amusing since my license isn't specifically GPL-incompatible, but rather, it's the GPL's own viral provisions that create the incompatibility. If they ever create a non-viral GPL it'll automatically be compatible with my license, and if there are any other viral licenses I don't know about, they're automatically incompatible with my license.

  19. Thank you, Clang by Urkki · · Score: 4, Interesting

    Clang has really become a boon to open source compiler development. Unlike the open source *BSD operating systems, which are too far behind the GPL operating systems in many measures (not all), Clang has really electrified the compiler scene.

    I see nothing but good things coming from this in near future.

    And in such a rapidly evolving area as compiler development, having a *BSD license does not really hurt either. It's not like the *compiler* is likely to get put into some device with proprietary modifications.

  20. Plans aren't news. by golodh · · Score: 1
    Plans are plans, and primarily interesting to incrowd and fanbois.

    News is (mostly) about what actually happened.

    Let's not confuse the two