Please be more careful when changing the language behavior

mw mingwu at gmail.com
Thu Jun 4 06:47:16 UTC 2020


On Wednesday, 3 June 2020 at 08:11:12 UTC, Panke wrote:
> Would be a schema as described here [1] be possible?
>
> In a nutshell each breaking change is introduced with a switch 
> named --incompatible_<name> that activates it. The default is 
> to be turned off and this is quite similar to what we have with 
> -preview=. After some time the default becomes on and you have 
> to explicitly disable it, if you want to keep using your old 
> code.
>
> The crucial difference to what we do is: Every breaking change 
> is guaranteed to have an migration path that allows you to 
> change your code in a way that it works with both 
> --incompatible_<name>=on and --incompatible_<name>=off. So you 
> do not have to update your complete codebase on every breaking 
> change and the recommendation is to never use --incompatible in 
> your production setup.
>
>
> [1] 
> https://docs.bazel.build/versions/master/backward-compatibility.html


Yes, I think that's another option we can consider.

Let the user explicitly choose on the command-line, for each 
feature s/he want to use.


And quite interesting, this method (way of thinking) is exactly 
the key idea how Eiffel solved the multiple inheritance 
difficulty, while other language didn't: i.e. deal with each 
feature individually (in Eiffel), instead of all-or-nothing 
approach (in other languages).  (This is a bit off-topic on this 
thread, I will start a new thread about multiple inheritance in 
Eiffel).




More information about the Digitalmars-d mailing list