I find this to be the easiest way to try out new GCC versions and I actually use it exclusively for building testing my GCC 9 projects. With just a small wrapper Dockerfile, you can easy accommodate CMake or any other build dependencies.
For example, I have one I use for building CMake projects (see README of same project for example of how to use said docker image).
GCC 9 is great, by the way. One of the best improvements, IMO is that gcov can now print coverage reports to stdout in JSON format which means you can take advantage of parallel computing to generate coverage reports fast. The Dockerfile I linked to in  above is a part of a utility I made as a drop-in replacement for lcov and can generate lcov reports at times up to 100x faster thanks to GCC 9 improvements.
And everything went well until the `make` step - it just blew up with a million compiler errors. I did the same thing under OpenSUSE and it built just fine.
Usually it's just this sequence:
wget gcc... whichever
untar it and go into the directory
within that directory ./contrib/download_prerequisites
outside of that directory create a build directory, go in there and do a config. I usually do (for example in 9.1 case, but it has been the same forever now):
../gcc-9.1.0/configure --prefix=<my_home_dir>/tools/gcc-9-1-0 --enable-languages=c,c++,ada --disable-multilib --enable-checking=release --with-pkgversion='GCC Keyframe'
For Ada you have to have an Ada enabled compiler already, so omit ada
and after that it's simple make and then make install
I also have functions in my .zshrc with which I set envs so I can easily switch between gcc versions (and linkers) and that's it.
After transcribing the ~300 lines I tried to compile for the first time: 3728 errors and warnings...
I read through the code and everything looked correct, so I gave up.
Picked it up again some weeks later. Turned out that I had, by force of habit, erroneously added a semicolon at the end of macro definition on line 3. Fixing that it compiled flawlessly.
At the time I was also unaware that I was actually using a C++ compiler, djgpp, which I'm sure did the error count no favors.
Awesome stuff, happy to see healthy competition between GCC and Clang these days
> The alignof operator has been changed to return the minimum alignment required by the target ABI, instead of the preferred alignment (consistent with _Alignof in C)
> Code which uses alignof to obtain the preferred alignment can use __alignof__ instead
So, there's an alignof and an __alignof__ function, which do similar but subtly different things? That sounds like a recipe for disaster.
After all, what does __ signal if not "suble difference"?
Even alignof has __alignof and __alignof__ as two spellings of the GNU variant. But unlike with typeof, for whatever reason, plain "alignof" was never supported in C as a GNU extension; it only ever worked in C++ mode, as a standard feature from C++11. That makes it slightly less weird to create a difference. But only slightly; I'm more familiar with GCC esoterica than most people and I had no idea "alignof" was C++-exclusive until I looked it up.
Well done Iain Buclaw (and co.)
The competition between the compilers has been great for compiler users.
> Emacs spent a few decades to get from
> 19 to 21, and now all of a sudden we're
> at 26.
The first Emacs 19.* came out in 1993, last 21.* in 2001. So 3 major releases in 8 years, roughly one every 2.5 years.
The first Emacs 22.* came out in 2007, and 26.* in 2018, so 5 major releases in 11 years, roughly one every 2.2 years.
Whereas 21.* to 22.* took from 2001 to 2007, or around 6 years. Here's an LWN article from 2007 covering why it took so long: https://lwn.net/Articles/234593/
Not everything gets worse as you get older, except perhaps confirmation bias :)
The 19.7 release came out on May 22, 1993, and 21.1 came out on October 20, 2001. That's 8 years, 4 months and 28 days, not decades.
Similarly for 22.1 to 26.1, which is a period of 10 years, 11 months and 26 days, I took the liberty of rounding that up to 11 years.
Perhaps you're under the mistaken impression that Emacs follows some sort of sane version numbering scheme, and that before 19.7 there was such a thing as a 19.6 release, or indeed any other 19.* version, or that before 22.1 there was a 22.0.
Neither was the case. 19.7 and 22.1 were the first releases of their respective major versions.
> So things since 22 are about about 50% faster
> by my reckoning.
You were claiming that Emacs had adopted some modern fashion of more frequent releases.
That's simply not the case. They had a really difficult 22.1 release, but otherwise it's been pretty consistent since 1993, way before this supposed fashion took off.
I have to zoom and scroll back and forth to read them..
Any other approach but this would have worked fine.
Even in landscape?
Do you have a problem with text in landscape for this particular URL, or you find that you frequently do? Are you on an iPhone? If no, yes, and yes, this may shed some light: https://stackoverflow.com/questions/2710764/preserve-html-fo...
It's community maintained.