Rationale behind compiler update in stable channel?



I wanted to ask what the rationale is behind updating the compiler (in my case gcc8) on the stable channel (18.09 in this case).

I had two updates of the stable channel in this week where I had to download 1 GB and 500MB respectively. I did not check the former, but in the latter where minor updates… nothing too serious, besides gcc 8.2.0 -> gcc 8.3.0.

I do not see any security issues which were fixed with this particular patch (maybe I’m missing something), so I do not see a reason for this update. All I can see (and I’m only a user in this case) is that I get tons of Megabytes to download (right now over a really slow connection, that’s why I noticed in the first place) but no real benefits (in a “stability” sense).

Can someone elaborate please why we do these kind of updates in the stable channel? Maybe one of the stable channel maintainers even?

(Please: This is not “you idiots made my device download 500 MB”!!! No way! I’m just asking whether there’s a reason I do not see/understand!)

Just to note: I am downloading for over an hour right now. 550 MB.


This was done in https://github.com/NixOS/nixpkgs/pull/56223.

CC @vcunat @dtzWill

In my opinion that is perfectly valid, since it is a bug fix release. The policy of the stable channels is pretty much “do not break anything”, we don’t optimize for download size.

Maybe we should, but at least I don’t think so.


I wasn’t invovled in this but just trying to shed some light on it.

I checked the git log and it seems that the PR introducing it was https://github.com/NixOS/nixpkgs/pull/56223.

From there on I checked the GCC website which links to the changelog two search queries on their bugzilla:

Looking at the list of serious regressions that were fixed I think it is perfectly valid to do the update. In general updating the minor/patch/… version of a compiler doesn’t seem like such a big deal to me. In contrast to traditional Linux distributions we have the tools to deal with the required rebuilds easily.

The download size could be an issue and things like the intentional store RFC (and implementation) could potentially limit the amount of data that has been moved around all the time. Nothing to hold back bugfixes tho…


Do you know what is pulling in gcc? Usually this is a bug if your ordinary NixOS system has to download gcc (unless you want a runtime dependency on it).


It’s a maintenance release. While stable releases are primarily meant for security fixes, I’m convinced that maintenance/bugfix updates are generally considered OK. gcc8 isn’t the default (yet), so that plays down the importance of the decision, whether taken positively or negatively.


Okay, thanks for the clearification!