So, I’ve been slowly making progress with the build system – actually putting it through its paces.
I’ve learned *so* much, and revealed a number of problems; it’s been an absolute God-send. It shows once again that with software and computers nothing works until you actually *do it* and make it work.
The big thing has been GCC 7.1.0 and the changes to how it supports double-word CAS on 64-bit targets (which is to say, aarch64 and x86_64, the only targets which offer this functionality).
Those changes seem not viable for my use, and it’s led me to implement in the abstraction layer in-line assembly for double-word CAS on x86_64 and aarch64.
*Thank God I had a build for this compiler and found out about all this before I made a release and users found out about it by it not working*.
So now I get to build every build variant with every compiler version (which I can build) on every platform. I can at least see my software passes tests, runs benchmarks, etc, on my own systems. Of course, they may (well!) indeed then fail on the vast range of other systems out there – but if they failed on mine *even before that*, then they DEFINITELY wouldn’t be working on any of the systems out there!
I can’t wait to see if there are significant performance differences between GCC versions.