We've tried various schemes like this with the D compiler. The sweet spot seems to be the current design, where new and possibly buggy/breaking features are introduced with the -preview=feature compiler switch. If it proves out, and users have time to adapt, eventually it becomes the default, and a -revert=feature is there for people who need more time to adapt to it.
This has so far been working great.
As John Carmack wrote, it enables us to be a little more fearless in introducing new capabilities and putting them on trial.
For example, my recent trial implementation of disallowing more than one mutable pointer to the same variable being passed to a function:
This has so far been working great.
As John Carmack wrote, it enables us to be a little more fearless in introducing new capabilities and putting them on trial.
For example, my recent trial implementation of disallowing more than one mutable pointer to the same variable being passed to a function:
https://github.com/dlang/dmd/pull/10249
It's hard to tell in advance what effect this will have on the existing D user code base.