Provide guidance on non-enumerated changes
As inspired by https://github.com/haskell/pvp/issues/55 this PR does two things. First it changes "other changes" to "last-component changes" to disambiguate that this only covers other changes which are "extremely minor". Second, it adds a new clause for "non-enumerated changes" as an umbrella clause to handle any cases not explicitly enumerated elsewhere with the guidance that any change which would cause a package depending on the versioned package to fail to compile must be considered breaking.
This clause then can cover new features introduced by GHC as general guidance without the PVP needing to be specifically updated immediately to cover them. (Though as time goes on, we may of course add more enumerated changes from new GHC features to the explicit enumerations of breaking and non-breaking changes).
-1
- it is not obvious to me that this is the "spirit" of the spec
- it is a blanket statement that will regress future efforts: now we can point everything and everyone to this and stop discussing what is actually API. GHC might incorrectly stop compiling certain code changes. What causes code to stop compiling should not be mandated by current GHC implementation. And how are end users supposed to validate this? We want clear rules that can be applied without running the compiler. So either this new rule adds nothing (because it doesn't say what "would fail to compile" actually means) or it now defers PVP to a runtime property of invoking GHC
TLDR: how to figure out if you broke API: Compile all your reverse dependencies.
The text of the proposed change makes no mention of GHC or an implementation. The above comment does not appear to be pertinent to the text of the proposed change, but arguing against something else entirely -- what, precisely, I don't know.
The text of the proposed change makes no mention of GHC or an implementation.
Then it absolutely says nothing, because "would fail to compile" is entirely undefined and gives no value for the end user.
The intention is that the guidance is considered with regards to the specified behavior of the new features.