5 ms·
GCC 4.9 Release Series – Changes, New Features, and Fixes
- jevinskie 12y agolibstdc++ finally supports C++11's <regex>! My team will be able to ditch boost regex once GCC 4.9 hits a stable version of Ubuntu. It is also nice to see more parity with Clang when it comes to diagnostics and ASan/UBSan.
- nly 12y agoStill not a fully optimised DFA solution though (although neither is Boost.Regex afaik)
- jey 12y agoOnly six months since 4.8 was released. Is GCC moving to a more regular release schedule?
- nly 12y agoWhat's wrong with every every 6 months? It's not like bug fix releases aren't dropped in the meantime.
- mpyne 12y agoI think that was the point... every 6 months being better than every 6+dx months as seemed the case before. I don't personally notice a change though, IMHO releases have been fairly consistently released since the 4.0 timeframe.
- deleted 12y ago[deleted]
- 0x09 12y agoThat was a point release. 4.8.0 was released over a year ago.
- agwa 12y ago4.8.0 was actually released in March 2013. GCC has been on a yearly major release schedule for several years now (since at least GCC 4.5.0 in 2010). This year 4.9.0 will be about a month late.
- anotherfadjs 12y agoIt's 2014, we can now have colored output! Will error and warning messages get unique id's with explanatory/accompanying documentation in 2034?
- _pmf_ 12y agoSeems like competition from clang led to some really practical improvements.
- dfc 12y agoI use whatever compiler is defined in the makefile or called for in a README. Needless to say I do not really follow developments in either camp closely. I am curious what improvements are the result of "competition" from clang?
- nly 12y agoI might be doing GCC a disservice but I'm pretty sure the various sanitization work has come from LLVM/Clang.
- gillianseed 12y agoActually the sanitizers where added to LLVM by Google who also added them to GCC as they are actively working on both compiler toolchains.
- _stephan 12y agoGCC 4.9 hasn't yet been released (and won't be until after Easter). Currently there's only a release candidate. See http://permalink.gmane.org/gmane.comp.gcc.devel/135470 http://permalink.gmane.org/gmane.comp.gcc.devel/135470
- beatbrokedown 12y agoInteresting the main page http://gcc.gnu.org/ http://gcc.gnu.org/ lists 4.9 as the current release as opposed to Development release.
- pygy_ 12y agoIf you follow the 4.9 link, you get to http://gcc.gnu.org/gcc-4.9/ http://gcc.gnu.org/gcc-4.9/ which states: > As of this time no releases of GCC 4.9 have yet been made.
- krakensden 12y ago> Memory usage building Firefox with debug enabled was reduced from 15GB to 3.5GB; link time from 1700 seconds to 350 seconds. This is huge- you can now do this on a laptop
- supergauntlet 12y agowell, you could do it on a laptop before, you just needed a much beefier laptop. But that's really impressive, how did they cut the resource usage to a quarter of previous usage?
- alok-g 12y agoI am very curious too. Such drastic improvements often indicates something wrong before (either in design or implementation) that got fixed.
- Denvercoder9 12y agoI bet it is caused by these two optimizations: > Early removal of virtual methods reduces the size of object files and improves link-time memory usage and compile time. > Function bodies are now loaded on-demand and released early improving overall memory usage at link time.
- deleted 12y ago[deleted]
- nly 12y ago15 GB was presumably with LTO enabled, you could always build it on a fairly average laptop with it disabled. This is great news though, as LTO is pretty awesome.
- hf 12y agoFor the uninitiated: LTO stands for Link-time optimization and happens when the compiler merges/links all separately-compiled object files into one (executable or library). Although it seems obvious that this might be a good idea, why would it 1) use exorbitant amounts of memory; and 2) be "pretty awesome" instead of, say, mildly useful? edit: And both questions satisfactorily answered in the time it took me to peruse the preamble of https://en.wikipedia.org/wiki/Interprocedural_optimization https://en.wikipedia.org/wiki/Interprocedural_optimization Thank you!
- jonalmeida 12y agoI like the addition of color the compile log. It's might be easier reading compile failures now.
- dfc 12y agoI wish latex/lualatex/xelatex would colorize their logs.
- michaelhoffman 12y agoI wish LaTeX would just limit their logs to information I need to see.
- twic 12y agoThe things that caught my eye were both related to IBM hardware features. Firstly, apparently IBM chips have hardware transactional memory now: PowerPC / PowerPC64 / RS6000 GCC now supports Power ISA 2.07, which includes support for Hardware Transactional Memory (HTM) S/390, System z Support for the Transactional Execution Facility included with the IBM zEnterprise zEC12 processor has been added. That's pretty cool. Also on the 390: S/390, System z The hotpatch features allows to prepare functions for hotpatching. A certain amount of bytes is reserved before the function entry label plus a NOP is inserted at its very beginning to implement a backward jump when applying a patch. The feature can either be enabled via command line option -mhotpatch for a compilation unit or can be enabled per function using the hotpatch attribute. I guess if you're doing high availability the mainframe way, you don't get to restart your apps to patch them. That's terrifying, but again, pretty cool.
- revelation 12y agoWindows system DLLs have pointless "mov edi, edi" instructions in function prologues to enable hotpatching. It's not just mainframes ;)
- maximilianburke 12y agoYes, MSVC does this when the /hotpatch command line option is provided.
- jodrellblank 12y agoWhich I recently read about on Raymond Chen's blog. Link: http://blogs.msdn.com/b/oldnewthing/archive/2011/09/21/10214405.aspx http://blogs.msdn.com/b/oldnewthing/archive/2011/09/21/10214...
- gsnedders 12y agoOne of the large design-constraints of Erlang is being able to hotpatch, given the uptime requirements for telephone switching.
- apaprocki 12y ago
- asveikau 12y ago> A new C extension __auto_type provides a subset of the functionality of C++11 auto in GNU C. I wonder if anyone is working to standardize something like this? It would be way more useful than all those _s() functions they added to C11.
- PySlice 12y agoYes, bounds checking are unnecessary, you don't need those _s() functions - NSA director
- asveikau 12y agoThe problem isn't bounds-checking, the problem is that most of the _s() functions that deal with bounds-checking already have pre-C11 equivalents that check boundaries. I also disagree with some of the interface choices, for example when strlcpy() fails it tells you how many characters you needed, not simply "error" as in strcpy_s. Also the use case for memcpy_s() is extremely limited. It just seems like the _s() functions were rushed and stuck in there without regard for what makes sense.
- knweiss 12y agoSupport for the CPU code names in -march is a simple but really useful change: -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell, broadwell, silvermont Also this: -mtune=intel can now be used to generate code running well on the most current Intel processors, which are Haswell and Silvermont for GCC 4.9.
- shurcooL 12y agoDid anyone notice "GCC 4.9 provides a complete implementation of the Go 1.2.1 release."? Isn't that pretty big.