The v0.20 release notes got wondering about the policy for breaking bugfixes in v0.20/v1.0 (https://github.com/nim-lang/website/pull/155 ). From the release notes:
A 1.0 release means that once either Nim 0.20.0 is promoted to 1.0 status, or another release candidate is, there will no longer be any breaking changes made.
I understand that it's important that v1.0 will be stable, but it left me wondering about the several known compiler bugs that will require breaking changes to fix. For example, I have an open PR that fixes a minor bug with implicit int conversions to ranges (https://github.com/nim-lang/Nim/pull/11197). This PR breaks working code. I'm sure there are many other such minor bugs that cannot be fixed without breaking working code, both in the compiler and stdlib. Will such fixes no longer be accepted? Will they be accepted, but only for a separate v2.0 branch? Or will the manual be updated to document these bugs as intended behavior?
These fixes will either be accepted for 1.1.x or for 2.0.x but IMO they shouldn't be backported to the 0.20/1.0 branch. 1.0 should be bug-compatible with what we have.
But this topic is open for discussion.
These fixes will either be accepted for 1.1.x or for 2.0.x but IMO they shouldn't be backported to the 0.20/1.0 branch. 1.0 should be bug-compatible with what we have.
Let's be really specific here, because writing "1.0 should be bug-compatible with what we have" is ambiguous. Do you mean that 1.x.y (all versions with major number 1) should be bug-compatible with what we have? or do you mean that 1.0.x (all versions with major number 1 and minor number 0) should be bug-compatible with what we have?
Each has very different meanings. Here is what I understand from what we discussed:
These compiler bugs that require a breaking change which @GULPF refers to should be fixed now, before 1.0 is released. Otherwise 1.0 doesn't mean much, as we will have plenty of breaking changes in Nim 1.1, 1.2 etc. which IMO is just dishonest. Let's reserve the right to do this, but only for really major things, like security issues.